内容获取服务

一个从YouTube、RSS订阅和GitHub发布中获取内容并跟踪新内容的服务,适用于内容管理和自动化工作流。

  • by EbonyLouis
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EbonyLouis/content-fetcher-mcp2

使用说明

内容获取器MCP

此MCP服务器从各种来源获取内容,包括YouTube、RSS提要和GitHub版本。它旨在与Goose合作,帮助跟踪和识别新内容。

特性

  • 油管:从Goose YouTube频道获取视频
  • 订阅:从任何RSS源(包括Goose博客)获取博客文章
  • GitHub发布:从Block/Guese存储库获取发布
  • 内容跟踪:跟踪看到的内容以识别新项目
  • 跨机器持久性:将跟踪数据存储在 ~/.config/goose/content-fetcher-mcp/

设置

  1. 请确保您已安装Node.js(建议使用版本14或更高版本)。

  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    

运行MCP服务器

这是一个使用stdio传输的MCP服务器,旨在向Goose注册。

要直接启动服务器,请执行以下操作:

npm start

对于自动重新加载的开发:

npm run dev

在Goose注册

要在Goose中注册此MCP服务器,请将其添加到Goose配置中。服务器使用stdio传输,因此应在Goose设置中将其配置为本地MCP服务器。

可用工具

1.fetchYoutube

从Goose YouTube频道获取所有视频。

参数: 无

退货: 视频对象数组 id, title, url, published_at,以及 type: "video"

2.fetchRss

从任何RSS提要中获取所有博客文章。

参数:

  • url (字符串):RSS源URL

退货: 博客文章对象数组 id, title, url, published_at,以及 type: "blog"

3.fetchGoose博客

从Goose官方博客获取所有博客文章。

参数: 无

退货: 博客文章对象数组 id, title, url, published_at,以及 type: "blog"

4.fetchGithub发布

从Block/Guese GitHub存储库获取所有版本。

参数: 无

退货: 释放对象数组 id, title, url, published_at,以及 type: "release"

5.is-NewContent

检查以前是否见过内容项。

参数:

  • id (string):内容的唯一标识符
  • type (enum):其中之一 "youtube", "blog",或 "release"

退货: { "is_new": true/false }

6.标记内容已查看

将内容项标记为可见(通常在发布后)。

参数:

  • id (string):内容的唯一标识符
  • type (enum):其中之一 "youtube", "blog",或 "release"

退货: { "success": true }

运作原理

  1. 获取:获取工具从各自的源中检索所有可用内容
  2. 过滤:使用 isNewContent 检查某个项目是否以前从未见过
  3. 追踪:处理新内容后,使用 markContentSeen 将其标记为可见
  4. 持久性:看到的内容存储在 ~/.config/goose/content-fetcher-mcp/last_seen.json

工作流示例

// 1. Fetch all YouTube videos
const videos = await fetchYoutube();

// 2. Check which ones are new
for (const video of videos) {
  const result = await isNewContent({ id: video.id, type: "youtube" });
  if (result.is_new) {
    // Process the new video...
    
    // 3. Mark as seen after processing
    await markContentSeen({ id: video.id, type: "youtube" });
  }
}

配置

服务器预先配置了:

  • YouTube频道:鹅道(UCVLuT_AS687XAJ__-COCRFw)
  • 鹅博客RSS: https://block.github.io/goose/blog/rss.xml
  • GitHub存储库: block/goose

要自定义这些,请在中编辑常量 src/server.ts.

备注

  • 服务器使用stdio传输,使其适合与Goose进行本地MCP集成
  • 通过以下方式在重启过程中持续进行内容跟踪 last_seen.json 文件
  • 所有获取操作都返回完整的内容列表;“新”项目的筛选是通过以下方式单独完成的 isNewContent

未来改进

  1. 添加配置文件支持,以自定义频道、提要和存储库
  2. 实现速率限制和缓存以优化API的使用
  3. 添加更详细的日志记录和错误处理
  4. 支持其他内容源
  5. 一次检查多个项目的批处理操作