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易理解的格式保留标题、列表、表格和链接。
  • 可插拔源:可以用代理服务、付费API(如Scrappey)或自己的Selenium设置替换get_page_source。
  • 开源MIT许可证 – 可自由修改并嵌入商业管道。

局限性

  • 该库仅准备文本;您仍需自行编写LLM提示并处理令牌限制。
  • 复杂的JavaScript重度站点可能仍需额外等待或自定义Playwright脚本。
  • 不内置OCR或PDF处理 – 这些由作者的其他服务(ParseExtract、RedactLocal)提供。

进一步阅读

适合哪些人使用

  • 构建需要干净网页文本的RAG管道的数据工程师。
  • 从电子商务或新闻网站提取结构化信息(价格、规格、表格)的研究人员。
  • 任何想要Firecrawl或Jina Reader等商业服务免费替代品的人。

相关

  • 项目
  • 项目
  • 项目
  • 项目