Folivora: 열어둔 탭 중 실제로 읽지 않을 내용을 예측하고 핵심만 요약해주는 오픈 모델 독서 공간
요약
Folivora는 사용자가 미루고 있는 여러 브라우저 탭의 내용을 분석하여 핵심만 요약해주는 오픈 모델 독서 공간입니다. 음성 명령을 통해 원하는 주제를 지정하면, 클라우드 브라우저가 라이브 페이지를 탐색하고 필요한 섹션 기반 요약본을 제공합니다. 이는 정보 과부하 문제를 해결하는 혁신적인 AI 생산성 도구입니다.
핵심 포인트
- Folivora는 미루고 있는 독서 시간을 줄여주는 독서 공간입니다.
- 음성 명령(ElevenLabs Scribe)으로 원하는 정보를 검색할 수 있습니다.
- Browserbase와 CDP를 활용해 라이브 페이지의 내용을 탐색합니다.
- 단순 요약이 아닌, 섹션 기반의 인쇄 가능한 요약본을 제공합니다.
[Hacktoberfest 오픈소스 AI 챌린지 주차 3: 느긋하고 꾸준하게]에 대한 제출물입니다.
지금 브라우저 상단을 보세요.
만약 당신의 것이 제 것과 비슷하다면, 지난주부터 열어둔 여러 개의 탭들이 줄지어 놓여 있을 겁니다—아마도 8개일 수도 있고, 40개일 수도 있습니다. 이 탭들을 계속 열어두는 이유는 처음부터 끝까지 4,000단어짜리 기사를 다 읽을 것이기 때문이 아닙니다. 당신은 그중 하나에는 여행 가이드의 여섯 번째 단락에 비행 시간이 숨겨져 있고, 다른 하나에는 마무리하려 했던 노트북 비교 글이 있으며, 또 다른 하나에는 실제로 필요했던 단일 단락이 있기 때문에 열어두는 것입니다—그리고 이들을 닫는 것은 무언가를 버리는 것처럼 느껴집니다.
그리고 이것이 문제가 되기 위해 40개의 탭이 필요하지 않습니다. 읽지 않은 기사 10개만으로도 이미 미루고 있는 독서 시간 2시간에 해당하며, "나중에"라는 시기는 오지 않습니다. 오후 시간을 들여 읽을 필요 없이 이 문제를 해결할 두 가지 방법이 있습니다:
- 당신이 실제로 사용할 페이지와 절대 놓치지 않을 페이지를 아는 모델, 그리고 탭은 정말 안전한 경우에만 설정되도록 보정된 상한선(calibrated upper bound)이 있어야 합니다.
- 필요한 핵심 내용들만 담긴 하나의 차분한 페이지, 거기에 15초 분량의 구두 요약까지 제공되어, 전체 브라우저 창을 닫고 커피를 마시러 갈 수 있게 해주는 것입니다.
그래서 저는 Folivora 를 만들었습니다. (나무늘보의 생물학적 아과와 라틴어 folium + vorare에서 유래했으며—문자 그대로 *“페이지/장(folio)을 먹는 자”*를 의미합니다.)
제가 만든 것
Folivora는 당신이 계속 읽으려고 미루고 있는 탭들을 가져와, 요청할 때 클라우드 브라우저 내의 라이브 페이지들을 검사하고, 당신이 결코 도달하지 못할 페이지들을 예측한 다음, 나머지 내용에 대한 **인쇄 가능한 섹션 기반 독서 요약본(printable, section-anchored reading digest)**을 제공합니다.
-
필요한 것을 말하세요. 타이핑하지 마세요. 마이크를 한 번 누르고 찾고 있는 내용을 말하면 됩니다—예: "일본 여행 일정", "공부하기 가장 조용한 노트북", 또는 "웹 개발" 등 관심 분야에 맞춰 말씀하시면 되고, 다시 눌러서 멈춥니다. **ElevenLabs Scribe (
scribe_v1)**는 음성 메모를 필터 규칙으로 변환하고 즉시DELETE /v1/speech-to-text/transcripts/{id}를 호출하여 텍스트가 반환되는 즉시 ElevenLabs에서 해당 음성 기록을 삭제합니다. -
클라우드 브라우저가 라이브 탭을 열어줍니다. 사용자가 하나씩 클릭할 필요 없이,
src/browserbase_service.py는 Browserbase에서 클라우드 Chromium 세션을 구동하고 Chrome DevTools Protocol (CDP)을 통해 최대 16개의 링크를 탐색하며, 각 페이지가 실제로 어떤 내용을 포함하는지 읽어옵니다—읽기 시간, 코드 블록, 표, 제목 및 섹션 구조 등을 분석합니다. 더 많은 양의 데이터는 라이브 브라우저 예산(live-browser budget)을 초과한 후 동일한 추출기를 제한된 HTTP를 통해 사용하며; 모든 CDP 실패는 실행 전체가 실패하는 대신 링크별로 대체됩니다. -
개방형 모델은 단일 추측이 아닌 확률 범위(
P10,P50,P90)를 예측합니다. 3,600개의 탭 생애 주기 기록(data/developer_tabs_telemetry.csv)을 기반으로 Prior Labs TabPFN이 모든 탭에 점수를 매깁니다. 탭은 심지어 낙관적인 **90번째 백분위수 상한선(P90)**마저 임계값보다 낮게 떨어질 때만 제외되므로, 오탐 폐쇄율(False-Close Rate)을 23배 감소시켜 **0.36%**까지 줄입니다. -
Gemma가 두 줄의 요약문을 작성하고; 일반 코드는 모든 숫자를 확인합니다. 오픈 웨이트 모델인 **Google Gemma 4 (
gemma-4-26b-a4b-it) 및 Gemma 3 (gemma-3-12b-it/27b-it/4b)**는 제외된 내용과 유지된 내용을 요약하는 두 문장의 구두 설명을 작성합니다.check_output()함수는 Gemma의 문장에 있는 모든 숫자가 Python의 사실 사전(facts dictionary)에 문자 그대로 존재하는지 확인합니다. -
저장할 내용을 인쇄하거나, 북마크로 내보내거나, 15초 동안 청취할 수 있습니다. **Listen (15s)**를 누르면 ElevenLabs Flash v2.5 (Charlie voice)가 두 줄을 소리 내어 읽어주고, Save Notes (
.md) 또는 Bookmarks를 눌러 저장한 내용을 내보내거나, Print를 눌러 보관한 카드만 인쇄하고 떠날 수 있습니다. -
엔지니어뿐만 아니라 모두를 위해 제작되었습니다. 인터페이스는 따뜻한 편집 팔레트(
Newsreader+Plus Jakarta Sans)의 차분한 독서실과 같으며, 화면에 ML 전문 용어가 없습니다. 내장된 주제 칩은 일상생활을 다룹니다: 여행(Travel), 건강 및 수면(Health & Sleep), 음식 및 레시피(Food & Recipes), 쇼핑(Shopping) — 개발자를 위한 웹 개발(Web Dev)과 AI/기술(AI & Tech) 옆에 위치합니다. 10일간의 일본 여행 계획, 노트북 비교, 또는 식사 준비는 65개의 엔지니어링 기사를 분류하는 것과 정확히 같은 방식으로 작동하며, 모든 벤치마크, 평가 및 추적 기록은 저장소에서 검사 가능하게 유지됩니다.
데모(Demo)
- 실시간 웹 애플리케이션: https://folivora.tech (가입 불필요; 사용자의 링크로 테스트하거나, "*14 일상 및 여행 탭*" 창 또는 65개 개발 기사 라이브러리를 실행하거나, "실시간 클라우드 브라우저 사용"을 활성화하여 실제 Browserbase Chromium 세션이 URL을 검사하는 것을 볼 수 있습니다.)
- 원클릭 브라우저 확장 프로그램 (
.zip): https://folivora.tech/download-extension.zip (기본 설정은https://folivora.tech입니다—한 번의 클릭으로 열린 창을 스캔하고, 선택적 주제와 함께 전체 리딩 다이제스트를 미리 채워주며, 탭을 절대 닫거나 수정하지 않습니다.) - 대화형 OpenAPI 문서: https://folivora.tech/docs
- 평가 보고서 (59 / 60 통과):
eval/EVAL.md· 수동 감사(Hand Audit):eval/REVIEW.md
[
| 01 · 독서 데스크 (차분한 흡수) | 02 · 샘플 창 및 65개 DEV 기사 라이브러리 |
|---|---|
![]() | ![]() |
| 링크를 붙여넣거나, 북마크를 가져오거나, 주제 칩(여행, 건강 및 수면, 음식 및 레시피, 쇼핑, 웹 개발, AI 및 기술)을 선택합니다. | 원클릭 샘플 창: 일상 및 여행 탭 14개, 65개의 DEV 기사 라이브러리(600분 이상 분량), 연구 탭 10개. |
| 03 · 모든 열린 탭 요약 (필터 없음) | 04 · 주제 집중 및 분류(Triage) |
|---|---|
![]() | ![]() |
| 모드 A (평가되지 않음): 모든 열린 탭을 25초 개요와 섹션별 핵심 요약으로 요약합니다. | 모드 B (주제 집중): 일치하는 페이지를 시간을 들일 가치가 있음(Worth Your Time) 아래에 순위화하고, 관련 없는 페이지는 **별도로 보관(Set Aside)**으로 이동시킵니다. |
코드
- GitHub Repository: https://github.com/OmarAfifi-CSE/folivora
MIT 라이선스 적용. 92개의 자동화된 단위(unit), 통합(integration), 그리고 레드팀 테스트로 커버됩니다 (python run_local.py --test). 본 게시물에 있는 모든 벤치마크 테이블, DEV 명예의 전당 카탈로그(data/dev_hall_of_fame_catalog.json), 및 평가 숫자는 benchmarks/ablate.py, benchmarks/build_hall_of_fame_catalog.py, eval/run_eval.py, eval/summary_quality.py, 그리고 eval/redteam_eval.py을 통해 재현 가능합니다.
실사용 스트레스 테스트: 65개 기사 DEV 명예의 전당 색인화(600분 이상 분량)
이번 주에는 @georgekobaidze가 **Promise Delivered: Welcome to the DEV Hall of Fame (65 Authors, 65 Masterpieces)**를 게시했습니다. 이 글은 커뮤니티가 선정한 7개의 테마별 섹션(The Welcome Desk, Stories From the Trenches, The "Finally, It Clicked" Gallery, The Engine Room, The AI Lab, The Philosophy Floor, 그리고 The Builder's Garage)에 걸쳐 총 65개의 기사를 엄선하여 소개하는 내용입니다. 제 자신의 글 My Phone Broke, and Gemini Fixed It 역시 The Engine Room에 포함되어 있습니다.
65개 탭 전체의 예상 독서 시간은? 600분 이상(10시간 이상).
한 번에 65개의 탭을 열어두는 것은 궁극적인 브라우저 탭 악몽입니다. 그래서 저는 Folivora 내부에 65 DEV Article Library를 직접 구축했으며(benchmarks/build_hall_of_fame_catalog.py) TabPFN을 실제 DOM(Document Object Model)의 기능 프로필(word_count, code_block_count, table_count, heading_count, link_density, 및 intent_match_score)에 맞춰 보정했습니다.
| 05 · "웹 개발"로 필터링된 65 DEV Article Library | 06 · 모바일 반응형 요약 보기 |
|---|---|
![]() | ![]() |
| 65개의 커뮤니티 기사를 단일 결정론적 패스로 분할(반복 루프에 LLM 사용 없음): 22개의 웹 개발 관련 기사를 유지하고 43개의 무관한 탭을 분리했습니다 (478.9분 절약). | 수평 오버플로우가 없고 터치 타겟이 44px 이상인 모바일 화면까지 반응형으로 구현되었습니다. |
더 나아가, 특정 주제로 필터링할 경우, 일치하는 각 카드에는 두 개의 상호작용 가능한 Segmented Tabs가 제공됩니다 (절대 지저분하게 쌓인 텍스트 벽이 아닙니다):
- <특정 주제에 초점 맞추기> (활성 탭): 사용자의 정확한 질의(query)에 이 글이 왜 중요한지 종합하고, 해당 주제를 논하는 섹션에서만 구역 기반 요약(
제목 — 핵심 통찰)을 추출합니다. - <전체 요약> (두 번째 탭): 기사의 모든 섹션을 아우르는 완전하고 객관적인 요약을 제공합니다.
Folivora에서 65개의 DEV Hall of Fame 탭을 모두 불러와 다양한 엔지니어링 주제로 필터링했을 때의 결과는 다음과 같습니다:
| 65개 DEV 아티클 전체에 대한 검색어 | 유지된 일치 탭 수 | 제외된 관련 없는 탭 수 | 절약된 전체 기사 읽기 시간 | 최고 순위 명예의 전당 걸작 (P50 일치도) |
|---|---|---|---|---|
| "Flutter" | 2 / 65 | 63 | 697.9분 (~11.6시간) | Creating Adaptive Flutter Screens and Widgets by @dylanscottmickelson (94.2%) |
| ... |
구축 과정 (How I Built It)

음성 메모 (선택 사항) ──▶ ElevenLabs Scribe STT → 텍스트 필터 (원격 녹취록 즉시 삭제)
탭 URL/묶음 ──▶ Browserbase Cloud Chromium (CDP) → 단어 수, 코드 블록, 표, 스니펫
7개 DOM 기능 + 의도 파악 ──▶ Prior Labs TabPFN (CPU) → P10, P50, P90 유틸리티 분위수
...```
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기




