nook は、日々公開される技術ニュース、論文、OSS、プロダクト情報を収集して日本語で要約し、Web でまとめて読めるようにするアプリです。ローカル環境でも AWS でも動かせます。
- Hacker News、Product Hunt、GitHub Trending、Reddit、RSS、Google Alerts、論文情報をまとめて収集する
- 各記事や論文を日本語で要約する
- 日付ごとに情報を整理して Web で読む
- 各記事に対して追加の質問を送る
- ローカル環境と AWS のどちらでも同じ構成で動かす
対応している主な情報源は次のとおりです。
- Hacker News
- Product Hunt
- GitHub Trending
- 技術ブログなどの RSS
- Google Alerts の RSS
- Hugging Face Daily Papers 経由の論文情報
configs/tech_news/feed.tomlに定義した任意の RSS 一覧
tech_news は複数の RSS を横断して集約でき、feed ごとに任意の keywords フィルタを付けられます。
- Python 3.11
uv- 利用する LLM の API キー
- 例:
OPENAI_API_KEY,GOOGLE_API_KEY,ANTHROPIC_API_KEY,OPENROUTER_API_KEY
- 例:
- Reddit API の認証情報
- Product Hunt API Key と Developer Token
- Google Alerts を使う場合は Google アカウント
- AWS にデプロイする場合だけ
awsCLI と AWS CDK
-
リポジトリを取得します。
git clone https://github.com/discus0434/nook.git cd nook -
.envを作成します。cp .env.example .env
-
.envに必要な値を設定します。LLM_MODEL=openai:gpt-5.4-mini OPENAI_API_KEY=your_openai_api_key REDDIT_CLIENT_ID=your_reddit_client_id REDDIT_CLIENT_SECRET=your_reddit_client_secret REDDIT_USER_AGENT=your_reddit_user_agent PRODUCT_HUNT_API_KEY=your_product_hunt_api_key PRODUCT_HUNT_DEVELOPER_TOKEN=your_product_hunt_developer_token # 利用する provider に合わせて必要なキーを設定してください # GOOGLE_API_KEY=your_google_api_key # ANTHROPIC_API_KEY=your_anthropic_api_key # OPENROUTER_API_KEY=your_openrouter_api_key # AWS で独自の Secrets Manager 名を使う場合だけ設定 # NOOK_AWS_SECRET_ID=nook/runtime-secrets
LLM_MODELにはopenai:gpt-5.4-miniのような provider/model 形式の文字列を指定します。viewer の追加質問では、対応している provider の場合だけ組み込みの Web 検索を使います。非対応 provider では通常のチャットとして動きます。 -
依存関係をインストールします。
uv sync --dev
Ubuntu では systemd --user、macOS では launchd を使って viewer と収集ジョブを登録できます。
make local-register登録後は次の URL で viewer を開けます。
http://127.0.0.1:8080
個別の収集ジョブを単発で実行したいときは SERVICE を指定します。
make local-trigger SERVICE=reddit_explorer登録を外す場合は次を実行します。
make local-unregisterAWS CLI と AWS CDK の設定が済んでいれば、次のコマンドでデプロイできます。
make cdk-deployこのコマンドは .env と現在の環境変数を読み込み、NOOK_AWS_SECRET_ID で指定した Secrets Manager secret に必要な認証情報を反映したうえで CDK deploy を実行します。完了後に viewer の Function URL が表示されます。
このリポジトリに含まれている configs/*.toml はサンプルです。公開版に同梱されている内容をそのまま使うのではなく、自分の監視対象に合わせて編集してください。
configs/reddit_explorer/subreddits.toml- 収集対象の subreddit を定義します。
configs/github_trending/languages.toml- 追跡する言語を定義します。
configs/tech_feed/feed.toml- 技術ブログなどの RSS を定義します。
configs/tech_news/feed.toml- 複数 RSS を横断して集約する feed 一覧を定義します。
- 各 feed は
name、url、feed_name_displayを持ち、keywordsは任意です。 keywordsを指定した場合は title、summary、content に一致した記事だけを残します。- 同じ URL は 1 件にまとめ、各 feed からは 1 日あたり最大 10 件まで処理します。
configs/google_alerts/google_alerts.toml- Google Alerts の RSS を定義します。
- 同梱している URL はサンプルなので、実際に使う前に自分の RSS URL に置き換えてください。
nook/services/- collector と viewer の本体です。
nook/deploy/aws/- CDK、Lambda handler、AWS 向けの deploy 処理です。
nook/deploy/local/- ローカル実行と service 登録まわりです。
configs/- 各 collector が参照するサンプル設定ファイルです。
docs/DESIGN.md- 現在の設計をまとめたドキュメントです。
PC 画面:
モバイル画面:
チャット画面:
このプロジェクトは GNU Affero General Public License v3.0 のもとで公開しています。詳細は LICENSE を参照してください。
- GitHub Issues
- X: @IMG_5955


