Communitygithub.com

liwoo/evidence-explainer

ボイスメモや音声クリップ(カメラ映像不要)から、TikTok / Reels / Shorts 向けの約1分の縦型説明動画を生成します。話者の主張を証明するため、実際のWebサイトのスクリーンショットを該当行にズーム&ハイライト表示し、企業ロゴをカメラクリック風にスタンプ、専門用語には平易な解説カードを表示します。

evidence-explainer とは?

このスキルは、音声メモやポッドキャストの一部、MP3/M4Aファイルなどの音声録音を、証拠(レシート)付きの約1分の縦型動画(TikTok / Reels / Shorts)に変換します。ユーザーが「音声から動画を作って」「証拠やソースを表示して」「初心者にもわかるように説明して」と依頼した場合に特に役立ちます。 まず音声を文字起こしし、スクリプト(台本)を生成。スクリプト内の主張ごとに、該当するWebページのスクリーンショットを自動取得し、証拠となる行にズーム&ハイライトを施します。企業ロゴはカメラシャッター音とともにスタンプ表示され、専門用語には簡潔な解説カードが表示されます。成功した取引ステップでは「カチン」という効果音と緑の✓マークが表示され、視聴者の理解を助けます。動画はフルHD(1080×1920)で出力され、字幕は画面下部に固定表示され、TikTokのUI要素と重ならないよう設計されています。 このスキルはClaude Code(CLIエージェント)向けに設計されており、ffmpeg、Python 3、Node.js 20+、Chrome、Playwright、whisper.cppなどのツールチェーンを使用します。セットアップスクリプトにより依存関係が自動インストールされ、処理フローはスクリプト作成→音声カット→証拠取得→タイムライン編集→効果音追加→プレビュー→レンダリング→検証の7段階で進行します。各段階には詳細なリファレンスがあり、ユーザーは確認ポイントで承認を行うことができます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liwoo/evidence-explainer/tree/HEAD

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

エビデンスエクスプレーナー(ボイスメモ → レシート付き1分縦型動画)

「マラウイ人がフォレックスなしでVisaカードを入手する方法」(2026年11月11日)を基に構築:4分15秒のAndroidボイスメモ → 60.4秒のTikTok動画、10枚のWebページ証拠、Bridge独自のアーキテクチャ図、9つのロゴ、4つの「カチン」効果音。動作例は assets/examples/visa-cards/(スクリプト+一般向けチェック、カットリスト、撮影ジョブ、完全な video.json、投稿文、コンタクトシート)にあります。

ボイスメモ ─► 文字起こし+アイランド ─► スクリプト+一般向けチェック(確認ポイント) ─► 音声カット(確認済みエッジ) ─► テンポ+単語
                                        │
                                        └► 証拠:対象矩形付きスクリーンショット・ロゴ・ドキュメントからの図
                                                                    │
                       video.json タイムライン(シーン、ズーム、スタンプ、用語解説、カチン、図のステップ)
                                                                    │
                                  効果音+静かなBGM+ミックス ─► セーフゾーン付き静止画 ─► レンダリング ─► 検証

セットアップ

SK=~/.claude/skills/evidence-explainer
zsh $SK/scripts/new_explainer.sh "<音声ファイル>" .context/<スラッグ>     # 約1〜3分;空きディスク容量を表示
cd .context/<スラッグ>                                                   # 以降すべてのスクリプトはここから実行(重要)

必要なもの:ffmpeg、Python 3(+ numpy + Pillow)、Node.js 20+、Chrome(Playwrightはインストール済みのChromeを使用)、whisper.cpp + ggml-medium.en.bin(~/.cache/whisper.cpp に配置;scripts/setup_whisper.sh でビルド;WHISPER_DIR で上書き可能)。scaffoldは remotion/ で npm i を実行、または EXPLAINER_NODE_MODULES が既存の node_modules を指している場合はそれをクローンします(APFSのコピーオンライト、約0バイト)。ルック=「開発モード」(src/brand.ts:ドットグリッド、Space Monoフォント、シアン/イエロー/アンバー色);ハンドル/サイトは video.json から取得。

各ステージ(該当箇所に来たらリファレンスを読んでください)

#ステージ読むべきリファレンスツール
1sent.txt からビートをスクリプト化し、一般向けチェックを実行references/01-script-and-lay-check.md—
2音声を確認済みエッジで60秒以下にカット、テンポ調整、字幕生成references/02-voice-cut.mdislands_labels.txt、dips.py、tx.sh、cut.py、voice.sh、words.py
3証拠:対象矩形付きスクリーンショット、ロゴ、ドキュメントの図references/03-evidence.mdshoot.mjs、logo_tools.py、logo.mjs、register_image.py
4remotion/src/video.json タイムラインreferences/04-video-json.mdエンジン src/Explainer.tsx
5サウンド:クリック、カチン、静かなBGM、ミックスreferences/05-sound.mdsfx_mix.py、score.py
6TikTokセーフゾーン付きプレビュー、レンダリング、検証references/06-render-verify.mdremotion/stills.mjs、sheet.py、verify.sh

スクリプトが確定した後のクイックパス:

python3 $SK/scripts/cut.py cut.json && zsh $SK/scripts/voice.sh 1.18 "名前、ブランド、専門用語"
python3 $SK/scripts/words.py word_fixes.json
node $SK/scripts/shoot.mjs shoot_jobs.json shots && cp shots/*.png remotion/public/shots/ && cp shots/shots.json remotion/src/shots.json
python3 $SK/scripts/logo_tools.py sync                      # ロゴ取得後
# remotion/src/video.json を書き込み、その後:
python3 $SK/scripts/sfx_mix.py path/to/music.mp3          # または `none`
(cd remotion && npx tsc -p . && node stills.mjs 45,300,...) && python3 $SK/scripts/sheet.py stills --zones
(cd remotion && npx remotion render src/index.ts Explainer ../out/<スラッグ>.mp4 --codec=h264 --crf=18 --audio-codec=aac --audio-bitrate=192k)
zsh $SK/scripts/verify.sh out/<スラッグ>.mp4

60秒のフルレンダリングには約40秒、静止画はバンドル後1枚あたり約1秒かかります。

ハウススタイル(初回動画のクリエイターレビューに基づく。指示がない限りこれを維持)

  • フルスクリーンBロール。 スクリーンショットは1080×1920フレームを埋め尽くします(ブラウザカードなし);カメラは広角でスタートし、主張を証明する行にズームし、ハイライターでなぞります。左上に細い https://domain ピルと黄色の // evidence: … タグを配置。
  • ロゴはカメラシャッター音とともに表示(白カード、わずかな傾き、スケールダウンポップ、白フラッシュ)。可能な限り多く表示する:登場するすべての企業名のロゴを1回ずつ。
  • 成功した取引ごとに「カチン」効果音(アカウント作成、入金、ウォレットチャージ、支払い承認)と緑の✓チップ+リング。
  • 一般向けアーキテクチャ。 1つの図(あなた → アプリ → インフラ → カード)に、ノード内にロゴを配置し、ステップごとに構築(「ステップ1・サインアップ」…)、ノード間をラベル付きパケットが移動。プロバイダ自身の開発者向け図は平易な英語のボックスにズームした部分のみ表示し、全体は表示しない。
  • スクリプトを書いた後は自問する:これは製品を使う一般ユーザーにとって理解を助けるか、混乱させるか? 「混乱させる」箇所はすべて構築前に修正(用語解説カード、よりシンプルなラベル、コード風スタイルは不使用)。チェック結果はスクリプトファイルとサマリーに記載。
  • 字幕は下部に固定:ボックスの下端はフレーム下端から400px(ちょうどTikTokのユーザー名/キャプションブロックの上)、2行ページは上方向に拡大、右のアクションレールを避けてパディング。
  • 最初にフック(大きなドットマトリックス文字+視聴者の疑問を最初の証拠上に、ぼかし付きで表示)、最後にフォローCTA(ロゴチェーン要約、FOLLOW、ハンドル、ボタン、サイト)。
  • BGMは静かなもの(score.py BASE −26 LUFS):派手でドラマチックなスコアは「うるさすぎて邪魔」と判定。

確認ポイント(推奨付きで停止して確認)

  1. スクリプト+一般向けチェック:何かをカットする前に。ビート表(話者の発言 → 画面表示)と混乱/明確化表。
  2. 検証できない主張(例:「アプリXはプロバイダYを使用」):話者の言葉のまま維持し、画面上のラベルは「例」「一例」と表記し、フラグを立てる。
  3. レンダリング前:--zones 付きで新しい要素すべての静止画を確認。
  4. 公開前:ロゴライセンス(CC BY/BY-SAはクレジット行が必要)、控えめな主張(「可能性が高い」を表示維持)、Whisperが聞き間違えた名前(キャプションは正しいスペルを使用、話者の発音がおかしくても)。公開は依頼があった場合のみ。

動作原則

  • 主張より証拠:事実に基づくビートごとに、それを示すページをライブキャプチャし、該当行にズーム。ブログより一次情報源(企業ニュースルーム、公式ドキュメント、規制当局/中央銀行、アプリのストアページ)を優先。ページが言及していないこと(Bridgeの国別テーブル=オンボーディング可能な国、カード利用可否ではない)に注意し、適切にラベル付け。
  • 確認済みエッジでのみカット:エネルギーアイランド+二分されたディップ(tx.sh)を使用。Whisperの単語タイミングは使用しない(電話音声では最大数秒ずれる)。最終カットとレンダリングの再文字起こしを実施。
  • 用語解説は短く具体的に:「ステーブルコイン=デジタルドル、1 USDC ≈ 1ドル」、「KYC=本人確認・セルフィー確認」、「API=Xを使えるようにする接続口」。
  • ズーム制限:1200pxのモバイルスクリーンショットは ズーム1.0 でフレームを埋める(既に各辺約36pxクロップ済み);段落は1.3以下、短いターゲット(コード行、テーブル行)は1.8〜2.0。ハイライト単語と重要な列(例:通貨)がフレーム内に収まることを確認。
  • 検証して報告:長さ(動画と音声)、−14 LUFS / ピーク≤−1、レンダリングの完全な文字起こし、音声より+5 dB以上のカチン音、確認したコンタクトシート。音楽は視聴せずにタグで選択した理由を説明。

最終サマリー形式

出力ファイルパス+長さ;コンタクトシート画像;画面のビートごとの内容(簡潔);一般向けチェックの評価;「投稿前確認事項」(未検証の主張、ライセンス、控えめ表現、聞き間違え名);管理情報(作業ディレクトリ、ディスク容量、再レンダリングコスト、編集すべきファイル)。

関連スキル