Communitygithub.com

gergobalogh/finding-video

調査結果を基にした短尺縦型動画(TikTok、Reels、Shorts)を作成します。データ、写真、衛星画像、メニュー、文書などの実素材を画面いっぱいに表示し、発見自体を主役に据えます。ユーザーのページへの誘導は動画の最後にのみ行います。

finding-video とは?

このスキルは、Webサイトの使い方を説明するのではなく、ユーザーが実際に「発見したもの」を価値として伝える短尺縦型動画(TikTok、リール、ショート)を制作するためのものです。価格差、都市の成長、驚きの数字など、データや実資料から得られた具体的なファクトを、フルフレームの素材で視覚的に訴えます。対応プラットフォームはClaude CodeなどのAIエージェント環境で、Pythonスクリプト(`frames.py`)やHTML+Playwright(`seek_capture.mjs`)を用いて動画をレンダリングします。ワークフローは「発見→素材確認→ストーリーチェック→ルックチェック→ストーリーボード→レンダリング→納品」の7ステップで構成され、各承認を経てから本レンダリングに進むことで品質を担保します。出力は1080×1920、30fpsのH.264+AAC形式で、Aカット(冒頭に質問/最初の画像→ループ)とBカット(いきなり結論から始まる)の2バージョンを提供します。音声合成による数字の誤読やAI生成映像の使用禁止など、細かな注意点も定義されています。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/gergobalogh/claude-skills/tree/HEAD/skills/finding-video

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

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

ドキュメント

Finding video(発見動画)

主役は発見であり、Webサイトではありません。動画はそれを証明する実素材を大きく鮮明に表示し、一つの要素を一定に保つことで変化を視聴者に気づかせ、最後に視聴者がコメントで答えるような質問で締めくくります。サイトは最後に、出典としてのみ表示されます。

この手法は、クルージュ・ナポカの衛星クリップ(同じ場所、1968年→2025年、フルフレーム画像、年ラベル、2行、サイトなし)から生まれました。サイトを歩き回るよりもはるかに効果的でした。

提供するもの

  • 2つのカット、1080×1920、30 fps、H.264 + AAC、15~25秒:Aは質問または最初の画像で始まりループします;Bは結論から始まります。両方のカバー画像も含みます。
  • post.txt:ファイルと仕様、投稿メモ、主張テーブル(画面上のすべての数字と行→そのソースファイルまたはURL)、画像クレジット、音源。投稿文はユーザーが依頼しない限り含めません(エージェントは投稿文を作成しません)。
  • 動画はリポジトリ外のフォルダ(~/Videos/<project>-finding-<date>/)に配置;ストーリーボード、スクリプト、素材の切り抜きはプロジェクトのreports/finding-<date>/に配置し、READMEも含めます:何があるか、メディアの場所、スクリプトの要件を記載します。
  • 投稿はユーザーの作業です:決して代わりに投稿しないでください。

ワークフロー:長時間レンダリング前の3回の簡易承認

  1. 発見。 プロジェクトのデータから2~4件の発見候補をリストアップし、それぞれに含まれる緊張感とその分母を記載します。引力(お金、街、共有の悩み)のあるものを選びます。すべての数字を、それを要約したページではなく、データそのものに対して検証します。
  2. 素材。 発見に対して、それを最も鮮明に示す実物を見つけます:保存されたメニューのキャプチャ、衛星画像、書類、写真、データそのものをグラフにしたもの。各ピースの権利を確認します(references/craft.md、素材の項を参照)。切り抜きはキャプチャしたままの状態を厳守:レタッチなし、価格の追記なし。
  3. ストーリーチェック(承認1)。 ビートテーブル:時間、フレームに表示するもの、キャプション、音、各ビートが主張する内容とその出典。定数(変化する間も変わらないもの)とデバイス(一文で言えるアイデア)を明記します。ユーザーの承諾または変更を待ちます。
  4. ルックチェック(承認2)。 ページの現在のデザインを使用:サイトのソースからその都度、色、書体、グラフのスタイルを読み取ります(ページはリデザインされるため、2026-11-06時点)。2~3フレームの実寸フレームをレンダリングし(frames.py --stills、またはseek_capture.mjs ... stills)、表示します。フレームごとに承認を待ちます。
  5. ストーリーボード(承認3)。 scripts/storyboard.pyで描画します:ビートごとに1つのキーフレームを実寸比率で、時間、音、次のビートへのトランジションを記載します。表示して承認を待ちます。ユーザーがこのチェックを依頼しています:これ以前に動画をレンダリングしてはいけません(2026-11-06)。
  6. ビルド。 レンダリング後、以下のチェックを実行し、すべてのシートを自分で確認します。
  7. 納品。 post.txt、ボードを提出し、確認できなかったこと(最低でも耳で音を確認)、および2秒間のホールド、視聴時間、コメントが本当の評価であることをユーザーに伝えます。

承認は、ユーザーがこの動画についてスキップすると明示した場合のみスキップします。

レンダラー

素材に応じて選択;すべて1080×1920のPNGフレームを書き出し、tv-range BT.709 yuv420pでエンコードします。

素材レンダラー方法
写真、スキャン、衛星画像、書類の切り抜きscripts/frames.py(衛星クリップから)Pythonのframe_fn(t)でフルフレーム画像を合成、キャプションの背後にshade_top、キャプション用にoverlay/text、音声イベント用にsynth;render()でエンコード
グラフや動く数字window.seek(t)を使用するHTMLページ(以下のグラフ方法)+ scripts/seek_capture.mjsnode seek_capture.mjs <page.html> <out> stillsでチェック用フレーム、その後動画用フレームを取得;frames.encodeと同様にffmpegでエンコード
イラストシーン(雰囲気、比喩)オプション:cth9191/animate(MIT)、サードパーティスキルインストール前に確認すること

グラフ方法(charlie947/motion-graphics-skills animated-chart、MITより):4つの状態——開始、1回の変化(何もフェードアウトして置き換わらない)、見出しの値がラベル付けされたホールド、ループにジャンプがないように戻る。すべてのフレームはtのみから計算されます。タイトル、ラベル、軸は決して動きません。数字を丸めたり、再フォーマットしたり、追加したりしてはいけません。ビルド後、0、1、2、4、7秒のフレームをキャプチャし、重なりや途切れたテキストがないか動画前に確認します。

frames.pyにはnumpyとPillow、seek_capture.mjsにはPlaywright(解決できない場合はPLAYWRIGHT=をそのnode_modules/playwrightに設定)、そしてffmpegが必要です。

チェック

  • python3 ../demo-video/scripts/check.py <出力ディレクトリ> --name <名前>(このスキルのフォルダから実行)(カットを<名前>-A.mp4 / <名前>-B.mp4と命名):サイズ、フレームレート、色、ラウドネス、ループSSIM、セーフゾーン、コンタクトシート。結果を報告し、失敗はしません:すべての行を読み、各数字を自分で目標値と照合してください。
  • セーフゾーンシートを確認:キャプション、数字、ソース行が赤線の下にないことを確認。
  • コンタクトシートで、すべてのキャプションをスマホサイズ(幅360px)で読んで確認。
  • 各メインビートの主役を特定し、それがフレーム高さの少なくとも40%を占めているか確認。またターン(references/craft.md参照)を特定。該当しないビートを指摘。
  • 主張テーブル:画面上のすべての数字がファイルにトレース可能;すべての比較がその基準(どのピザか、どの日付か、いくつか)を記載。
  • 音をビートごとに測定、全帯域と250Hz以上(スマホスピーカーで再生される帯域)の両方で。ペイオフが両方で最も大きいはずであり、無音に近い部分は静かであるべき。可能なら一度聴く;そうでなければ聴いていないと伝える。frames.mixを使ってペイオフに独自のレベルを与え、その後frames.levelで調整;ピザのパイロット版では、古いコンプレッサーがヒット音よりもハム音を大きくしてしまった。

注意点

  • 数字の横にあるキャプションはその単位を継承します。 「4 lei」の下にある「最大の差」はleiと読まれます;「în procente」と書くか、キャプションを削除してください。(Trepontiはパーセントで最大、La Crostaはleiで最大でした。)

  • アプリの商品写真やUIを再利用しないでください(WoltとGlovoの利用規約は画像権利を留保しています)。リスティングを自分のニュートラルなカードに転記し、日付を記載するか、証拠として必要なテキストのみを切り抜き、出典を明記してください。

  • 実際の場所や実際の価格に関する動画では、AI生成映像は使用しないでください;作為的に見えます。雰囲気は、ユーザー自身の映像、パブリックドメインのアーカイブ(各アイテムの権利を確認)、または明確なイラストスタイルから提供します。

  • ElevenLabsの「Chris」はルーマニア語の数字を誤ります、数字で書いても同様です(ピザ動画で49と67、許可証動画で88、2026-11-06時点)。文字起こしでは検出されません。すべての話される数字を試聴し、ミキシング前にユーザーに聞いてもらってください。

  • 投稿前に、ページが公開されていること、およびデータが変更された場合は数字を再確認する必要があります。

  • 合成音声は数字を誤読し、文字起こしでは検出されません。 綴りで「optzeci」と書くと「opt zece」と発音され、文字起こしはまだ「Optzeci」と表示し、数字を使ったテイクは正しかった。同じ数字の次のテイクは再び間違っていたため、生成にはばらつきがあります:ユーザーがテイクを承認したら、そのオーディオをスプライスし、再生成しないでください。発音を確認できるのは人間の耳だけです(2026-11-06)。

ルールの出典

references/craft.mdにクラフトが含まれています:発見ビートシート、ストーリールール、キャプション、素材と権利、音。出典:クルージュ・ナポカの衛星画像クリップ(2026-11-03)、demo-videoのクラフトノート、cth9191/animateのストーリー文法(MIT)、charlie947のanimated-chartとvox-explainerルール(MIT)、StewdioAI/blank-pageのフレームとターンのルール(MIT)、およびCodex相談(2026-11-04)。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル