Communitygithub.com

MickaelAlecsander/edicao-de-cortes

このスキルは、Instagram ReelsとTikTok向けの縦型動画(1080×1920)を、APIを一切使わずに最初から最後まで制作するためのものです(Raul Senaの切り抜きチャンネルで生まれました)。

edicao-de-cortes とは?

このスキルは、AIエージェント(Claude Code、Cursor、Codexなど)が、ソーシャルメディア向けの縦型動画(Reels/TikTok)を完全にオフラインで制作するための包括的なワークフローを提供します。ソース動画の調査・ダウンロードから、発言のランク付け、スクリプト作成、単語を途切れさせない正確なカット、フレーム単位の確認、HyperFramesを使ったアニメーション、最終レンダリングまでをカバーします。すべての処理はローカル環境で完結し、OpenAIなどの外部APIは使用しません。音声認識はローカルのWhisper、時間調整はMMS_FAアライナーとオーディオエンベロープに依存し、YouTubeのダウンロードにはyt-dlpを使用します。スキルは、実際のビデオReels(ブランド/企業向け)と、意見チャンネル向けの切り紙アニメーションという2つのモードを提供し、それぞれに専用のアセットとスクリプトが用意されています。また、金のルールとして、単語の途中でのカット禁止、常にセーフエリアの確保、ダウンロードの間隔調整、承認フローの徹底などが定められており、プロ品質の出力を保証します。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add MickaelAlecsander/edicao-de-cortes

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

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

ドキュメント

切り抜き編集(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を使用し、キャラクター、切り紙、アニメーションの全画面表示のルールは適用されません。

黄金のルール(全工程で有効)

  1. APIなし。 OpenAIのキーや有料サービスは一切不要。ローカルのWhisperがテキストを提供。細かい時間はMMS_FAアライナーとエンベロープ上の実際のポーズ(scripts/pausas.py)から取得する。Whisperは時間の証明にはならない: C29では、large-v3が単語を最大1.4秒ずらして配置し、それぞれのエラーが誤ったカットポイントになった。
  2. 進む前に承認を得る。 承認されたスクリプト → 編集 → アニメーション → プレビュー。チャンネル所有者の「予約してよい」がなければ、何もスケジュールまたは公開されない。彼が「最後までやって」と頼んだ場合、中間の承認はプレビューの1つにまとめられる。
  3. 単語の途中で切らない。 カットポイントは常に、次の単語の前の、−40 dB以下のエネルギー値の谷。すべての継ぎ目は、組み立てた後にもう一度聞く(scripts/ouvir_emendas.py)。
  4. Raul全体を、中央に、ズームなしで、決して止めない。 画像は常に音声と同じ瞬間のもの。ポッドキャストでは、思考中の人に合わせる。話している人は、2人いるすべてのカットでマークされる。頭は絶対に切らない。ソースの分割画面では、彼のパネルが下のウィンドウを満たす。ぼかしたサイドは禁止。発話中に静止画があってはならない。ソース内の写真やグラフィックが全画面の場合は、アニメーションの全画面表示の下に入れる。
  5. キャプションは最初から最後まで、1~3単語で、罵倒語は検閲(F**A)。
  6. 常にセーフエリアを確保。 TikTokの検索の下、サイドからはみ出す部分、ボタンや投稿テキストの下には何も入れない。scripts/zona_segura.mjsが、すべてのレンダリングの前に✓を出す必要がある。
  7. 全画面表示: 2分までの動画で5秒以上を3回、2分を超える動画では4回。1回目はフックの直後。
  8. 最適な音声トラック(YouTubeのOpus)、最小限の再圧縮、出力は−14 LUFS。効果音は常に発話の下に配置。
  9. ダウンロードは間隔を空けて。 一度に1リクエスト、バースト禁止、間に余裕を持たせる(scripts/baixar.pyが自動で行う)。429でマークされたIPは時間が経たないと戻らない。web_safari,mwebクライアントは、動画のリスト表示とデータ(タイトル、言語、チャンネル)の読み取りにのみ使用する。これを使うとキャプションが消失し(すべての動画で「字幕なし」)、解像度が偽の360pになるため、キャプションとメディアはデフォルトのクライアントでダウンロードする。
  10. 決して完全に削除しない。 削除されたものは_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つのことを行います。

  1. Python、ffmpegとffprobe、Node 18+(npxを含む)、Chromeを確認。pipやnpmでインストールできないものは、システムにインストールする方法を指示。
  2. pip installで不足しているものだけをインストール(faster-whisper、CPU用のtorchとtorchaudio、numpy、scipy、soundfile、opencv、yt-dlp)。既にインストールされているものは更新もダウングレードもしない。
  3. scripts/でnpm install playwright-coreを実行。これはzona_segura.mjsとerros_js.mjsがインポートするため。
  4. Whisper large-v3(約3 GB)とMMS_FA(約1.2 GB)をダウンロードし、npx --yes [email protected]とレンダリング用Chromeをウォームアップ。
  5. 自動テストを実行: 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.mdnota_viral.py、ranking_shorts.py、analise_shorts.py、acha_frase.py
1 · ソースリスト表示、キャプションを読み、ブロックされずに最適なトラックをダウンロードreferences/pesquisa-e-download.mdbaixar.py、vtt2txt.py
1 · スクリプト該当部分を文字起こし、完全な論旨を構築、✋に提出references/roteiro.mdtranscrever_local.py
2 · カットカットポイントを測定、カメラ切り替えを検出、カット、再調整、キャプション付けreferences/corte-e-fala.mdpausas.py、trocas.py、cortar.py、alinhar.py、legendas.py、borrar_regiao.py、reenquadrar.py
2 · 確認継ぎ目を聞き、フレーム単位で確認references/conferencias.mdouvir_emendas.py、conferir_fins.py、folha_contato.py、travada.py
3 · アニメーションアニメーションのスクリプト、シーン、全画面表示、セーフエリアreferences/animacao-hyperframes.mdassets/modelo/、roteirista.py、marca.py、zona_segura.mjs、erros_js.mjs
3 · 実際のビデオReels見出し、名前と役職、カバー画像、ロゴ、ブランドカラー(アニメーションの代わり)assets/modelo_reels/LEIA-ME.mdmontar_reels.py、zona_segura.mjs、erros_js.mjs
3 · 音声シーンの単語に合わせたキュー、発話の下の効果音references/audio.mdsonoplastia.py(+ assets/foley/)
4 · レンダリングレンダリング、ミックス、最終処理、完成確認、プレビュー送信references/conferencias.mdfinalizar.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とアバターを…

[翻訳が途中で切れました]

関連スキル