mcpField
R
report-card

report-card

github.com/serhiikorniienkoドキュメント16048 回インストール4 週間前に更新
リポジトリ

report-card について

report-card は Bullshit Detector の Markdown レポートを、スマートフォンでも読みやすい単一の HTML ページに変換します。Markdown を正本として保ち、描画前に tally.py でレポートを検証します。

主な機能

  1. 01Markdown レポートを単体 HTML に変換
  2. 02描画前に tally.py でレポートを検証
  3. 03スコア、判定フィルター、画面幅対応カードを追加
  4. 04印刷スタイルとリンクプレビュー用メタデータ
  5. 05ブラウザーでのローカル表示と静かな実行

活用シーン

  1. 01読みやすいファクトチェックレポートを共有
  2. 02リンク付きレポートを PDF として印刷
  3. 03問題のある主張や重要な主張だけを確認

インストール

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

$npx skills add https://github.com/serhiikorniienko/bullshit-detector --skill report-card

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

同梱ファイルscripts/render_report.pyVERSION

詳細

report-card

bs-report-<slug>-<date>.md を、誰でも開ける単一の HTML ファイルに変換します。

Markdown が成果物であり、今後も成果物であり続けます。tally.py がチェックし、後の実行結果との差分を取り、コミットするのもこのファイルです。このスキルは、同じファイルに閲覧者向けのビューを追加します。レンダリングするだけで、編集、再集計、追加は行いません。ページ上の数値はすべて、Markdown からそのままコピーされます。

これが必要な理由

BS レポートは、5 列の主張テーブルです。ノート PC なら問題ありません。共有リンクが実際に開かれるスマートフォンでは、Evidence 列が読めません。また、読者が最初に抱く疑問(「何がおかしいのか?」)に答えるには、重要な 2 行を見つけるために 20 行スクロールしなければなりません。

使い方

uv run <this-skill-dir>/scripts/render_report.py ~/.bullshit-detector/reports/<YYYY>/bs-report-<slug>-<date>.md

Markdown ファイルと同じ場所に bs-report-<slug>-<date>.html を書き出します。-o <path> を指定すると、別の場所に出力します。インストール手順も依存関係もありません。スクリプトは標準ライブラリのみを使用しており、通常の python3 と uv run のどちらでも実行できます。また、生成されるページはネットワークリクエストを一切行いません。この組み合わせにより、HTML だけがユーザーの持ち帰れる成果物となるコード実行サンドボックスでも動作します。

  • --open はページを既定のブラウザーで開きます。サンドボックスやヘッドレスホストなど、ブラウザーがない環境ではその旨を表示し、ファイルはそのまま書き出します。ページがすでに存在する場合はスキップされます。再レンダリングは通常の操作であり(最初の実行後に実行行を確定するため)、開くたびに新しいタブが作成されるためです。実際に 3 回連続で実行したところ、ユーザーには 2 つのタブが残りました。ファイルは同じ場所で更新されるため、開いているタブを再読み込みしてください。
  • --reopen は、ページがすでに存在していても開きます。後のセッションでレポートを再び確認する場合に使います。これを失敗として扱わないでください。
  • --quiet は、スクリプトから実行する場合に、出力パスのみを表示します。

引き継ぎブロック

既定では、スクリプトは検出器の実行を締めくくるブロックを表示します。

BS score 4/10 · Mostly fine
  the macro data is real and mostly checks out; the narrative glue is crypto-Twitter.
Tally: 35 claims extracted, 34 individually source-checked — 22 confirmed, 5 plausible,
  5 misleading, 2 false. 1 not checked.
run: 16m30s, searches 35, tools 65, coverage 1, per claim 29s

markdown  file:///Users/…/bs-report-japans-money-is-collapsing-2026-07-31.md
page      file:///Users/…/bs-report-japans-money-is-collapsing-2026-07-31.html
          opened in your browser

そのまま貼り付けてください。作り直さないでください。 すべての数値は、tally.py が直前に再集計したレポートから取得されています。自分が書いた内容を記憶から打ち直した要約は、実行結果を実際より良く見せる方向に間違えます。これは、集計や検索件数と同じ失敗パターンが、ひとつ上のレベルで起きたものです。

パスを file:// URL にしているのは意図的です。ターミナルでは URL をそのままリンクにできるため、どちらのファイルもコマンドキーをクリックするだけで開けます。~/… に短縮したり、リンクテキストの背後に隠したりしないでください。

コンプライアンスゲート

レンダリングの前に、スクリプトは検出器の tally.py でレポートをチェックし、チェックに失敗したレポートのレンダリングを拒否します。

REFUSED: bs-report-our-solar-system-2026-07-31.md does not pass tally.py.
  ✗ run line: 25 claims individually source-checked from 21 searches — every claim
    carrying a verdict needs its own search, so this reports more verification than
    was performed

終了コードは 3 です。これがゲートの目的です。計算に失敗したレポートから、これほど見栄えのするページを作ると、壊れたレポートが権威あるもののように見えてしまいます。ゲートが指摘した問題を修正し、再実行してください。

  • --force は、失敗内容を警告として表示しながらレンダリングします。
  • --no-check は、BS レポートではない Markdown のためにゲートをスキップします。
  • 自動検出できない場合は、--tally <path> または $BULLSHIT_DETECTOR_TALLY を指定します。

tally.py がインストールされていない場合、このスキルは検出器なしでもインストールできるため、スクリプトは警告を表示してレンダリングします。検証ツールがない場合は警告する理由にはなりますが、手元にあるレポートを誰かが見るのを止める理由にはなりません。

--og-image <absolute-url> を指定すると、リンクプレビュー画像を追加します。ページがどこかにホストされている場合にのみ役立つため、ローカルファイルでは省略してください。

ホストされたページのタグ

ホストされたページでは、スクリプトは <link rel="canonical">、Open Graph タグと Twitter カードタグ、 および Article 構造化データも出力します。そのためにはページの公開 URL が必要です。

  • --canonical <absolute-url> はその URL です。ページのアドレスが固定されている場合は、必ず渡してください。
  • 指定しない場合、ページには canonical も構造化データ内の url も含まれません。スクリプトが --og-image などから URL を推測することはありません。誤った canonical は検索エンジンに本当のアドレスを 誤って伝えるため、指定しないほうがましです。

--author <name> と --author-type Person|Organization は、Article の著者を設定します。このスキルは誰でも使えるため、 デフォルトはツール自体です。公開する際は、自分の名前を渡してください。

datePublished はレポート自体の **Checked:** 行から取得し、レンダリング時刻は使いません。先月行った作業に 今日の日付を付けるのは、この構造化データで絶対にしてはならないことです。そのため、日付を読み取れない場合は 日付を一切出力しません。

その後、ユーザーにファイルのパスと、どのブラウザーでも開けることを伝えてください。macOS では open <path> で開けます。

Markdown に加えてページに追加されるもの

  • スコアのヒーロー表示 — スコアをふさわしい大きさで表示し、RUBRIC の区分(Solid / Mostly fine / Hype-heavy / Mostly bullshit / Fabricated)に応じて色分けし、横に一行の判定を表示します。
  • 判定フィルターのチップ — Problems では❌と🟠のみを表示します。Load-bearing only では 付随的な表を非表示にします。これが、技術に詳しくない読者がレポートを最後まで読めるようにするための要点です。
  • 900px 未満ではカード形式の主張表示、それ以上では表形式で表示します。行、順序、テキストは同じです。
  • 印刷用スタイルシート — Cmd-P で、各リンクの後ろに URL を印字した見やすい PDF が作成されます。 印刷時はフィルターを意図的に無視します。フィルター適用済みの PDF は行がひそかに削除されたレポートになり、 このツールが絶対に生成してはならない成果物だからです。
  • リンクプレビュータグ — リンクを貼り付けると、URL だけではなく <title> — N/10 と判定の行が表示されます。

ルール

  • レポートを作り直さず、レンダリングしてください。 数値がおかしい場合は、Markdown に誤りがあります。そこで修正してから 再レンダリングしてください。HTML 内では決して修正しないでください。
  • 信頼できる情報源はあくまで Markdown です。 ファイルを渡す際は、そのことを伝えてください。HTML は表示用であり、 tally.py が検証したのは Markdown だけです。
  • 拒否を回避するために --force を使わないでください。 ゲートが示しているのは、レポートに実際にある欠陥です。 それを無視してレンダリングすると、元の内容以上に信頼できそうなページができてしまいます。これこそ、このツールが 検出するために作られた問題です。
  • 頼まれていないものは公開しないでください。 このツールは、未公開の草稿、内部文書、または内密に送られた資料にも使われます。 ローカルファイルへの書き込みは公開ではありません。インターネット上に掲載するかどうかは、レポートごとにユーザーが決めることです。
  • レンダラーは意図的に寛容です。スコアやバージョン表記がないレポートもレンダリングし、欠けている項目をページ上に示します。 これはビューアーの役割です。厳格なのは tally.py であり、両者の役割を入れ替えてはいけません。

既知の制限

  • 主張の表は | # | Claim | Type | Verdict | Evidence | の形式を維持する必要があります。レンダラーは # 列を使って 主張の表とそれ以外の表を見分け、判定の記号は行内の別の場所ではなく、必ず専用のセルから読み取ります。
  • どの言語のレポートも正しくレンダリングされます(システムフォントを使用し、Web フォントは同梱していません)。
  • 画像はここでは生成されません。SNS 用カルーセルは share にあります。

コメント