eceee-news-fulltext-fetch について
eceeeのニュース一覧から記事リンクを収集し、本文を抽出してSQLiteに保存するスキルです。記事ごとの状態管理と再試行に対応した、段階的な収集に適しています。
主な機能
- 01ニュース記事リンクの収集
- 02差分取得と本文抽出
- 03SQLiteへの記事・本文保存
- 04失敗記録と再試行間隔の管理
- 05IDまたはURLでの記事取得
活用シーン
- 01eceeeニュース全文の同期
- 02ニュースURL一覧のみの更新
- 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 キューが必要な場合。
ワークフロー
- データベースを初期化します。
export ECEEE_NEWS_DB_PATH="/absolute/path/to/eceee_news.db"
python3 scripts/fulltext_fetch.py init-db --db "$ECEEE_NEWS_DB_PATH"
- リンクを検出し、全文を増分取得します。
python3 scripts/fulltext_fetch.py sync \
--db "$ECEEE_NEWS_DB_PATH" \
--index-url "https://www.eceee.org/all-news/" \
--limit 50 \
--min-chars 180
- 検出のみを実行します(本文を取得せず、URL カタログを更新します)。
python3 scripts/fulltext_fetch.py sync \
--db "$ECEEE_NEWS_DB_PATH" \
--discover-only
- 指定したエントリを取得します。
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/"
- 保存された状態を確認します。
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_atdiscovered_at、last_seen_at
entry_contentテーブルには抽出結果を保存します(entry_idごとに 1 行)。source_url、final_url、http_statusextractor(trafilatura、html-parser、またはnone)content_text、content_hash、content_lengthstatus(readyまたはfailed)- 再試行用フィールドとタイムスタンプ
抽出と更新のルール
- 検出元は
https://www.eceee.org/all-news/です。/all-news/news/配下にある、クラスnewslinkのアンカータグを抽出します。 - 全文の抽出には記事のメインコンテンツ領域(
mainContentColumn)を使用し、関連記事や共有用ブロックを除去します。 - 抽出の順序:
trafilatura(インストールされており、無効化されていない場合)- 組み込みの HTML パーサーによるフォールバック
entry_idを基準に Upsert します。- 成功時:
readyに設定し、テキスト、ハッシュ、長さを書き込み、再試行カウンターをリセットします。 - 失敗し、既存の
readyコンテンツがある場合:古いコンテンツを保持し、エラーおよび再試行のメタデータを更新します。 readyコンテンツがない状態で失敗した場合:failedに設定し、再試行回数を増やし、next_retry_atを設定します。
- 成功時:
設定可能なパラメーター
--dbECEEE_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.mdreferences/fetch-rules.md
アセット
assets/config.example.json
スクリプト
scripts/fulltext_fetch.py
コメント
Markdown 対応