JSONデータのソースURL検証ワークフロー
data/comments/*.json に格納されている財務コメントデータの品質を確保するための検証プロセス。
全体フロー
スクリプト構成
| スクリプト | 役割 |
|---|---|
check-source-urls.mjs | URL有効性チェック(無効なURLを削除) |
generate-review-prompts.mjs | レビュープロンプト生成 |
各itemの検証ロジック(Deep Research用)
※ URL有効性はスクリプトで検証済み。すべてのURLはアクセス可能。
判定基準まとめ
| 条件 | 結果 | 対処 |
|---|---|---|
| text一致 | valid | そのまま維持 |
| text不一致 + 正しい情報あり | corrected | textを修正 |
| text不一致 + 別ソースあり | replaced | source置換 |
| text不一致 + 新規検索で発見 | created | 新規作成 |
| 新規検索でも見つからない | empty | 空にする |
Phase 1: URL有効性チェック
目的
- JSONデータ内のすべての
sourceURLが有効(200応答)かを確認 - 無効なURL(404/403/タイムアウト等)を特定してデータから除去
実行方法
cd apps/web
node scripts/check-source-urls.mjs [クラブID]
# 例: 鹿島アントラーズのみ検証
node scripts/check-source-urls.mjs antlers
# 全クラブを検証
node scripts/check-source-urls.mjs --all
# 確認のみ(ファイル更新なし)
node scripts/check-source-urls.mjs --all --check-only
出力
- コンソール出力: 無効なURLのリスト
- 修正済みJSON: 無効なURLを含むitemsを削除した
data/comments/*.json - 検証レポート:
data/validation-report.json
Phase 2: 内容整合性検証
目的
- 有効なURLのコンテンツと
textの記述が整合しているか確認 - ソースURLで主張が裏付けられないtextを特定・修正
生成されるプロンプト
スクリプトが以下のレビュー用プロンプトを自動生成します:
# {クラブ名} ソース検証タスク
以下のデータについて、各itemの`source` URLにアクセスし、
`text`の内容が情報源で裏付けられているか確認してください。
## 検証ルール
1. **ソースにアクセス可能で、textと一致**: そのまま維持
2. **ソースにアクセス可能だが、textと不一致**:
- 正しい内容に修正
- または別の信頼できるソースを検索して置換
3. **ソースにアクセス不可**:
- 別のソースで同内容を確認できれば置換
- 確認できなければitem自体を削除
## 検証対象データ
| 年度 | 項目 | text | source |
|-----|------|------|--------|
| 2024 | sponsor | {text内容} | {URL} |
...
実行方法
- スクリプトでレビュープロンプトを生成
node scripts/generate-review-prompts.mjs antlers - 生成されたプロンプト(
content/2026-01-04/prompts/review-{clubId}.md)をDeep Researchに投入 - 返却されたJSONで
data/comments/{clubId}.jsonを更新
使用例
# 鹿島アントラーズのプロンプトを生成
node scripts/generate-review-prompts.mjs antlers
# 全クラブのプロンプトを生成
node scripts/generate-review-prompts.mjs --all
データ構造
検証対象のitems
{
"text": "説明テキスト(50〜100文字)",
"source": "https://example.com/article",
"sourceTitle": "記事タイトル(オプション)"
}
検証結果のステータス
| ステータス | 意味 | 対処 |
|---|---|---|
valid | URLアクセス可能&内容一致 | 維持 |
url_invalid | URLがアクセス不可 | 削除 or 再検索 |
content_mismatch | URL有効だがtext不一致 | 修正 or 再検索 |
source_missing | sourceが空 | 要調査 |
優先度
- 一次ソース優先
- クラブ公式サイト
- Jリーグ公式
- 決算資料・IR情報
- 二次ソース(一次が見つからない場合)
- スポーツ新聞報道
- 信頼できるニュースサイト
- 削除(どちらも見つからない場合)
- items配列から該当エントリを削除
- 無理にデータを入れない
関連ファイル
scripts/check-source-urls.mjs- URL有効性チェックスクリプトscripts/generate-review-prompts.mjs- レビュープロンプト生成スクリプトdata/comments/*.json- 検証対象データcontent/2026-01-04/prompts/- レビュープロンプト出力先