m92vyas/llm-reader
Turn Webpage to LLM friendly input text. Similar to Firecrawl and Jina Reader API. Makes RAG, AI web scraping, image & webpage links extraction easy.
llm‑reader – 任意のウェブページをLLM対応テキストに変換
機能
- URL(または任意のHTML文字列)を取得し、ウェブページのノイズ部分を除去して、大規模言語モデルのプロンプトに適したクリーンなMarkdownスタイルのテキストを生成します。
- テーブル、リンク、画像、その他の構造化要素を処理し、LLMが最小限のトークン消費で抽出できるようにします。
- Playwright をベースに、高速で並行処理のヘッドレスブラウジングを実現(旧Selenium実装を置き換え)。
重要な理由
生のHTMLをモデルに渡すと、タグ、スクリプト、レイアウトのノイズにトークンを浪費し、実際に必要なデータ(製品名、価格、テーブルなど)を見逃すことがよくあります。llm‑reader は前処理ステップを自動化し、プロンプトと後続の抽出ロジックに集中できるようにします。
主要コンポーネント
get_page_source(url): Playwrightブラウザを起動し、ページを読み込んで生のHTMLを返す非同期ヘルパー。お好みで他のスクレイパーや有料APIに置き換えることもできます。get_processed_text(html, url): HTMLをLLM消費に最適化されたクリーンなMarkdown風表現に変換する非同期関数。
インストール
pip install git+https://github.com/m92vyas/llm-reader.git
# Playwrightセットアップ(ブラウザとシステム依存関係のダウンロード)
playwright install
playwright install-deps
基本的な使い方
import asyncio
from url_to_llm_text.get_html_text import get_page_source
from url_to_llm_text.get_llm_input_text import get_processed_text
async def llm_ready(url: str) -> str:
html = await get_page_source(url) # 生のHTMLを取得
clean = await get_processed_text(html, url) # LLM向けテキストに変換
return clean
text = asyncio.run(llm_ready("https://example.com"))
print(text)
その後、text を任意のプロンプトに埋め込み、モデルのコンテキストウィンドウに合わせて必要に応じて切り詰めることができます。
製品データ抽出の例
READMEには完全なワークフローが示されています:IKEAのカテゴリページを取得し、get_processed_text を実行し、OpenAIの gpt‑4o‑mini 向けにJSON形式のプロンプトを作成します。モデルは、名前、リンク、画像URL、価格を含む構造化された製品リストを返します。
特徴とハイライト
- 非同期&並行処理: Playwrightにより複数ページを並行してスクレイピング可能。
- Markdown出力: 見出し、リスト、テーブル、リンクをLLMがよく理解する形式で保持。
- プラグ可能なソース:
get_page_sourceをプロキシサービス、有料API(例:Scrappey)、独自のSeleniumセットアップに交換可能。 - オープンソースMITライセンス – 商用パイプラインへの修正・組み込み自由。
制限事項
- ライブラリはテキストの準備のみ行い、LLMプロンプトの作成やトークン制限の処理はユーザー自身で行う必要があります。
- JavaScript多用の複雑なサイトでは、追加の待機やカスタムPlaywrightスクリプトが必要な場合があります。
- 組み込みのOCRやPDF処理はありません – これらは作者の別サービス(ParseExtract、RedactLocal)で提供されています。
関連資料
- 詳細ドキュメント: https://github.com/m92vyas/llm-reader/wiki/Documentation
- 関連スクレイパー: https://github.com/m92vyas/AI-web_scraper(検索、複数ページクロール、プロンプトテンプレートを追加)
利用対象
- クリーンなウェブテキストを必要とするRAGパイプラインを構築するデータエンジニア。
- Eコマースやニュースサイトから構造化情報(価格、仕様、テーブル)を抽出する研究者。
- FirecrawlやJina Readerのような商用サービスに代わる無料の代替手段を求める人。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト