프로젝트 소개
Defuddle는 웹 페이지에서 주요 콘텐츠를 추출하고 댓글, 사이드바, 헤더, 푸터 같은 잡음을 정리하는 JavaScript 라이브러리입니다. 정리된 HTML 또는 Markdown을 반환하므로 웹 클리핑, 리딩 모드, 콘텐츠 분석에 유용합니다.
## 주요 기능
- 콘텐츠 추출: 페이지의 주요 콘텐츠를 자동으로 감지하고 추출하며, 필수 아닌 요소를 제거합니다.
- HTML 표준화: 일관된 출력을 위해 제목, 코드 블록, 각주, 수학, 콜아웃을 정규화합니다.
- 메타데이터 추출: 제목, 저자, 설명, 게시 날짜 및 schema.org 데이터를 가져옵니다.
- 여러 번들: Core(브라우저용), Full(수학/Markdown 변환 추가), Node.js(DOM 구현체와 함께 작동)
- CLI 도구: 터미널에서 URL, 파일 또는 stdin을 직접 처리합니다.
- 디버그 모드: 추출 문제 진단을 위한 자세한 로그 및 제거 추적 기능을 제공합니다.
- 구성 가능한 파이프라인: 숨은 요소 제거, 이미지 제거 등 개별 처리 단계를 전환할 수 있습니다.
## 사용 예시
브라우저
import Defuddle from 'defuddle';
const defuddle = new Defuddle(document);
const result = defuddle.parse();
console.log(result.content); // 정리된 HTML
Node.js(linkedom 또는 JSDOM 사용)
import { parseHTML } from 'linkedom';
import { Defuddle } from 'defuddle/node';
const { document } = parseHTML(html);
const result = await Defuddle(document, 'https://example.com/article', { markdown: true });
CLI
npx defuddle parse page.html --markdown
npx defuddle parse https://example.com/article --json
cat page.html | npx defuddle parse --output result.html
## 응답 객체
`title`, `author`, `content`, `description`, `domain`, `favicon`, `image`, `language`, `published`, `site`, `wordCount` 등의 속성을 가진 객체를 반환합니다.
## 옵션
주요 옵션은 `markdown`(Markdown으로 변환), `debug`(로그 활성화), `removeHiddenElements`, `removeSmallImages`, `contentSelector`(자동 감지 우회), `useAsync`(SPAs에서 서드파티 대체 처리 허용)입니다.
## 개발
`npm install && npm run build`로 빌드합니다. 이 프로젝트는 콘텐츠 점수 매기기, 요소 제거 및 표준화를 위한 단계별 파이프라인을 사용합니다.
## 서드파티 서비스
`useAsync`를 활성화하고 로컬 콘텐츠를 찾을 수 없는 경우(예: 클라이언트 측으로 렌더링된 SPAs), Defuddle이 FxTwitter와 같은 서드파티 API를 통해 X/Twitter 콘텐츠를 가져올 수 있습니다. `useAsync: false`로 비활성화합니다.
## 디버깅
`debug: true`를 활성화하면 `debug` 필드를 얻을 수 있으며, 여기에는 `contentSelector`(주요 콘텐츠의 CSS 경로)와 `removals`(이유가 포함된 제거된 요소 목록)가 포함됩니다. 이를 통해 콘텐츠가 잘못 제거되거나 유지되는 이유를 진단할 수 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.