mcpField
H
hackernews-intel

hackernews-intel

github.com/varnan-tech生产力68743 次安装2 周前更新
代码仓库

关于 hackernews-intel

监控 Hacker News 关键词并通过 Slack 提醒新匹配内容的技能。它使用本地 SQLite 缓存避免重复提醒,可手动运行或定时执行。

主要功能

  1. 01按关键词搜索 Hacker News 新帖
  2. 02使用 SQLite 缓存去重
  3. 03向 Slack 发送提醒
  4. 04按积分筛选并可选监控评论
  5. 05支持试运行和定时执行

适用场景

  1. 01跟踪 Hacker News 上指定主题的讨论
  2. 02定期接收新匹配帖子的提醒

安装

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

$npx skills add https://github.com/varnan-tech/opendirectory --skill hackernews-intel

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
package.json
README.md
evals/
evals.json
scripts/
monitor-hn.js

详细介绍

Hacker News 情报监控

监控 Hacker News 上的关键词。每次运行时,通过 HN Algolia API 获取新帖子,与本地 SQLite 缓存去重,并向 Slack 发送未见过的匹配项提醒。可手动运行,也可通过 cron 或 GitHub Actions 定时运行。


第 1 步:检查设置

1a. 验证所需的环境变量

检查是否已设置以下变量:

  • HN_KEYWORDS(必需):要监控的关键词列表,以逗号分隔
  • SLACK_WEBHOOK(必需):用于发送提醒的 Slack Incoming Webhook URL

如果缺少其中任何一项,请停止并告知用户:

  • HN_KEYWORDS:要监控的主题列表,以逗号分隔。例如:claude code,LLM agents,deno runtime
  • SLACK_WEBHOOK:在 https://api.slack.com/apps 创建 Incoming Webhook。选择工作区,启用 Incoming Webhooks,然后复制 URL。

1b. 验证脚本依赖项

ls /Users/ksd/Desktop/Varnan_skills/hackernews-intel/node_modules/better-sqlite3 2>/dev/null

如果缺少依赖项:

cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && npm install

第 2 步:运行监控器

cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && node scripts/monitor-hn.js

参数:

  • --dry-run:将匹配结果打印到标准输出,不发送任何 Slack 提醒。提交前可用此参数预览将要发送的提醒。
  • --days=N:首次运行时,回溯 N 天(默认值:1)。仅当 SQLite 缓存为空时生效。
  • --reset:清除缓存并重新开始。关键词列表有较大变动时使用。

脚本的操作:

  1. 从环境变量读取 HN_KEYWORDS,按逗号拆分并去除空白
  2. 在 HN_DB_PATH 指定的路径打开(或创建)SQLite 数据库(默认:./hn-intel.db)
  3. 对每个关键词,调用 https://hn.algolia.com/api/v1/search_by_date,并使用 numericFilters=created_at_i>lastSeen
  4. 对每个结果,检查 objectID 是否已存在于 seen_posts 中——如果存在则跳过
  5. 如果设置了 HN_MIN_POINTS,则跳过低于该阈值的帖子
  6. 对于新的匹配帖子,发送 Slack 提醒,并将 objectID 插入缓存
  7. 使用本次运行摘要更新 poll_log
  8. 将摘要打印到标准输出

第 3 步:查看结果

脚本运行后,读取其标准输出。输出将报告:

Run complete.
  Keywords checked: N
  Posts found: N
  Posts alerted: N
  Posts skipped (already seen): N
  Errors: N

如果 Posts found: 0,但你预期会有结果,请检查:

  • 关键词是否足够具体?如果 HN Algolia 返回结果过多且时间窗口较窄,过于宽泛的词(例如 “AI”)可能返回 0 条结果
  • 首次运行时的 --days 时间窗口是否足够长?尝试使用 --days=7
  • DB 缓存是否过滤过严?尝试使用 --reset 清除缓存并重新运行

如果 Posts alerted: 0,但 Posts found: N,说明去重功能正常——这些帖子已在之前的运行中被发现。


第 4 步:安排监控任务

选项 A:cron(macOS/Linux)

将以下内容添加到 crontab,每 4 小时运行一次:

crontab -e

添加此行(请根据安装位置调整路径):

0 */4 * * * cd /Users/ksd/Desktop/Varnan_skills/hackernews-intel && node scripts/monitor-hn.js >> /tmp/hn-intel.log 2>&1

选项 B:GitHub Actions(推荐用于团队)

在任意仓库中创建 .github/workflows/hn-intel.yml:

name: HN Intel Monitor
on:
  schedule:
    - cron: '0 */4 * * *'
  workflow_dispatch:

jobs:
  monitor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies
        run: npm install
        working-directory: hackernews-intel
      - name: Run monitor
        run: node scripts/monitor-hn.js
        working-directory: hackernews-intel
        env:
          HN_KEYWORDS: ${{ secrets.HN_KEYWORDS }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          HN_MIN_POINTS: ${{ secrets.HN_MIN_POINTS }}

将 HN_KEYWORDS、SLACK_WEBHOOK,以及可选的 HN_MIN_POINTS 添加为仓库机密。

注意:GitHub Actions 不会在运行之间保留文件,因此 SQLite 缓存会在每次运行时重置。这意味着每次运行都会再次找到默认 1 天回溯窗口内的所有帖子。若要在 GitHub Actions 上实现持久去重,请将 DB 存储在持久化位置(S3、工件缓存或专用分支)。


第 5 步:调整关键词和阈值

添加或更改关键词: 在 .env 或环境中更新 HN_KEYWORDS。无需重启——脚本每次运行时都会重新读取该变量。

设置最低分数阈值: 设置 HN_MIN_POINTS=10,仅对分数达到 10 分或以上的帖子发送提醒。对于宽泛关键词,这有助于减少噪声。

包含评论(不仅是文章): 设置 HN_INCLUDE_COMMENTS=true,同时监控提及关键词的评论。默认关闭——评论会显著增加结果数量。

重置缓存: 运行 node scripts/monitor-hn.js --reset,清除 seen_posts 和 poll_log。下次运行时,会根据回溯窗口重新获取内容。

测试新关键词: 运行 node scripts/monitor-hn.js --dry-run --days=7,查看过去 7 天内匹配的帖子,不向任何人发送提醒。

评论

支持 Markdown