mcpField
B
blogwatcher

blogwatcher

github.com/nousresearch生产力258.5k335 次安装今天更新
代码仓库

关于 blogwatcher

blogwatcher 是用于跟踪博客及 RSS/Atom Feed 更新的命令行工具,适合管理多个订阅源的读者。它支持自动发现 Feed、抓取网页备用方案,以及按已读状态和类别管理文章。

主要功能

  1. 01自动发现 RSS/Atom Feed
  2. 02使用 HTML 抓取作为备用
  3. 03从 OPML 导入订阅
  4. 04扫描 Feed 获取新文章
  5. 05管理已读状态和类别

适用场景

  1. 01跟踪多个博客订阅的更新
  2. 02导入现有 OPML Feed 列表
  3. 03按博客或类别筛选未读文章

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nousresearch/hermes-agent --skill blogwatcher

安装后在 Claude Code 中输入/blogwatcher确认已加载。

详细介绍

Blogwatcher

使用 blogwatcher-cli 工具跟踪博客和 RSS/Atom 订阅源更新。支持自动发现订阅源、HTML 抓取回退、OPML 导入以及文章已读/未读管理。

使用 Hermes 工具(请先阅读)

blogwatcher-cli 是订阅源数据库;Hermes 工具负责围绕它进行自动化操作:

  • 定期监控 — 使用 cronjob 工具的 monitor 字段,而不是单纯设置计划任务。 monitor 会在每次触发时运行脚本,并且仅在输出发生变化时唤醒 Agent:将其设为运行 blogwatcher-cli scan >/dev/null 2>&1 && blogwatcher-cli articles 的脚本(输出确定;新文章 = 输出变化 = Agent 被唤醒并收到注入的差异)。输出未变化的触发不会产生任何大模型调用费用。设置 deliver,将摘要发送到聊天/频道;添加 continuity: true,以便连续的摘要可以去重。
  • 阅读用户询问的文章:对 blogwatcher-cli articles 中的文章 URL 使用 web_extract([url]) — 不要手动重新抓取。
  • 一次性“监控此页面的变化”,但不涉及订阅源:跳过此技能;cronjob 工具的 monitor 字段可以直接接受 http(s) URL。
  • 一次性阅读订阅源或网站的最新文章,无需安装任何内容:使用内置的 rss-feeds 技能(scripts/feed.py read URL);当你需要跟踪多个订阅源并管理已读/未读状态时,才值得安装 blogwatcher。
  • 跟踪公司/竞争对手动态并进行分析和引用:优先使用 competitor-news-monitor 技能;blogwatcher 是它可以搭配使用的轻量原始订阅源层。

安装

选择一种方式:

  • Go: go install github.com/JulienTant/blogwatcher-cli/cmd/blogwatcher-cli@latest
  • Docker: docker run --rm -v blogwatcher-cli:/data ghcr.io/julientant/blogwatcher-cli
  • 二进制文件(Linux amd64): curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli
  • 二进制文件(Linux arm64): curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli
  • 二进制文件(macOS Apple Silicon): curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli
  • 二进制文件(macOS Intel): curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli

所有版本:https://github.com/JulienTant/blogwatcher-cli/releases

使用 Docker 和持久化存储

默认情况下,数据库位于 ~/.blogwatcher-cli/blogwatcher-cli.db。在 Docker 中,容器重启后数据会丢失。使用 BLOGWATCHER_DB 或卷挂载来持久化数据:

# Named volume (simplest)
docker run --rm -v blogwatcher-cli:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan

# Host bind mount
docker run --rm -v /path/on/host:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan
从原版 blogwatcher 迁移

如果从 Hyaxia/blogwatcher 升级,请移动你的数据库:

mv ~/.blogwatcher/blogwatcher.db ~/.blogwatcher-cli/blogwatcher-cli.db

二进制文件名称从 blogwatcher 改为 blogwatcher-cli。

常用命令

管理博客
  • 添加博客:blogwatcher-cli add "My Blog" https://example.com
  • 使用明确指定的订阅源添加:blogwatcher-cli add "My Blog" https://example.com --feed-url https://example.com/feed.xml
  • 使用 HTML 抓取添加:blogwatcher-cli add "My Blog" https://example.com --scrape-selector "article h2 a"
  • 列出跟踪的博客:blogwatcher-cli blogs
  • 移除博客:blogwatcher-cli remove "My Blog" --yes
  • 从 OPML 导入:blogwatcher-cli import subscriptions.opml
扫描和阅读
  • 扫描所有博客:blogwatcher-cli scan
  • 扫描一个博客:blogwatcher-cli scan "My Blog"
  • 列出未读文章:blogwatcher-cli articles
  • 列出所有文章:blogwatcher-cli articles --all
  • 按博客筛选:blogwatcher-cli articles --blog "My Blog"
  • 按类别筛选:blogwatcher-cli articles --category "Engineering"
  • 将文章标记为已读:blogwatcher-cli read 1
  • 将文章标记为未读:blogwatcher-cli unread 1
  • 将所有文章标记为已读:blogwatcher-cli read-all
  • 将某个博客的所有文章标记为已读:blogwatcher-cli read-all --blog "My Blog" --yes

环境变量

所有标志都可以通过带有 BLOGWATCHER_ 前缀的环境变量设置:

变量描述
BLOGWATCHER_DBSQLite 数据库文件的路径
BLOGWATCHER_WORKERS并发扫描工作线程数(默认:8)
BLOGWATCHER_SILENT扫描时仅输出“scan done”
BLOGWATCHER_YES跳过确认提示
BLOGWATCHER_CATEGORY文章的默认类别筛选条件

输出示例

$ blogwatcher-cli blogs
Tracked blogs (1):

  xkcd
    URL: https://xkcd.com
    Feed: https://xkcd.com/atom.xml
    Last scanned: 2026-04-03 10:30
$ blogwatcher-cli scan
Scanning 1 blog(s)...

  xkcd
    Source: RSS | Found: 4 | New: 4

Found 4 new article(s) total!
$ blogwatcher-cli articles
Unread articles (2):

  [1] [new] Barrel - Part 13
       Blog: xkcd
       URL: https://xkcd.com/3095/
       Published: 2026-04-02
       Categories: Comics, Science

  [2] [new] Volcano Fact
       Blog: xkcd
       URL: https://xkcd.com/3094/
       Published: 2026-04-01
       Categories: Comics

注意事项

  • 如果未提供 --feed-url,则会从博客主页自动发现 RSS/Atom 源。
  • 如果 RSS 失败且配置了 --scrape-selector,则会回退到 HTML 抓取。
  • RSS/Atom 源中的类别会被保存,可用于筛选文章。
  • 可从 Feedly、Inoreader、NewsBlur 等导出的 OPML 文件批量导入博客。
  • 默认情况下,数据库存储在 ~/.blogwatcher-cli/blogwatcher-cli.db(可通过 --db 或 BLOGWATCHER_DB 覆盖)。
  • 使用 blogwatcher-cli <command> --help 查看所有标志和选项。

评论

支持 Markdown