このプロジェクトについて

Defuddleは、コメント、サイドバー、ヘッダー、フッターなどの不要な要素を除去し、Webページからメインコンテンツを抽出するJavaScriptライブラリです。クリーンなHTMLまたはMarkdownを出力するため、ウェブクリッピング、リーダーモードの実装、コンテンツ分析などに適しています。 ## 主な特徴 - **コンテンツ抽出**: ページの主要なコンテンツを自動的に検出し、非本質的な要素を除去します。 - **HTMLの標準化**: 見出し、コードブロック、脚注、数式、注釈などを正規化し、一貫した出力を実現します。 - **メタデータ抽出**: タイトル、著者、説明文、公開日、schema.orgデータなどを取得します。 - **複数のバンドル**: コア(ブラウザ用)、フル(数式/Markdown変換追加)、Node.js(任意のDOM実装対応)を提供します。 - **CLIツール**: ターミナルからURL、ファイル、stdinを直接解析できます。 - **デバッグモード**: 抽出問題の診断のために、詳細なログと除去追跡機能を備えています。 - **構成可能なパイプライン**: 隠れ要素の除去や画像の除去など、個々の処理ステップを切り替えることができます。 ## 使用例 ### ブラウザ ```javascript import Defuddle from 'defuddle'; const defuddle = new Defuddle(document); const result = defuddle.parse(); console.log(result.content); // クリーンなHTML ``` ### Node.js (linkedomまたはJSDOM使用時) ```javascript 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 ```bash 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`(SPA用のサードパーティフォールバック許可)があります。 ## 開発 `npm install && npm run build`でビルドします。プロジェクトは、コンテンツスコアリング、要素除去、標準化のためのステップパイプラインを使用しています。 ## サードパーティサービス `useAsync`が有効でローカルコンテンツが見つからない場合(例:クライアントサイドレンダリングされたSPA)、DefuddleはFxTwitterなどのサードパーティAPIを使用してX/Twitterコンテンツを取得することがあります。`useAsync: false`で無効化できます。 ## デバッグ `debug: true`を有効にすると、`debug`フィールドに`contentSelector`(メインコンテンツのCSSパス)と`removals`(理由付きで除去された要素のリスト)が含まれます。これにより、コンテンツが誤って除去または保持される理由を診断するのに役立ちます。