切り抜き編集(APIなし)
このスキルは、チャンネルが切り抜き編集で学んだすべてをまとめたものです。調査とダウンロード、ランク付け、スクリプト作成、カット、確認、アニメーション。各ルールは、実際に公開された、あるいはされかけたミスから生まれました。
APIを一切使わない環境で動作します。
- 編集とレンダリング: HyperFrames(
npx --yes [email protected] …)。 - 音声の読み取りと再生: ローカルのWhisper(HyperFrames経由のwhisper.cpp、またはfaster-whisper)。
- 各単語の時間計測: ローカルの強制アライナー(MMS_FA、torchaudio)とオーディオエンベロープ。
2つのモード: 開始前に選択
| モード | いつ使うか | テンプレート |
|---|---|---|
| 実際のビデオReels | 企業・ブランドのプロフィール(例: @amigosdobem): 人物やアクションが画面全体、見出し、名前と役職、カバー画像、ロゴ、キャプション。アニメーションはほとんどまたはまったくなし。 | assets/modelo_reels/(LEIA-ME.mdを参照) |
| 切り紙アニメーション | 意見系切り抜きチャンネル(Raulのもの): 上半分がアニメーションの切り紙、発表者が下、アニメーションの全画面表示。 | assets/modelo/ および references/animacao-hyperframes.md |
迷ったら、どちらかを尋ねてください。アニメーションより前の工程(テーマ、スクリプト、単語を食べずにカット、発話と音声の確認、キャプション、セーフエリア、最終処理、納品)は両方で同じです。実際のビデオReelsの場合、ステップ3はシーンの代わりにmontar_reels.pyを使用し、キャラクター、切り紙、アニメーションの全画面表示のルールは適用されません。
黄金のルール(全工程で有効)
- APIなし。 OpenAIのキーや有料サービスは一切不要。ローカルのWhisperがテキストを提供。細かい時間はMMS_FAアライナーとエンベロープ上の実際のポーズ(
scripts/pausas.py)から取得する。Whisperは時間の証明にはならない: C29では、large-v3が単語を最大1.4秒ずらして配置し、それぞれのエラーが誤ったカットポイントになった。 - 進む前に承認を得る。 承認されたスクリプト → 編集 → アニメーション → プレビュー。チャンネル所有者の「予約してよい」がなければ、何もスケジュールまたは公開されない。彼が「最後までやって」と頼んだ場合、中間の承認はプレビューの1つにまとめられる。
- 単語の途中で切らない。 カットポイントは常に、次の単語の前の、−40 dB以下のエネルギー値の谷。すべての継ぎ目は、組み立てた後にもう一度聞く(
scripts/ouvir_emendas.py)。 - Raul全体を、中央に、ズームなしで、決して止めない。 画像は常に音声と同じ瞬間のもの。ポッドキャストでは、思考中の人に合わせる。話している人は、2人いるすべてのカットでマークされる。頭は絶対に切らない。ソースの分割画面では、彼のパネルが下のウィンドウを満たす。ぼかしたサイドは禁止。発話中に静止画があってはならない。ソース内の写真やグラフィックが全画面の場合は、アニメーションの全画面表示の下に入れる。
- キャプションは最初から最後まで、1~3単語で、罵倒語は検閲(
F**A)。 - 常にセーフエリアを確保。 TikTokの検索の下、サイドからはみ出す部分、ボタンや投稿テキストの下には何も入れない。
scripts/zona_segura.mjsが、すべてのレンダリングの前に✓を出す必要がある。 - 全画面表示: 2分までの動画で5秒以上を3回、2分を超える動画では4回。1回目はフックの直後。
- 最適な音声トラック(YouTubeのOpus)、最小限の再圧縮、出力は−14 LUFS。効果音は常に発話の下に配置。
- ダウンロードは間隔を空けて。 一度に1リクエスト、バースト禁止、間に余裕を持たせる(
scripts/baixar.pyが自動で行う)。429でマークされたIPは時間が経たないと戻らない。web_safari,mwebクライアントは、動画のリスト表示とデータ(タイトル、言語、チャンネル)の読み取りにのみ使用する。これを使うとキャプションが消失し(すべての動画で「字幕なし」)、解像度が偽の360pになるため、キャプションとメディアはデフォルトのクライアントでダウンロードする。 - 決して完全に削除しない。 削除されたものは
_lixeira/に移動され、空にするのはチャンネル所有者だけ。パスワードやトークンを入力しないこと。ログインは常に本人が行う。
インストール(マシンごとに1回)
最も簡単な方法: READMEのワンステップコマンド(Windowsはinstalar.ps1、Macはinstalar.sh)で不足しているプログラムをインストールし、スキルをダウンロードしてscripts/instalar.pyを実行します。
スクリプトのPython: スキルフォルダに.pythonファイルが存在する場合、このスキルのすべてのコマンドにおけるpythonは、そこに書かれたパス(例: ~/.venv-cortes/bin/python)になります。システムのPythonがpipを拒否した場合(PEP 668: MacのHomebrew、Debian/Ubuntuのもの)、インストーラーがこの環境を作成します。
python scripts/instalar.py(Python 3.11+)は、マシンを一度で準備します。最後に「✓ 編集準備完了」と表示されるか、不足しているものをリストアップします。以下の5つのことを行います。
- Python、ffmpegとffprobe、Node 18+(npxを含む)、Chromeを確認。pipやnpmでインストールできないものは、システムにインストールする方法を指示。
pip installで不足しているものだけをインストール(faster-whisper、CPU用のtorchとtorchaudio、numpy、scipy、soundfile、opencv、yt-dlp)。既にインストールされているものは更新もダウングレードもしない。scripts/でnpm install playwright-coreを実行。これはzona_segura.mjsとerros_js.mjsがインポートするため。- Whisper large-v3(約3 GB)とMMS_FA(約1.2 GB)をダウンロードし、
npx --yes [email protected]とレンダリング用Chromeをウォームアップ。 - 自動テストを実行: 3つのスクリプトの
--help、.mjsファイルのnode --check、一時フォルダにマウントされたassets/modelo/。
3つのオプションがあります。
-
--so-conferir: 確認のみでインストールはしない。 -
--sem-modelos: モデルをスキップ。 -
--modelo-whisper medium: 低スペックマシン用。その後、transcrever_local.pyに--modelo mediumを渡す。 -
HyperFramesのWhisper(オプション):
npx --yes [email protected] transcribe <ファイル> -e whisper -m large-v3 -l pt --json。whisper-cppが必要で、npx --yes [email protected] doctorでインストールされているか確認できる。 -
インターネットが必要なもの(その他はオフラインで動作):
- ソースのダウンロード(yt-dlp);
- 初回のみ、モデル(Whisper large-v3とMMS_FA)とレンダリング用Chrome。インストーラーがこれら3つをダウンロードする。
- すべてのレンダリングで、CDNからのGSAP。
- 初回マウント時のGoogle Fontsからのフォント(その後は
~/.cache/hyperframes/fontsに保存)。
-
マシンのテストはいつでも:
python scripts/instalar.py --so-conferir。
プロジェクト構造
<プロジェクト>/
_fontes/ ダウンロードした動画と音声(<id>_opus.mkvがカットのソース)
_pesquisa/ キャプション、文字起こし(<id>_palavras.json)、レーダー、メモ
_lixeira/ 削除されたもの(公開後のソースなど)
cortes/cNN-slug/ 1つのカット: ROTEIRO.md、cortes_gerar.py、cortes.json、pos_cortar.py、_cenas.js、montar.py、
gera_som.py、som.json、capa/、post.json、assets/(raul.mp4、raul.wav、tempos.json、dados.js)、
renders/(etapa3_bruto.mp4、etapa3.mp4、cNN_previa.mp4、cNN_capa.jpg)
LOG_CORTES.md カットごとのエントリ(ソースID、公開内容、所有者の決定)、「蓄積された教訓」。
これがないと、ranking_shorts.pyは既に使用されたIDを除外できない。
REGUA.md 所有者による評価基準の修正(採点前に読むこと)。RADAR.mdはnota_viral.pyが生成する。
カットの流れ
各ステップを開始する前に、そのリファレンスを読んでください。それぞれに完全なルールとその理由が記載されています。
| ステップ | 作業内容 | リファレンス | スクリプト |
|---|---|---|---|
| 0 · テーマ | 候補を見つけ、発言とショートをランク付け、評価基準でスコアを付け、スコアボードで選択 | references/ranqueamento.md | nota_viral.py、ranking_shorts.py、analise_shorts.py、acha_frase.py |
| 1 · ソース | リスト表示、キャプションを読み、ブロックされずに最適なトラックをダウンロード | references/pesquisa-e-download.md | baixar.py、vtt2txt.py |
| 1 · スクリプト | 該当部分を文字起こし、完全な論旨を構築、✋に提出 | references/roteiro.md | transcrever_local.py |
| 2 · カット | カットポイントを測定、カメラ切り替えを検出、カット、再調整、キャプション付け | references/corte-e-fala.md | pausas.py、trocas.py、cortar.py、alinhar.py、legendas.py、borrar_regiao.py、reenquadrar.py |
| 2 · 確認 | 継ぎ目を聞き、フレーム単位で確認 | references/conferencias.md | ouvir_emendas.py、conferir_fins.py、folha_contato.py、travada.py |
| 3 · アニメーション | アニメーションのスクリプト、シーン、全画面表示、セーフエリア | references/animacao-hyperframes.md | assets/modelo/、roteirista.py、marca.py、zona_segura.mjs、erros_js.mjs |
| 3 · 実際のビデオReels | 見出し、名前と役職、カバー画像、ロゴ、ブランドカラー(アニメーションの代わり) | assets/modelo_reels/LEIA-ME.md | montar_reels.py、zona_segura.mjs、erros_js.mjs |
| 3 · 音声 | シーンの単語に合わせたキュー、発話の下の効果音 | references/audio.md | sonoplastia.py(+ assets/foley/) |
| 4 · レンダリング | レンダリング、ミックス、最終処理、完成確認、プレビュー送信 | references/conferencias.md | finalizar.py、folha_contato.py |
コマンド(順番に、cortes/cNN-slug/フォルダ内で実行。$S = このスキルのscripts/フォルダ)
assets/modelo/をcortes/cNN-slug/にコピーして開始(assets/modelo/LEIA-ME.md参照): cortes_gerar.py、pos_cortar.py、montar.py、gera_som.py、カバー画像、入力用のpost.jsonが含まれます。スキルが~/.claude/skills/edicao-de-cortesにない場合は、EDICAO_CORTES=<スキルのフォルダ>を設定します。
python $S/pausas.py <ソース> --palavras <palavras.json> <t:前:後> ... --perfil # 各カットポイント、書き込み前
python $S/trocas.py <ソース> --de <s> --ate <s> # 該当部分のカメラ切り替えとレイアウト変更
python cortes_gerar.py # cortes.jsonを生成(ブロック、ウィンドウ、切り抜き、切り替え)
python $S/cortar.py . # assets/raul.mp4、raul.wav、tempos.jsonを生成(発話内のカットポイントをバーで表示)
python pos_cortar.py # MMS_FAで再調整されたスクリプトのテキスト(単語単位)
python $S/legendas.py . # assets/dados.js: 1~3単語のブロックに分割されたキャプション
python $S/ouvir_emendas.py . # 各継ぎ目をローカルのWhisper + エンベロープで確認
python $S/conferir_fins.py . # 各ブロックのカットポイントを確認
python $S/folha_contato.py assets/raul.mp4 --cada 2 # すべてのフレームでRaul全体と正しい人物が映っているか確認
# (✋2、所有者から依頼があった場合: references/corte-e-fala.mdの末尾を参照)· ここで、アニメーションの前に追加の労力を依頼
python $S/roteirista.py batidas . # batidas.md: フレーズ、正しいnを持つT()アンカー、人物への言及
python montar.py # index.htmlを生成(アニメーション + Raul + キャプション + ブランド)
python gera_som.py && python $S/sonoplastia.py . # 効果音トラック; 最後にJSとセーフエリアを確認
npx --yes [email protected] render . --fps 24 -q standard -w 6 -o renders/etapa3_bruto.mp4
python $S/sonoplastia.py . --mux # レンダリング画像に音声をロスレスで合成
python $S/finalizar.py . # −14 LUFS、トラベルド、720pプレビュー
python $S/folha_contato.py renders/etapa3.mp4 --cada 3 # 送信前に完成した動画を確認
納品方法
- スクリプト:
references/roteiro.mdの形式で: ストーリーライン、各ブロックの完全なテキストとシーン、全画面表示、カバー画像、スコア付きの自己批評、最後に除外リスト。 - プレビュー: 720pのプレビューとカバー画像、動画の概要:
- 全画面表示;
- 確認済みの項目(セーフエリア、トラベルド、ラウドネス);
- 最初のレンダリング後に修正された点;
- 投稿のキャプション。 その後、「予約してよい」を待つ。「準備完了、完璧、予約済みにして」という明示的な予約依頼は、それらの動画の「予約してよい」としてカウントされる。
- 投稿のキャプション(
post.json): 発表者へのクレジットを含む有益な情報(「Raul Sena氏のために、…」)、約430文字まで(TikTokでは、約600文字のキャプションは3回の試行でフィールドの先頭が失われた。421文字と426文字のものは問題なかった)。ダッシュや山括弧は使わず、罵倒語は検閲。最後にハッシュタグ: ブランド用2つ、テーマに関連する人々が検索しそうなものを3~5つ、汎用的なものを1~2つ、アクセントやスペースなし。post.jsonのtrechoはキャプションの冒頭部分。これによりStudioで投稿を見つける。 - 3つのプラットフォームに同じ時間に: TikTokの「予約してよい」は、InstagramとFacebookにも同じ時間に適用され、再依頼は不要。時間後、3つすべてに投稿が公開されたか確認する(C80とC83では、アカウントブロックによりInstagramが失敗)。
- TikTokの余裕: 新しいアカウントはすべての投稿をレビューにかける(「審査中のコンテンツ」、最大12時間)。2時間以上の余裕を持ってスケジュールし、決して予定時刻の20分前を切らないこと。
- ビジュアルに関する決定(レイアウト、スタイル、カバー画像): 所有者が選択できるよう、画像でオプションを送信する。
- コードやツールを変更した後: 変更内容、理由、除外した点、未完了の作業を含む完全な概要を提示する。
Instagram(Reels)
同じ動画がReelsとTikTokの両方に使用できます。Instagramでは:
- レンダリングされたファイル(
renders/etapa3.mp4)をアップロードする。決してTikTokからダウンロードした動画は使わない。Instagramは、透かしの入った再利用動画のリーチを減らす。 - 投稿のキャプションは最大2,200文字まで受け付けるが、「もっと見る」の前に表示されるのは最初の行だけ。それがフックである必要がある。ハッシュタグ: テーマに関連するものを3~5つ、ブランド用のものを追加(Instagramは少数で関連性の高いものを推奨)。
- カバー画像は、プロフィールのグリッドに3:4の中央クロップで表示される。その範囲内に顔と見出し全体が収まること(モデルのカバー画像はそのように作られている)。アプリでは、「カバーを編集」→「ギャラリーから追加」で設定する。
- セーフエリア(
zona_segura.mjs: 上部の検索、右側のボタン、下部の投稿テキスト)は両方で有効。最初の投稿では、各全画面表示で公開されたReelsのスクリーンショットを確認し、インターフェースが何かを隠している場合は制限を調整する。 - 長さ: 1~2分(Reelsは最大3分まで対応)。
- 評価基準とグリッドの数値(時間、重み、視聴回数の制限)は、このチャンネルのTikTokで測定されたもの。Instagramでは、自社のデータでスコアボードをリセットする。
別のチャンネル
このスキルはRaul Senaの切り抜きチャンネルで生まれ、例は彼のものです。別の発表者やブランドで使用するには、以下を交換してください:
- ブランド:
CONTAとアバターを…
[翻訳が途中で切れました]