Nookは、さまざまな情報ソース(Reddit、Hacker News、GitHub Trending、Tech Feed、arXiv論文)からコンテンツを収集し、 一元的に表示するパーソナル情報ハブです。
Discus0434氏のNookをベースに、 以下の変更を行っています。
- 完全にローカルで動作するように変更(AWS/S3は使用していません)
- 取得した記事をローカルストレージの~/nook/data/に保存
- 生成AIのAPIを変更(GeminiからGrok3 APIに変更)
- 天気APIを追加(OpenWeatherMap API)
- フロントエンドを追加(React + Vite)
- バックエンドを追加(FastAPI)
- サービスを追加(GitHub Trending、Hacker News、Tech Feed、arXiv論文)
- 取得した記事をすべて日本語に変換
注意事項
- チャット機能は実装されていません。
- 複数の情報ソースからのコンテンツ収集と表示
- Reddit人気投稿
- Hacker News記事
- GitHub Trendingリポジトリ
- 技術ブログのRSSフィード
- arXiv論文
- 日付ごとのコンテンツフィルタリング
Nookは以下のコンポーネントで構成されています:
-
バックエンド(FastAPI)
- コンテンツAPI
-
フロントエンド(React + Vite)
- サイドバー(ソース選択、日付選択、天気表示)
- コンテンツビューア
-
サービス
- Reddit Explorer:Redditの人気投稿を収集・要約
- Hacker News Retriever:Hacker Newsの記事を収 8000 集
- GitHub Trending:GitHubのトレンドリポジトリを収集
- Tech Feed:技術ブログのRSSフィードを監視・収集・要約
- Paper Summarizer:arXiv論文を収集・要約
- ローカルストレージ:収集したデータの保存
- Grok3 APIクライアント:テキスト生成・要約
- Docker
- Docker Compose
# .envファイルの作成
cp .env.example .env
# .envファイルを編集して必要なAPIキーを設定
# コンテナのビルドと起動
docker-compose up -d
# フロントエンドは http://localhost:5173 でアクセス可能
# バックエンドは http://localhost:8000 でアクセス可能
# 開発用コンテナのビルドと起動
docker-compose -f docker-compose.dev.yaml up -d
# フロントエンドは http://localhost:5173 でアクセス可能
# バックエンドは http://localhost:8000 でアクセス可能
# 本番環境
docker-compose down
# 開発環境
docker-compose -f docker-compose.dev.yaml down
- Python 3.10以上
- Node.js 18以上
- npm または yarn
- 以下のAPIキー:
- Grok APIキー(チャット・要約機能用)
- Reddit API認証情報(Reddit Explorer用)
# リポジトリのクローン
git clone https://github.com/Tomatio13/nook.git
cd nook
# バックエンド依存関係のインストール
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# フロントエンド依存関係のインストール
cd nook/frontend
npm install
# または
yarn install
# 環境変数の設定
cp .env.example .env
# .envファイルの環境変数を設定
export OPENWEATHERMAP_API_KEY=your_api_key
export GROK_API_KEY=your_api_key
export REDDIT_CLIENT_ID=your_client_id
export REDDIT_CLIENT_SECRET=your_client_secret
export REDDIT_USER_AGENT=your_user_agent
# バックエンドの起動
python -m nook.api.run
# または直接uvicornを使用
uvicorn nook.api.main:app --reload
# フロントエンドの起動(別ターミナルで)
cd nook/frontend
npm run dev
# または
yarn dev
フロントエンドは通常 http://localhost:5173 で実行されます。
各情報ソースからデータを収集するには、以下のコマンドを使用します:
# すべてのサービスを実行
python -m nook.services.run_services --service all
# 特定のサービスのみ実行
python -m nook.services.run_services --service reddit
python -m nook.services.run_services --service hackernews
python -m nook.services.run_services --service github
python -m nook.services.run_services --service techfeed
python -m nook.services.run_services --service paper
収集されたデータは data/
ディレクトリに保存されます:
data/
├── github_trending/ # GitHub Trendingデータ
├── hacker_news/ # Hacker Newsデータ
├── paper_summarizer/ # arXiv論文データ
├── reddit_explorer/ # Redditデータ
└── tech_feed/ # 技術ブログフィードデータ
各サービスは日付ごとにファイルを作成します(例:2023-04-15.md
)。
nook/
├── api/ # FastAPI バックエンド
│ ├── models/ # データモデル
│ └── routers/ # APIルーター
├── common/ # 共通ユーティリティ
│ ├── storage.py # ローカルストレージ
│ └── grok_client.py # Grok3 APIクライアント
├── frontend/ # React + Vite フロントエンド
│ ├── src/ # ソースコード
│ │ ├── components/ # UIコンポーネント
│ │ └── api/ # APIクライアント
│ └── public/ # 静的ファイル
└── services/ # サービス
├── github_trending/ # GitHub Trendingサービス
├── hacker_news/ # Hacker Newsサービス
├── paper_summarizer/ # 論文要約サービス
├── reddit_explorer/ # Redditエクスプローラー
└── tech_feed/ # 技術フィードサービス
GNU AFFERO GENERAL PUBLIC LICENSE