Communitygithub.com

GuilhermeGongora/VideoEditor

縦型教育動画(Shorts/TikTok/Reels)を3DクリーンなScientiaチャンネルスタイルで完全作成します。テーマを調査し、脚本を書き、ナレーションを生成し、Remotion + Three.jsで3Dシーンを構築し、2つのサムネイルを作成、レンダリング、レビューまで行います。ユーザーが「6x1を説明して」「〇〇についての動画を作って」と言ったときや「/novo-explicativo」と入力したときに使います。

VideoEditor とは?

このスキルは、Scientiaチャンネルスタイルの縦型教育動画(Shorts/TikTok/Reels)を完全自動生成するClaude Code用エキスパートアシスタントです。ユーザーがテーマを入力するだけで、以下の全工程を自動実行します:Web検索による最新情報の調査、約60秒・7シーンの台本作成(フックとなる質問から始まり、論理的な流れで説明)、edge-ttsやKokoroを使ったナレーション生成、Remotion + Three.jsによる3Dシーンの構築、2つのサムネイル作成、最終レンダリング、そしてGoogle Driveへの自動アップロードまで行います。品質基準は特定のリファレンス動画(「Aproximacao.tsx」スタイル)に準拠し、灰色の背景や抽象的なブロックは使いません。各シーンにはテーマに沿った具体的な3Dオブジェクト(例:機械+カード)を配置し、抽象的なブロックよりも現実世界の文脈を重視します。台本は短い文(6~14語)で構成され、声に抑揚をつけるため2~3シーンごとに修辞疑問を入れ、最終シーンではフックへの具体的な回答で締めくくります。Claude Codeエージェントとして、ユーザーが「説明して」などと自然言語で依頼するだけで起動します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GuilhermeGongora/VideoEditor/tree/HEAD/.claude/skills/novo-explicativo

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

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

ドキュメント

3D解説動画

完全納品(ユーザーからの追加指示不要): out/<slug>.mp4(ブランドのエンディングで終了)+ thumbs/<slug>-1.png および -2.png + out/<slug>-legenda.txt(出典・ハッシュタグ付き投稿キャプション)。 ユーザーのPC上で npm run explicar を実行すると、すべての成果物がGoogle Driveにコピーされます(G:\My Drive\Scientia\Posts\<日付> · <slug> · <タイトル>\: video.mp4, thumb-1/2.png, legenda.txt, fontes.txt)。 「ドライブが見つかりません」と表示された場合は、スクリプトが出力するマウントコマンドをユーザーに提示してください。 ユーザーはテーマを入力するだけです。自分で判断できることは途中で質問して止まらないでください。

品質リファレンス(ユーザー決定、2026年10月16日):非接触決済カードの動画。 videos/aproximacao/roteiro.json + src/explicativo/videos/Aproximacao.tsx。開始前に両方を読み、references/referencia.md のレシピをコピーしてください。「ルディフィカンド標準」(灰色の背景・棚・ぼかし・多数のフィギュア・80~90秒)で作成された動画は不採用です。それに戻らないでください。 次に、references/ganchos.md(台本の前に)、references/estilo.md + references/biblioteca.md(シーンの前に)を読んでください。references/ludificando.md はアイデアのソースとしてのみ使用し、ルールではありません。

1. 調査(必須)

  • 現在の情報(法律、数字、役職、期限)はすべて、今現在Web検索で入手した2つ以上の信頼できるソース(Agência Brasil、Senado/Câmara、IBGE、g1、Folhaなど)に基づきます。記憶から数字を出さないでください。
  • 台本の fontes に出典を記録してください。ソース間で矛盾がある場合は、最も公式なものを使用し、その旨を明記してください。
  • 事実と予測/意見(「DIEESEは…と試算」「CNIは…と述べている」)を区別してください。

2. 台本 → videos/<slug>/roteiro.json

「近接」レシピ: 約60秒、7シーン、シーンあたり18~30語(合計約170~190語)、シーンごとに1つのアイデア、論理的な順序で説明(各シーンが次へつながる:「だから…」「そこで…」「もし誰かが…」)。chip = 章の短い名前を大文字で(「エネルギー」「すぐ近く」「もしコピーされたら?」)。

  • フック = 強い数字+質問(「4回の買い物のうち3回は…では、電池のないカードがどうやって支払いできるのでしょう?」)。最終シーン = 視聴者が持ち帰る実用的な情報(例:暗証番号なしの限度額)。
  • 「両方の側面」と「注意/詐欺」は、テーマがそれを必要とする場合(実際の論争、実際の詐欺)にのみ入れてください。必須ではありません。
  • 最初の文 = フック。常に質問(ユーザーのルール)で、視聴者が答えを知りたくなるもので、その中または直後に強い事実を入れます。例:「電池のないカードがどうやって支払いできるのでしょう?」。「こんにちは」は禁止。
  • 友達に話すように短い文で。数字は数字で書く(「75票」)。
  • 音声が読み間違える可能性があるもの(略語、「6x1」、小数「26,8」)には pronuncia を使用。
  • 最終シーン:クロージング — フックの質問に対する最終的な実用的な情報/答え。 禁止(ユーザーのルール): コメント、いいね、「保存」「フォロー」「〇〇とコメントして送ります…」の呼びかけ — 音声でも画面でも禁止。出典は投稿の説明のみに記載します。最後の台詞の後は、ブランドのエンディング(自動)のみです。
  • 6~14語の文。落ち着いて話す(ナレーションは一文ごとで、カンマとピリオドごとにポーズを置く)。
  • 台本に cta はありません:エンディングではブランドのみ表示されます。
  • sons:デフォルトで、最初のフレームにインパクト、シーン切り替え時にスウッシュ/ウーッシュ、数字カードに「ポップ」、注釈/ピルに「チック」、エンディングに入るところで上昇音が自動設定されます。背景音楽なし(リファレンスにはありません。「ユーザーがリクエストした場合のみ "musica": "sfx/bed-scientia.mp3" でオンにします)。 キーワードに2~3個の acentos を控えめに記述します: "sons": {"acentos": [{"palavra": "75", "cena": "aprovado", "som": "sfx/ding.wav", "volume": 0.5}、 {"palavra": "desliga", "cena": "liga", "som": "sfx/boom.wav", "volume": 0.5}、 {"palavra": "relógio", "cena": "agora", "som": "sfx/riser.wav", "pico": 1.49, "volume": 0.35}]}。 すぐに使えるサウンドは public/sfx/ にあります:boom(衝撃)、ding(数字/暴露)、pop(パチッ)、riser(サスペンス、pico を使用)、whoosh/swoosh。palavra は fala に書かれている単語です(pronuncia ではありません)。 任意のサウンドをユーザーのライブラリ(public/soundeffects/catalog.md)のものに交換できます — musica、transicao(リストを交互に)、aparecer、dado、abertura、final;null でオフ。
  • composicao = コンポーネント名(例:Escala6x1)。
  • marca = "SCIENTIA · <短いテーマ>"(チャンネル名はScientia)。
  • voz = { "principal": "masculina", "alternar": "nao" } — 台本に velocidade を入れないでください(voz.json から来ます。現在は1.08)。
  • post = Instagram/TikTokのキャプション(out/<slug>-legenda.txt になります): { "gancho": "<強い事実+質問> 📌", "pontos": [3つの短い文、ピリオドなし、数字を含む]、 "fontes": ["Agência Senado", "IBGE", …名前のみ]、 "hashtags": ["tema", "assunto", …最大5つ、#なし] } (#scientia は自動追加)。動画と同じトーン:視聴者にとって何が変わるか、意見はなし。絵文字は最大1つ。
  • thumb = 動画のサムネイル(ステップ6を参照):{ "titulos": [2つのオプション], "cena": "<背景シーンのID>", "quadro": <シーンのフレーム>, "descer": 330, "zoom": 1.45 }。

3. ナレーション

npm run narrar -- <slug> → public/explicativo/<slug>/narracao.wav + tempos.json(各単語のタイミング、音声そのものから取得)。edge-tts(インターネット接続が必要)によるニューラル音声。インターネットがない場合はローカルのKokoro音声にフォールバック。 チャンネルの音声は voz.json(エンジン、ユーザーが選択した音声、速度)にあります。自分で音声、エンジン、IDを選択または変更しないでください — それはユーザーの好みです。台本の voz フィールドでは以下のみを定義します:

  • "principal": "masculina" — 常に。承認済みのチャンネル音声はAntonio(Microsoft)で、6x1と非接触決済の動画で使用されています。女性のThalita Multilingualはポルトガルのポルトガル語のように聞こえたため(投票箱の動画)、除外されました。「Multilingual」音声は絶対に使用しないでください。女性音声はユーザーがリクエストした場合のみ使用します。
  • "alternar": "cenas" — シーンが2つの音声を交互に使用します(二重音声)。デフォルト:"nao"。
  • ユーザーが音声について不満を言った場合:npm run vozes(Microsoft)/ npm run vozes -- eleven と npm run vozes -- usar <id> feminina|masculina を表示します。
  • 聞き手に合わせて台詞を書きましょう — これが合成音声の抑揚を最も変えます:
    • 短い文(6~14語)、息継ぎのためのカンマ、括弧や pronuncia なしの略語は避ける。
    • 2~3シーンごとに修辞疑問(「もう支払った人は?」)— 音声が「?」で上がり、生き生きとする。
    • 対比と転換:「ところが…」「しかし注意:」「さらに:」
    • 重要な数字は文末に単独で(「75対1で可決。」)または繰り返して(「11日間!」)。
    • カンマが多く4つ以上の項目がある長い文は避ける(音声が単調になる)。
  • デフォルトのナレーションはリファレンスと同じです:一文ごと、カンマで0.12秒、ピリオドで0.32秒、シーン間で0.45秒のポーズ、Antonio 1.08。ユーザーがリクエストしない限り、"estilo": "continuo" に変更しないでください。
  • より表現力豊かなローカル音声(ユーザーのGPU上のChatterbox)をテストするには:npm run vozes -- comparar <slug>。

4. シーン → src/explicativo/videos/<Nome>.tsx

  • Escala6x1.tsx の構造をコピーします:シーンごとに1つのコンポーネント、CENAS_<NOME>、ファイルの最後に export const VIDEO = { id: "<Nome>", roteiro: roteiro as Roteiro, cenas: CENAS_<NOME> };(import roteiro from "../../../videos/<slug>/roteiro.json" を含む)。ビデオは自動的に登録されます:Composicoes.tsx を編集しないでください(編集すると git pull で競合が発生します)。
  • 動画が完了したら、GitHubに保存します:git add videos/<slug> src/explicativo/videos/<Nome>.tsx + commit + push(これにより、次回ユーザーが git pull を実行しても止まりません)。
  • ヒーローオブジェクト(端末+カードなど): テーマに沿った1つまたは2つのオブジェクトを、精巧に作り、大きく表示し、ほぼすべてのシーンに登場させます。各シーンでは、その一部/状態(ランプが点灯、画面にコード、キーが出てくるなど)を表示します。フィギュアは脇役としてのみ(シーンあたり0~1体、決して中心になりません)。
  • キット(three/Kit.tsx、ui/Kit.tsx)はオプションです:シーンが必要とする場合にのみ1つのパーツを使用します(例:投票での「Hemiciclo」)。画面をピル/定規で埋め尽くさないでください。
  • 各シーンについて、データの視覚的なメタファーを1つ選択します(references/estilo.md を参照): 投票 → 座席が点灯;時間 → 消えていくキューブ;人 → フィギュア(1体=X);お金 → コイン/給与明細;期限 → タイムライン上のプレート;ルール/法律 → 紙+チェックリスト。
  • 台詞と同期:w("palavra") はその単語が発声されるフレームを返します。視覚効果はその単語のタイミングで変化します(例:音声が数字を言うときにカードの数字が変わる)。
  • カメラ:cam(pos, look) でシーン中に初期位置から最終位置へ補間(ease(f, 0, dur))。
  • 背景:Stage はすでにダークモード(黒背景、埃)で提供されています — リファレンスと同じです。ユーザーがリクエストしない限り、cenario="estudio" や acabamento(ぼかし/ブルーム)を使用しないでください。
  • カメラ:オブジェクトから6~8の距離、y≈1を見る;シーン内で10~15%スローにズームイン(Aproximacao.tsxのように)。
  • フレーミング:メインオブジェクトは幅の40~70%を占めます。絶対に空のフレーム、微小なオブジェクト(細い線)、または参照なしで画面全体を占めるブロックは避けてください。常に人間の参照(隣のフィギュア)または既知のオブジェクトでスケーリングします。
  • テーマのオブジェクトは単純な形状で構築します(本=薄い箱、金庫=箱+円柱、スマホ=丸みを帯びた箱+暗い画面、天秤=円柱)— 具体的なコンテキストは抽象的なブロックよりも魅力的です。
  • コンテンツは画面の中央ゾーン(y≈450~1250 px)に配置します。上部=ブランド/チップ/カード;1300以上=キャプションとTikTokボタン。右端(アプリアイコン)には重要なものを置かないでください。
  • 数字の出典は Callout に記述します(sub="出典:…")。

5. フレームの確認

npm run quadros -- <slug> → out/quadros/<slug>/grade.jpg(各シーンの最後のフレームを1つ)。 グリッドを確認します。確認事項:キャプションの後ろで何も切れたり隠れたりしていないか;テキストが読めるか;メインオブジェクトが十分に大きいか;カード/チップに何も重なっていないか;ビジュアルが台詞と一致しているか。カメラ/スケールを調整して繰り返します。

6. サムネイル(表紙)

thumb.titulos に2つのタイトルを書きます(行は \n で区切り、強調は *アスタリスク* で囲みます):

  • 3行、各行最大約16文字;最後の行は強調表示された質問/好奇心。
  • 1つは事実/強い数字(「75対1。」)、もう1つは視聴者が抱く質問(「いつ変わる?」)。
  • 真実であること:動画が示さないことを約束しないでください。
  • 背景:最も美しく/読みやすいシーン(すでに構築されている cena + quadro)。 npm run thumb -- <slug> → thumbs/<slug>-1.png、-2.png。納品前に両方を確認します。

7. レンダリングと納品

npm run explicar -- <slug> → out/<slug>.mp4 + サムネイル(3DレンダリングはGPUなし:Codespaceでは動画1分あたり約6~10分)。最終的なmp4の3~4フレームを確認し、音声の終わりをチェックし、出典と共に納品します。 ユーザーに以下を提示します:動画、2つのサムネイル(どちらを投稿するかとその理由を伝える)、および out/<slug>-legenda.txt のキャプションをコピー可能な状態で貼り付けます。意見を求め、それを notas-do-editor.md(「解説動画」セクション)に記録します。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

関連スキル