Beta: trendog は現在ベータ版です。仕様や出力フォーマットは今後変更される可能性があります。
trendog は、技術トレンド記事を定期収集し、Gemini で対象読者にとって重要な記事を選別・要約して Slack に投稿するバッチアプリです。
- 複数ソースのトレンド記事を収集
- 収集ソース: Hatena Hotentry / Hacker News / Zenn Feed
- Gemini による重要度判定(対象読者プロファイルに基づく)
- 重要記事のみを Slack へ投稿
- GitHub Actions 定期実行(JST隔日判定)
workflow_dispatchによる手動実行- 将来の Workers 移行を想定した Ports/Adapters 分離
投稿される各記事のフォーマット:
- 記事タイトル
- URL
- 内容の要約
- おすすめ理由
npm ciexport GEMINI_API_KEY='...'
export SLACK_WEBHOOK_URL='...'
export AUDIENCE_PROFILE='バックエンドエンジニア、SREエンジニア'npm run runWorkflow: .github/workflows/trendog.yml
- 毎日
00:10 UTCに起動 - ジョブ内部で JST 隔日判定を実施
入力パラメータ:
mode:normal/forcedryRun:true/falsemaxTopics: 出力上限(既定 17)audienceProfile: Gemini が重要判定するときの対象読者debug:true/false
GitHub Secrets:
GEMINI_API_KEYSLACK_WEBHOOK_URL
GitHub Variables (optional):
GEMINI_MODEL(default:gemini-2.5-flash)AUDIENCE_PROFILE(default:バックエンドエンジニア、SREエンジニア)
バックエンドエンジニア、SREエンジニアインフラエンジニア、プラットフォームエンジニアAIアプリケーション開発者
npm run typecheck
npm test
npm run buildsrc/usecase: 実行フローのユースケースsrc/domain: スコアリング・整形などのドメインロジックsrc/ports: インターフェース定義src/adapters: 外部I/O実装(Sources / Gemini / Slack / Runtime)state/state.json: 実行状態(重複投稿防止、前回値)
- ソース取得はリトライ付き
- Gemini失敗時はフォールバックして投稿継続
- 同日重複投稿は state で防止
