citation-fixer について
citation-fixer は、brain ページの出典表記を監査・修正するスキルです。不足や形式不備を指摘し、URL のない投稿参照には X API を使ってリンクを特定できます。
主な機能
- 01ページの出典表記をスキャン
- 02出典の不足箇所を特定
- 03形式不備の出典を修正
- 04X API による URL のない投稿参照の解決
- 05スキャン・修正・未解決件数の報告
活用シーン
- 01brain ページ全体の出典監査
- 02日付や出典種別が欠けた引用の修正
- 03URL のない投稿参照の確定リンク検索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ garrytan/ gbrain --skill citation-fixerインストール後、Claude Code で/citation-fixerを入力して読み込まれたか確認します。
同梱ファイルrouting-eval.jsonl
詳細
Citation Fixer Skill
規約: すべての修正で準拠すべき正規の引用形式については、conventions/quality.md を参照してください。
出力ルール: すべてのリンクは決定論的でなければなりません(LLM が組み立てるのではなく、API データから構築します)。_output-rules.md を参照してください。
契約
このスキルでは、以下を保証します。
- すべての brain ページをスキャンし、引用の準拠状況を確認します。
- 引用がない場合は、具体的な場所とともに指摘します。
- 不正な形式の引用を標準形式に合わせて修正します。
- (v0.25.1) URL のないツイート/投稿の参照を X API 経由で解決し、決定論的な
https://x.com/<handle>/status/<id>リンクを追加します。 - スキャン数、修正数、残件数を含めて結果を報告します。
フェーズ
- ページをスキャンします。 ページを列挙してそれぞれを読み、インラインの
[Source: ...]引用があるか確認します。 - 問題を特定します。
- 引用のない事実
- 日付が抜けている引用
- ソースタイプが抜けている引用
- 形式が正しくない引用
- (v0.25.1)
x.comURL のないツイートの参照
- 形式の問題を修正します。 不正な形式の引用を
conventions/quality.mdに準拠するように書き換えます。 - (v0.25.1) ツイートの参照を解決します。 X API 統合を介して解決します。
- 結果を報告します。 ページのスキャン数、見つかった引用数、修正した問題数、解決したツイート数、残っている不備を集計します。
ツイート解決パイプライン(v0.25.1 拡張)
リンク切れのツイート参照ごとに、以下の手順に従います。実際の API 呼び出しは、ホストで設定されている X 統合を介して行います(一般的な形式は、handle/search-all エンドポイントを含む recipes/x-api/ 配下のレシピです)。
ステップ 1:リンク切れの参照を特定する
ページをスキャンし、URL のないツイート参照を示すパターンを探します。
tweeted、posted、said on X、RT、retweet、X postなどの語を含む- ツイートのように見える引用文を含む(短く印象的で、引用符から始まることが多い)
[Source: ... X/Twitter ...]はあるが、x.comURL がない- リンクなしでエンゲージメント指標(いいね数、インプレッション数)に言及している
ステップ 2:検索可能な内容を抽出する
リンク切れの参照ごとに、以下を抽出します。
- ハンドル(記載されている場合:
@<username>) - 引用文(利用できる場合)
- おおよその日付(周辺のタイムライン項目に記載されていることがよくあります)
ステップ 3:実際のツイートを検索する
ホストの X API 統合を使用します。検索クエリの形式:
# Handle + quoted text:
from:<handle> "<exact quote fragment>"
# Quoted text only:
"<exact quote fragment>"
# Original of a retweet:
"<exact quote>" -is:retweet
ステップ 4:検証してメタデータを抽出する
候補が見つかったら、以下を行います。
- テキストが引用された断片と一致することを確認します。
- ツイート ID、投稿者のハンドル、エンゲージメント指標(いいね数/RT 数/インプレッション数)を取得します。
- URL を構築します:
https://x.com/<handle>/status/<tweet_id>。
ステップ 5:brain ページに反映する
リンク切れの引用を、適切な引用に置き換えます。
変更前:
"<quote fragment>" [Source: <some hand-wavy attribution>]
変更後:
"<full verified quote>" — <N> likes, <N> RTs, <N> impressions
[Source: [X/<handle>, YYYY-MM-DD](https://x.com/<handle>/status/<tweet_id>)]
一括モード
多数のページを確認する場合:
対象ページを見つける
# Pages mentioning tweets but with no x.com links
for f in $(find . -name "*.md" -not -path "./node_modules/*"); do
refs=$(grep -ci "tweet\|posted\|x post\|RT\|retweet\|said on X" "$f")
links=$(grep -c "x.com/.*/status/" "$f")
if [ "$refs" -gt 2 ] && [ "$links" -eq 0 ]; then
echo "$f"
fi
done
優先順位
- 最近作成/更新されたページ — 新しいリンク切れの参照は、文脈が新しいうちに解決するのが最も簡単です。
- アクセス頻度の高いページ(他のスキルから頻繁に読み書きされるページ)。
- その他すべて — 時間をかけて一括で整理します。
レート制限
- X API:ホストのプラン上限を守り、過剰な呼び出しを行わないでください。
- 1 回のバッチ実行につき約 50 ページを目標にします。
- 1 ページあたり 1~3 回の API 呼び出し(検索+検証)。
- 10~20 ページごとにバッチコミットし、途中で失敗しても進捗が失われないようにします。
出力形式
Citation Audit Report
=====================
Pages scanned: N
Citations found: N
Issues fixed: N
Tweet links resolved: N
Remaining gaps: N (pages with uncitable facts)
失敗した場合
gbrain のエラー code、終了コード、[AGENT] ブロック、または notice ブロックが発生した場合は、エージェント運用者プロトコルに従ってください。このスキル固有の対応:
put_pageがバッチ処理の途中でrevision_conflictを返した場合:そのページを再読み込みし、引用の修正だけを再適用して続行します。以前読み込んだ内容で上書きしてはいけません。- 引用元に対する
get_pageがpage_not_foundを返した場合:推測したスラッグに書き換えず、レポートでその引用を解決不能として記録します。 - バッチコミットが中断された場合:コミット済みのページは修正済みのままです。最初からやり直さず、最後にコミットしたページから再開します。
アンチパターン
- ❌ 出典のない事実について、引用を捏造しないでください。フラグを付けてください。
- ❌ 引用のない事実を削除しないでください(フラグを付け、削除しないでください)。
- ❌ ページ全体の文脈を読まずに引用を修正しないでください。
- ❌ まずサンプルで品質を確認せずに、一括修正しないでください
(
conventions/test-before-bulk.mdを参照)。 - ❌ ツイートIDを推測してツイートのURLを組み立てないでください。必ず X APIを使用してください。リンクは決定的に生成してください。
統合
このスキルは、次の方法で呼び出せます。
- 手動 — 「このページの引用を修正して」
- バッチ cron として — リファレンスが壊れているページを毎週チェック
- 他のスキルから —
enrichまたはmedia-ingestは、出力を検証するため、コミット前にcitation-fixerを呼び出せます
メトリクス
定期的なバッチとして実行する場合は、~/.gbrain/citation-fixer-state.jsonの下に小さなJSONファイルを作成し、状態を追跡してください。
{
"last_run": "2026-04-15T...",
"pages_scanned": 0,
"citations_fixed": 0,
"tweet_links_resolved": 0,
"citations_unresolvable": 0,
"pages_remaining": 1424
}
出力形式
スキルの出力形式は、上記の本文セクション(「出力」、「Brainページ形式」など)に記載されています。ここに記載されているセクション見出しは、準拠テスト(test/skills-conformance.test.ts)のために存在します。