mcpField
H
hackernews-intel

hackernews-intel

github.com/varnan-tech生産性68743 回インストール2 週間前に更新
リポジトリ

hackernews-intel について

Hacker Newsのキーワードを監視し、新たな一致をSlackで通知するスキルです。ローカルのSQLiteキャッシュで通知の重複を避け、手動またはスケジュール実行できます。

主な機能

  1. 01キーワードで新しいHacker News投稿を検索
  2. 02SQLiteキャッシュで一致を重複排除
  3. 03Slackにアラートを送信
  4. 04ポイントによる絞り込みとコメント監視に対応
  5. 05ドライランと定期実行に対応

活用シーン

  1. 01Hacker 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. 各キーワードについて、numericFilters=created_at_i>lastSeen を指定して https://hn.algolia.com/api/v1/search_by_date を呼び出します
  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 と表示され、結果があるはずなのに見つからない場合は、次を確認してください。

  • キーワードが具体的すぎませんか?「AI」のような非常に広い語句でも、HN Algolia が多数の結果を返し、検索対象期間が短い場合は、結果が 0 件になることがあります
  • 初回実行時の --days の期間が短すぎませんか?--days=7 を試してください
  • DB キャッシュの条件が厳しすぎませんか?--reset でキャッシュを消去してから再実行してください

Posts found: N に対して Posts alerted: 0 と表示された場合、重複除外は機能しています。これらの投稿は以前の実行ですでに確認されています。


ステップ 4:モニターをスケジュールする

オプション A:cron(macOS/Linux)

4 時間ごとに実行するには、crontab に追加します。

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 日間の該当投稿を確認できます。

コメント