新闻抓取服务

一个全面的模型上下文协议(MCP)服务器,用于抓取、处理和提供新闻内容,支持EPUB生成和KOReader的OPDS支持。

  • by Cre8bit
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Cre8bit/news_fetcher

使用说明

新闻抓取器MCP服务器(进行中)

一个全面的模型上下文协议(MCP)服务器,用于获取、处理新闻内容,并通过EPUB生成和OPDS支持为KOReader提供服务。

特点/特性

  • RSS/Atom订阅源处理智能订阅源解析,支持多种来源
  • 全文提取使用Trafilatura(首选)和Readability(备用)进行干净的文章提取
  • 基于大型语言模型(LLM)的排名使用可配置的大型语言模型(LLM)提供商实现智能文章排序与摘要生成
  • EPUB生成使用EbookLib将文章集合转换为EPUB格式
  • OPDS 目录通过OPDS提供EPUB电子书,以便在KOReader及其他兼容阅读器上进行无线访问
  • 可配置的偏好设置管理兴趣、来源、凭证和过滤偏好
  • 缓存系统智能缓存以减少API调用并提高性能
  • **支持多个大型语言模型(LLM)**OpenAI、Anthropic以及本地大型语言模型支持(Ollama、LocalAI)

MCP 工具

服务器提供以下MCP工具:

核心工具

  1. news_search_feeds

    • 搜索并获取RSS/Atom订阅源
    • 参数: topic (可选), sources (可选), limit (默认:10)
    • 返回:带有元数据的文章
  2. news_fetch_article

    • 从文章URL提取全文
    • 参数: url (必填)
    • 返回:提取的文章内容和元数据
  3. news_rank

    • 使用启发式方法+大型语言模型(LLM)按主题相关性对文章进行排名
    • 参数: items (文章列表), topic (字符串)
    • 返回:排名前5的文章
  4. news_summarize

    • 生成首页摘要(TL;DR)
    • 参数: collection (文章列表)
    • 返回:带项目符号的摘要及关键信息
  5. news_build_epub

    • 从文章集合创建EPUB文件
    • 参数: articles (列表), title (字符串), filename (可选)
    • 返回:EPUB 文件路径和元数据
  6. news_publish_opds

    • 通过OPDS目录发布EPUB文件
    • 参数: file_path (字符串)
    • 返回内容:OPDS URL 和说明

配置工具

  1. news_get_preferences

    • 获取当前用户偏好设置
    • 返回:当前配置
  2. news_update_preferences

    • 更新用户偏好设置
    • 参数: preferences 字典
    • 返回值:更新后的偏好设置

安装

  1. 克隆或设置仓库:
cd /path/to/news_fetcher
  1. 使用 uv 安装依赖项:
uv install
  1. 设置您的偏好和凭据:
    • 编辑 data/config/preferences.json 根据您的兴趣和偏好
    • 编辑 data/config/sources.json 添加/修改RSS源
    • 编辑 data/config/credentials.json 为LLM提供商添加API密钥

配置

用户偏好设置(data/config/preferences.json)

{
  "interests": ["technology", "science", "world news"],
  "sources": [],
  "language": "en",
  "max_articles_per_feed": 20,
  "enable_full_text": true,
  "preferred_formats": ["epub", "html"],
  "exclude_domains": ["example.com"],
  "keywords_boost": ["AI", "technology", "innovation"],
  "keywords_filter": ["spam", "advertisement"]
}

大型语言模型配置(data/config/credentials.json)

{
  "llm": {
    "provider": "openai",
    "api_key": "your-api-key-here",
    "model": "gpt-3.5-turbo",
    "base_url": null,
    "max_tokens": 1000,
    "temperature": 0.7
  }
}

支持的LLM(大型语言模型)提供商:

  • **OpenAI(开放人工智能研究所)**设置 provider to "openai"添加您的API密钥
  • **Anthropic(公司名,可译为“安萨里克”或根据官方中文名翻译,此处采用音译)**设定/套装 provider 到;向;对于;为了;由于 "anthropic",添加您的API密钥
  • **本地大型语言模型(Local LLM)**设置 provider 到;向;朝 "local",设定 base_url 到您的本地服务器(例如。, "http://localhost:11434" (适用于Ollama)

用法

运行MCP服务器

python main.py

服务器将:

  1. 启动MCP服务器并注册所有工具
  2. 在端口8000(可配置)上启动OPDS服务器
  3. 从(指定位置)加载配置 data/config/

与KOReader配合使用

  1. 确保OPDS服务器正在运行
  2. 在KOReader中,前往“文件管理器”→“添加OPDS目录”
  3. 添加目录URL: http://localhost:8000/opds
  4. 无线浏览并下载EPUB电子书

示例工作流程

  1. 搜索文章:

    # Via MCP tool
    result = news_search_feeds(topic="artificial intelligence", limit=20)
    
  2. 按相关性对文章进行排序:

    top_articles = news_rank(result["articles"], "machine learning developments")
    
  3. 生成摘要:

    summary = news_summarize(top_articles)
    
  4. 创建EPUB文件:

    epub_result = news_build_epub(
        articles=top_articles,
        title="AI News Digest - Today"
    )
    
  5. 通过OPDS发布:

    opds_result = news_publish_opds(epub_result["epub_path"])
    

RSS信息源

该服务器提供了针对各种主题的精选RSS源。您可以:

  • 通过以下方式添加来源 data/config/sources.json
  • 使用MCP工具以编程方式添加源
  • 按主题/类别整理资料来源

默认类别

  • 技术TechCrunch、Ars Technica、Wired、The Verge
  • 科学《自然》、《科学》杂志、《新科学家》
  • 人工智能AI新闻,人工智能新闻
  • 商业彭博社、华尔街日报、财富杂志
  • 将军美国有线电视新闻网(CNN)、英国广播公司(BBC)、路透社、美国国家公共电台(NPR)

做出贡献

  1. 为仓库创建分支(或:为仓库进行分叉)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 如适用,请添加测试
  5. 提交一个拉取请求

许可证

这个项目是开源的。详见LICENSE文件。

依赖项

关键依赖项:

  • **MCP(根据上下文,MCP可以有多种含义,如“最小化成本生产”、“多协议控制器”等,具体翻译需结合语境)**模型上下文协议框架
  • **feedparser(用于解析RSS/Atom订阅源的Python库)**RSS/Atom订阅源解析
  • **“Trafilatura”在中文中可以翻译为“拉丝机”或“拉丝工艺”,具体取决于上下文是指设备还是工艺。如果是指设备,则通常称为“拉丝机”;如果是指加工过程,则称为“拉丝工艺”。**网页内容提取
  • 可读性-lxml备用内容提取
  • **ebooklib(电子书库)**EPUB生成
  • FastAPIOPDS服务器
  • **请求:**HTTP 客户端
  • BeautifulSoup4HTML解析