• #データ検証
  • #品質管理
  • #Jリーグ
  • #財務分析

JSONデータのソースURL検証ワークフロー

data/comments/*.json に格納されている財務コメントデータの品質を確保するための検証プロセス。

全体フロー

スクリプト構成

スクリプト役割
check-source-urls.mjsURL有効性チェック(無効なURLを削除)
generate-review-prompts.mjsレビュープロンプト生成

各itemの検証ロジック(Deep Research用)

※ URL有効性はスクリプトで検証済み。すべてのURLはアクセス可能。

判定基準まとめ

条件結果対処
text一致validそのまま維持
text不一致 + 正しい情報ありcorrectedtextを修正
text不一致 + 別ソースありreplacedsource置換
text不一致 + 新規検索で発見created新規作成
新規検索でも見つからないempty空にする

Phase 1: URL有効性チェック

目的

  • JSONデータ内のすべてのsource URLが有効(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

出力

  1. コンソール出力: 無効なURLのリスト
  2. 修正済みJSON: 無効なURLを含むitemsを削除したdata/comments/*.json
  3. 検証レポート: 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} |
...

実行方法

  1. スクリプトでレビュープロンプトを生成
    node scripts/generate-review-prompts.mjs antlers
    
  2. 生成されたプロンプト(content/2026-01-04/prompts/review-{clubId}.md)をDeep Researchに投入
  3. 返却された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": "記事タイトル(オプション)"
}

検証結果のステータス

ステータス意味対処
validURLアクセス可能&内容一致維持
url_invalidURLがアクセス不可削除 or 再検索
content_mismatchURL有効だがtext不一致修正 or 再検索
source_missingsourceが空要調査

優先度

  1. 一次ソース優先
    • クラブ公式サイト
    • Jリーグ公式
    • 決算資料・IR情報
  2. 二次ソース(一次が見つからない場合)
    • スポーツ新聞報道
    • 信頼できるニュースサイト
  3. 削除(どちらも見つからない場合)
    • items配列から該当エントリを削除
    • 無理にデータを入れない

関連ファイル

  • scripts/check-source-urls.mjs - URL有効性チェックスクリプト
  • scripts/generate-review-prompts.mjs - レビュープロンプト生成スクリプト
  • data/comments/*.json - 検証対象データ
  • content/2026-01-04/prompts/ - レビュープロンプト出力先