AeternaLabsHQ/pullmd
Self-hosted URL- and file-to-Markdown service for humans and AI agents - web pages, documents, images, audio, YouTube. PWA + REST + MCP + Claude Code skill, Reddit-aware, refreshable share links.
PullMD – セルフホスト型 URL から Markdown への変換サービス
機能概要
PullMD は、公開 URL(またはアップロードされたファイル)をクリーンな Markdown に変換するセルフホスト型 Web サービスです。以下のソースに対応しています:
- 通常の Web ページ(Cloudflare Markdown、Mozilla Readability、Trafilatura、またはヘッドレス Chromium のフォールバックを使用)
- コメントツリー全体を含む Reddit および Hacker News のスレッド
- PDF、Word、PowerPoint、Excel、EPUB などのドキュメント
- 画像と音声(OpenAI 互換のビジョンまたは音声モデルによるキャプション/文字起こし)
- YouTube 動画(タイトル、説明、文字起こし) 結果は、メタデータ(ソース URL、取得日、著者など)を含む YAML フロントマター付きの Markdown として返されます。32 文字の短い共有 ID を使用して、1 時間ごとに自動更新されるキャッシュバージョンを取得できます。
対象ユーザー
- トークン効率の高いプレーンテキスト表現を必要とする AI エージェント
- オンプレミスでコンテンツを取得・正規化する RAG パイプラインを構築する 開発者
- 広告や定型文を排除したパーソナルな「後で読む」サービスを求める パワーユーザー
- 公開の要約サービスに代わるプライベートで制御可能な代替手段を必要とする チーム
始め方
- Docker Compose をインストールします。
- README に記載されているワンライナーを実行します:
mkdir pullmd && cd pullmd curl -O https://raw.githubusercontent.com/AeternaLabsHQ/pullmd/main/docker-compose.yml docker compose up -d - ブラウザで
http://localhost:3000を開きます。.envファイルは不要で、デフォルトでポート 3000 でリッスンします。 - (任意)認証、OCR キー、プロキシ設定などをカスタマイズするために
.envを追加します。
主要な技術詳細
- アーキテクチャ – メインの PullMD コンテナは、3 つのオプションのサイドカーサービスを調整します:
trafilatura– 静的 HTML から記事本文を抽出します。playwright– JavaScript を多用するページ用のヘッドレス Chromium/Firefox/WebKit レンダラー。markitdown– アップロードされたドキュメント、画像、音声、YouTube 動画を Markdown に変換します。 これらのサイドカーはデフォルトで起動しますが、通常の Web ページ抽出のみが必要な場合は省略できます。
- 出力形式(v3) – デフォルトでは、Markdown 本文にはタイトルとコンテンツのみが含まれます。その他すべての情報(URL、取得日、Reddit 統計、OCR/モデル使用量など)は YAML フロントマターに格納され、下流の LLM 呼び出しのトークン数を削減します。レガシーのインラインヘッダーは
PULLMD_SOURCE_HEADER=trueで再度有効にできます。 - セキュリティ – 組み込みの SSRF 保護がプライベートネットワーク宛先をブロックします。レート制限、認証モード(
disabled、single-admin、multi-user)、およびオプションのサインアップ制御は環境変数で設定可能です。 - 拡張性 – ユーザーはカスタムの サイトレシピ(JSON-LD からフロントマターへ、カスタムセレクター)を追加し、
PULLMD_FRONTMATTER_FIELDSで出力されるフロントマターフィールドを制御できます。 - パフォーマンス – キャッシュは SQLite ファイル(
/data/cache.db)に結果を保存します。キャッシュ保持期間、サイズ制限、および抽出が短すぎる場合を検出する「カバレッジガード」はすべて調整可能です。
代替手段を検討すべき場合
- 簡単な一回限りの変換のみが必要な場合は、Mercury やブラウザ拡張機能などのパブリックサービスが高速な場合があります。
- 大規模で高スループットのクローリングには、専用のスクレイピングフレームワーク(例:Scrapy)を別の Markdown レンダラーと組み合わせて使用する方が適している場合があります。
- 生の Markdown ではなく深い意味的要約が必要な場合は、PullMD の出力の上に LLM が必要になります。
上記の情報はすべてリポジトリの README から直接取得したものであり、外部の前提は追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト