← 一覧に戻る

Article Collector セットアップガイド

整理日: 2026-03-16

#プログラミング #リファレンス #Obsidian #ClaudeCode

NZXT Windows PC(WSL2)上で24時間動く自動記事収集システム。 [[vision]] の「情報収集の自動化」に対応するプロジェクト。

概要

RSS/APIから記事を自動取得し、OllamaのローカルLLMでスコアリングして、 興味に合う記事だけをMarkdownレポートにまとめてObsidianに同期するシステム。

[RSS/API] → [Python Collector] → [Ollama スコアリング] → [Markdown] → [Google Drive] → [Obsidian]

構造図

flowchart TD
    A["RSS/APIから記事を自動取得し、Ollamaのローカ.."]
    A --> B["興味に合う記事だけをMarkdownレポートにまとめてO.."]
    style B fill:#c05746,color:#fff,stroke:none

収集元

| サイト | 方式 | トピック | |--------|------|----------| | Zenn | RSS | LLM, Ollama, Python, Claude, Obsidian, 機械学習 | | Qiita | API + RSS | LLM, Python, Ollama, 機械学習 | | Hacker News | RSS (hnrss.org) | LLM, Ollama, Self-hosted, Local AI | | Reddit | RSS | r/LocalLLaMA, r/selfhosted, r/datascience | | DEV.to | RSS | AI, LLM, Python, Productivity |

ファイル構成

article-collector/
├── docker-compose.yml    # Docker構成
├── Dockerfile            # イメージ定義
├── config.yaml           # 設定(フィード、興味、閾値等)
├── requirements.txt      # Python依存
├── crontab               # スケジュール(8時/20時)
├── entrypoint.sh         # 起動スクリプト
├── setup.sh              # セットアップスクリプト
├── run-now.sh            # 手動実行
├── .env.example          # 環境変数テンプレート
├── n8n-workflow.json     # n8n版(代替オプション)
└── src/
    └── collector.py      # メインスクリプト

セットアップ手順

前提条件

  • Docker / Docker Compose が動作中
  • Ollamaコンテナが稼働中(ポート11434)
  • rcloneインストール済み(Google Drive連携する場合)

Step 1: ファイルをWSL2に配置

# Windows側のパスからWSL2にコピー、または直接WSL2側で作業
cd ~/projects/  # 好きな場所
cp -r /path/to/article-collector ./
cd article-collector

Step 2: セットアップスクリプト実行

chmod +x setup.sh run-now.sh entrypoint.sh
./setup.sh

このスクリプトが以下を自動で行う:

  1. 必要なディレクトリ作成
  2. Ollamaのネットワーク名を検出して .env に書き込み
  3. 利用可能なOllamaモデルを表示
  4. rclone設定の確認
  5. Dockerイメージのビルド

Step 3: 設定の確認・調整

# config.yaml を編集
nano config.yaml

確認ポイント:

  • ollama.model: 実際にインストール済みのモデル名に合わせる
  • gdrive.remote_path: Obsidian Vault内のパスに合わせる
  • scoring.threshold: 最初は60くらいで試すのもあり

Step 4: rclone設定(Google Drive連携する場合)

# rcloneの初期設定(ブラウザでOAuth認証が必要)
rclone config

# 手順:
# 1. 'n' で新規リモート
# 2. リモート名: gdrive
# 3. タイプ: Google Drive (番号選択)
# 4. client_id, client_secret: 空欄でOK
# 5. scope: 1 (Full access)
# 6. OAuth認証をブラウザで完了

> 整理日: 2026-03-16

# 動作確認
rclone ls gdrive:kodachanSecondBrain/06_Literature/ --max-depth 1

Step 5: 起動

docker compose up -d --build

Step 6: 動作確認

# ログを確認
docker compose logs -f

# または
tail -f logs/collector.log

# 手動で即時実行
./run-now.sh

運用

よく使うコマンド

# 状態確認
docker compose ps

# ログ確認
docker compose logs -f article-collector

# 手動実行
./run-now.sh

# 再起動
docker compose restart

# 停止
docker compose down

# 設定変更後の反映
docker compose up -d --build

フィードの追加・削除

config.yamlfeeds セクションを編集するだけ。 enabled: false にすれば無効化できる。

- name: "新しいフィード"
  url: "https://example.com/feed"
  source: "Example"
  enabled: true

スコア閾値の調整

最初は threshold: 60 で広めに拾い、ノイズが多ければ 7080 に上げる。

SQLiteデータベース

処理済み記事は data/articles.db に記録される。 同じ記事は2回処理されない(重複排除)。

# DB確認
sqlite3 data/articles.db "SELECT score, title FROM articles ORDER BY fetched_at DESC LIMIT 20;"

トラブルシューティング

Ollamaに接続できない

# ネットワーク確認
docker network ls
docker inspect ollama --format '{{range $key, $val := .NetworkSettings.Networks}}{{$key}}{{end}}'

# .envのOLLAMA_NETWORKを修正

rcloneアップロード失敗

# rclone設定確認
rclone listremotes
rclone ls gdrive: --max-depth 1

# 認証が切れている場合は再認証
rclone config reconnect gdrive:

レポートが空

  • scoring.threshold を下げてみる
  • logs/collector.log でスコアリング結果を確認
  • Ollamaのモデルが正しくロードされているか確認

関連ノート

  • [[projects]] - プロジェクト一覧
  • [[next-actions]] - 次のアクション