웹에서 정보를 모을 때 가장 성가신 건 정보가 부족해서가 아니라, 오히려 너무 많은 주변 요소가 붙어 있다는 점입니다.
정작 필요한 건 본문인데, 실제 페이지에는 댓글, 사이드바, 추천 기사, 광고, 헤더, 푸터 같은 요소가 끝없이 따라붙습니다.
사람이 읽을 때도 번잡하지만, 이걸 다시 LLM에 넣거나 Obsidian에 저장하거나 Markdown으로 정리하려고 하면 더 피곤해집니다.
이럴 때 필요한 건 단순한 크롤러가 아니라, 핵심 콘텐츠만 읽기 좋은 형태로 정제해주는 도구입니다.
GeekNews에서 본 defuddle은 바로 그 문제를 푸는 오픈소스입니다.
겉으로 보면 “웹페이지를 Markdown으로 바꿔주는 도구”처럼 보이지만, 실제로는 웹 문서에서 본문을 추려내고 후처리 가능한 구조로 바꿔주는 콘텐츠 파서에 더 가깝습니다.
defuddle은 무엇인가요?
defuddle은 웹페이지에서 불필요한 주변 요소를 제거하고 핵심 본문만 추출해 HTML 또는 Markdown으로 변환하는 도구입니다.
핵심 기능은 꽤 분명합니다.
- 댓글, 사이드바, 헤더, 푸터 제거
- 본문 중심 콘텐츠 추출
- HTML / Markdown 출력 지원
- 각주, 수식, 코드 블록 같은 구조화 요소 처리
- schema.org 기반 메타데이터 추출
- CLI를 통한 URL/HTML 직접 파싱 지원
즉, 이 도구는 단순히 “페이지 내용을 긁는다”기보다
읽기용·저장용·후처리용으로 적합한 형태로 정제한다는 데 의미가 있습니다.
왜 이런 도구가 중요한가요?
요즘은 웹페이지를 사람만 읽지 않습니다.
우리는 웹 콘텐츠를 다음 같은 용도로 다시 사용합니다.
- Obsidian 같은 노트 앱에 저장
- LLM 입력용 컨텍스트로 정리
- RAG 파이프라인에 넣기
- 기사나 문서를 아카이빙하기
- Markdown 기반 지식베이스로 관리하기
이 과정에서 가장 귀찮은 건 본문 외 잡음입니다.
예를 들어 기사 하나를 가져왔는데 실제로는 이런 게 따라옵니다.
- 관련 기사 목록
- 공유 버튼
- 댓글 영역
- 추천 콘텐츠
- 사이트 공통 내비게이션
- 광고 박스
- 저작권 문구
결국 중요한 건 얼마나 많이 긁느냐가 아니라,
얼마나 덜 지저분하게 가져오느냐입니다.
defuddle은 바로 이 지점을 겨냥합니다.
Readability 대안이라는 점이 흥미롭습니다
프로젝트 소개를 보면 defuddle은 Mozilla Readability의 대안으로 설계된 도구입니다.
이 포인트는 꽤 중요합니다.
Readability는 오랫동안 “웹페이지에서 본문만 추출하는 도구”의 대표격이었습니다.
하지만 실제로 써보면 사이트마다 결과 편차가 있고, 필요한 메타데이터나 구조가 항상 만족스럽게 나오지는 않습니다.
defuddle은 여기서 조금 다른 방향을 택합니다.
- 더 유연한 처리
- 불확실할 때 과도하게 잘라내지 않음
- 더 일관된 HTML/Markdown 출력
- 후처리에 유리한 구조화 결과 제공
정리하면 이런 느낌입니다.
| 항목 | 전통적인 본문 추출기 | defuddle |
|---|---|---|
| 목표 | 읽기용 본문 추출 | 읽기 + 저장 + 후처리 친화적 추출 |
| 출력 | 주로 정제된 본문 HTML | HTML + Markdown |
| 메타데이터 | 제한적일 수 있음 | schema.org 포함 더 풍부한 추출 |
| 활용성 | 브라우저 읽기 보기 느낌 | 노트, LLM, 파이프라인 활용에 적합 |
즉, defuddle은 단순한 읽기 모드보다는
콘텐츠 재활용용 파서에 더 가까운 인상을 줍니다.
어떤 식으로 동작한다고 볼 수 있을까
구현 세부를 전부 보지 않아도, 개념적으로는 이런 흐름으로 이해할 수 있습니다.
flowchart LR
A[웹페이지 URL 또는 HTML] --> B[본문 후보 분석]
B --> C[불필요 요소 제거]
C --> D[핵심 콘텐츠 정제]
D --> E[메타데이터 추출]
E --> F[HTML 또는 Markdown 출력]
이 구조에서 중요한 건 두 가지입니다.
첫째, 무조건 많이 남기는 게 아니라 덜어내는 판단이 들어간다는 점입니다.
둘째, 결과가 단순 텍스트가 아니라 후처리 가능한 구조를 유지한다는 점입니다.
특히 각주, 수식, 코드 블록 같은 요소를 신경 쓴다는 설명은 반갑습니다.
개발 문서나 기술 글을 다룰 때 이런 요소들이 깨지면 결과물의 가치가 바로 떨어지기 때문입니다.
모바일 스타일 분석까지 보는 접근이 실용적입니다
설명 중 인상적인 부분은 모바일 스타일 분석을 통해 불필요 요소를 감지한다는 점입니다.
이게 왜 중요하냐면, 요즘 웹페이지는 단순히 HTML 트리만 훑는 방식으로는 잘 안 풀리는 경우가 많기 때문입니다.
사이트에 따라 반응형 구조가 다르고, 데스크톱과 모바일에서 DOM의 중요도가 다르게 보이기도 합니다.
즉, 단순 파싱을 넘어서
실제 읽기 문서처럼 보이는 구조를 찾으려는 시도라고 볼 수 있습니다.
이런 접근은 본문 추출 품질을 높이는 데 꽤 현실적인 방향입니다.
유튜브 화자 분리 추출도 눈에 띕니다
소개에 따르면 0.12.0부터는 유튜브 영상 대화를 화자별로 분리해 추출할 수 있습니다.
이건 생각보다 쓸모가 큽니다.
보통 영상 내용을 텍스트로 뽑으면 자막 한 덩어리처럼 보이기 쉽습니다.
하지만 화자 단위로 나뉘면 다음 같은 작업이 쉬워집니다.
- 인터뷰 정리
- 회의/대담 요약
- 영상 내용을 노트화
- 대화 흐름 분석
- LLM 요약 품질 개선
특히 AI 워크플로우에서는 “누가 말했는가” 정보가 중요할 때가 많아서, 이 기능은 꽤 반가운 포인트입니다.
CLI 지원이 주는 장점
defuddle이 CLI를 제공한다는 점도 좋습니다.
CLI가 있으면 이런 활용이 쉬워집니다.
- 터미널에서 URL 바로 파싱
- 배치 처리
- 스크립트 연결
- 자동화 파이프라인 구성
- 에이전트 툴체인과 연결
개념적으로는 이런 흐름을 떠올릴 수 있습니다.
defuddle https://example.com/article --format markdown
혹은 HTML 파일을 직접 넣어 정제할 수도 있을 겁니다.
defuddle ./article.html --format markdown
이런 인터페이스는 개발자 입장에서 꽤 중요합니다.
브라우저 확장만 되는 도구보다, 자동화 가능한 도구가 훨씬 오래 살아남기 때문입니다.
어디에 특히 잘 맞을까
제가 보기엔 defuddle은 아래 같은 용도에 특히 잘 맞습니다.
1. Obsidian / 개인 지식 관리
원래 Obsidian Web Clipper용으로 개발됐다는 점에서, 저장용 Markdown 추출과 궁합이 좋습니다.
2. LLM 입력 전처리
웹페이지를 그대로 넣는 대신 핵심 본문만 정리해 넣으면, 토큰 낭비를 줄이고 품질도 높일 수 있습니다.
3. RAG / 문서 파이프라인
HTML 원문보다 정제된 Markdown이 chunking이나 후처리에 유리한 경우가 많습니다.
4. 읽기 아카이브
나중에 다시 읽거나 공유하려는 기사나 문서를 깔끔하게 보관하는 데 적합합니다.
이런 도구가 앞으로 더 중요해질 것 같습니다
AI 시대가 되면서 웹 콘텐츠를 “사람이 읽는 용도”로만 다루는 시대는 이미 지나가고 있습니다.
이제는 사람도 읽고, AI도 읽고, 검색 인덱서도 읽고, 노트 앱도 읽습니다.
그래서 점점 더 중요해지는 건 원문 수집 자체보다,
얼마나 깨끗한 중간 형식으로 바꿔두느냐입니다.
defuddle은 바로 이 레이어를 담당하는 도구라고 볼 수 있습니다.
겉으로는 화려한 서비스가 아니지만, 실제 워크플로우에서는 이런 종류의 도구가 전체 품질을 꽤 많이 좌우합니다.
마무리
defuddle은 단순한 웹페이지 Markdown 변환기처럼 보일 수 있습니다.
하지만 조금 더 들여다보면, 이 도구는 웹 콘텐츠를 다시 사용할 수 있는 형태로 정제하는 인프라에 가깝습니다.
Readability 대안으로서의 방향성도 좋고, Markdown 출력, 메타데이터 추출, 유튜브 화자 분리, CLI 지원 같은 구성도 꽤 현실적입니다.
특히 Obsidian, LLM, RAG, 아카이빙 같은 흐름을 자주 다루는 사람이라면 이런 도구의 가치가 꽤 크게 느껴질 겁니다.
정리하면 defuddle은 “엄청 화려한 신기능”이라기보다,
지저분한 웹을 다시 쓸 만한 문서로 바꿔주는 실용적인 기반 도구에 가깝습니다.
그리고 요즘 같은 시대에는 이런 종류의 도구가 생각보다 훨씬 중요합니다.
참고 자료
- GeekNews 소개: https://news.hada.io/topic?id=27540 ↗
- GitHub: https://github.com/kepano/defuddle ↗
- Show HN: https://news.ycombinator.com/item?id=44067409 ↗