mcpField
E
eceee-news-fulltext-fetch

eceee-news-fulltext-fetch

github.com/tiangong-aiデータ・データベース1141 回インストール1 週間前に更新
リポジトリ

eceee-news-fulltext-fetch について

eceeeのニュース一覧から記事リンクを収集し、本文を抽出してSQLiteに保存するスキルです。記事ごとの状態管理と再試行に対応した、段階的な収集に適しています。

主な機能

  1. 01ニュース記事リンクの収集
  2. 02差分取得と本文抽出
  3. 03SQLiteへの記事・本文保存
  4. 04失敗記録と再試行間隔の管理
  5. 05IDまたはURLでの記事取得

活用シーン

  1. 01eceeeニュース全文の同期
  2. 02ニュースURL一覧のみの更新
  3. 03必要に応じた記事の再取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tiangong-ai/agent-skills --skill eceee-news-fulltext-fetch

インストール後、Claude Code で/eceee-news-fulltext-fetchを入力して読み込まれたか確認します。

詳細

eceee ニュース全文取得

主な目的

  • https://www.eceee.org/all-news/ からニュース記事の URL を検出します。
  • 検出したエントリのメタデータを SQLite に保存します。
  • 各エントリのページから記事本文を取得して抽出します。
  • 再試行に安全な更新を行い、ステータスとテキストを関連テーブル(entry_content)に保存します。

実行条件

  • eceee のニュースアーカイブページから全文を抽出するリクエストを受け取った場合。
  • eceee のニュースリンクの増分全文同期を実行するリクエストを受け取った場合。
  • 検出、抽出、再試行に対応する、堅牢なローカル SQLite キューが必要な場合。

ワークフロー

  1. データベースを初期化します。
export ECEEE_NEWS_DB_PATH="/absolute/path/to/eceee_news.db"
python3 scripts/fulltext_fetch.py init-db --db "$ECEEE_NEWS_DB_PATH"
  1. リンクを検出し、全文を増分取得します。
python3 scripts/fulltext_fetch.py sync \
  --db "$ECEEE_NEWS_DB_PATH" \
  --index-url "https://www.eceee.org/all-news/" \
  --limit 50 \
  --min-chars 180
  1. 検出のみを実行します(本文を取得せず、URL カタログを更新します)。
python3 scripts/fulltext_fetch.py sync \
  --db "$ECEEE_NEWS_DB_PATH" \
  --discover-only
  1. 指定したエントリを取得します。
python3 scripts/fulltext_fetch.py fetch-entry \
  --db "$ECEEE_NEWS_DB_PATH" \
  --entry-id 123

または URL で指定します。

python3 scripts/fulltext_fetch.py fetch-entry \
  --db "$ECEEE_NEWS_DB_PATH" \
  --url "https://www.eceee.org/all-news/news/example-slug/"
  1. 保存された状態を確認します。
python3 scripts/fulltext_fetch.py list-entries --db "$ECEEE_NEWS_DB_PATH" --limit 100
python3 scripts/fulltext_fetch.py list-content --db "$ECEEE_NEWS_DB_PATH" --status ready --limit 100

データ仕様

  • entries テーブルには検出時のメタデータを保存します。
    • url、title、published_at
    • discovered_at、last_seen_at
  • entry_content テーブルには抽出結果を保存します(entry_id ごとに 1 行)。
    • source_url、final_url、http_status
    • extractor(trafilatura、html-parser、または none)
    • content_text、content_hash、content_length
    • status(ready または failed)
    • 再試行用フィールドとタイムスタンプ

抽出と更新のルール

  • 検出元は https://www.eceee.org/all-news/ です。/all-news/news/ 配下にある、クラス newslink のアンカータグを抽出します。
  • 全文の抽出には記事のメインコンテンツ領域(mainContentColumn)を使用し、関連記事や共有用ブロックを除去します。
  • 抽出の順序:
    1. trafilatura(インストールされており、無効化されていない場合)
    2. 組み込みの HTML パーサーによるフォールバック
  • entry_id を基準に Upsert します。
    • 成功時:ready に設定し、テキスト、ハッシュ、長さを書き込み、再試行カウンターをリセットします。
    • 失敗し、既存の ready コンテンツがある場合:古いコンテンツを保持し、エラーおよび再試行のメタデータを更新します。
    • ready コンテンツがない状態で失敗した場合:failed に設定し、再試行回数を増やし、next_retry_at を設定します。

設定可能なパラメーター

  • --db
  • ECEEE_NEWS_DB_PATH
  • --index-url
  • --discover-only
  • --limit
  • --force
  • --only-failed
  • --since-date
  • --refetch-days
  • --oldest-first
  • --timeout
  • --max-bytes
  • --min-chars
  • --max-retries
  • --retry-backoff-minutes
  • --user-agent
  • --disable-trafilatura
  • --fail-on-errors

エラー処理

  • インデックスの取得または解析に失敗した場合、対処方法を示すエラーを返します。
  • HTTP、ネットワーク、コンテンツタイプのエラーはエントリごとに記録され、同期バッチ全体は停止しません。
  • 抽出したテキストが短い場合(< --min-chars)、品質の低い本文を避けるため、失敗として扱います。
  • 再試行キューは max_retries と指数バックオフで制御します。

参考資料

  • references/schema.md
  • references/fetch-rules.md

アセット

  • assets/config.example.json

スクリプト

  • scripts/fulltext_fetch.py

コメント