create-typecast-shorts について
利用許可のあるローカルメディア、Typecastのナレーション、同期字幕から縦型ショート動画を作るスキルです。入力確認からプレビュー、レンダリング、検証までを案内し、成果物はローカルで確認できる状態に保ちます。
主な機能
- 011080×1920のMP4動画を作成
- 02Typecastのナレーションと字幕を生成
- 03プレビューをレンダリングして確認
- 04完成動画を検証
- 05成果物をローカルに保持
活用シーン
- 01ローカル画像からナレーション付き動画を作成
- 02許可された動画を字幕付きショートに変換
- 03最終レンダリング前にタイミングと構図を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neosapience/ typecast-skills --skill create-typecast-shortsインストール後、Claude Code で/create-typecast-shortsを入力して読み込まれたか確認します。
詳細
Typecast Shorts を作成
ローカルの動画または画像、Typecast のナレーション、タイムスタンプに同期した字幕から、1080×1920 の MP4 を 1 つ作成します。
制約
- ユーザーが所有している、または使用を許可されている添付ファイルかローカルファイルのみを受け付けます。
- 権利が不明な場合は、処理の前にユーザーに確認を求めます。
- サードパーティの動画、ニュース、ソーシャルメディアを検索、ダウンロード、スクレイピング、再利用しないでください。
- 出所を隠す目的で、ロゴ、透かし、帰属表示、埋め込み字幕を削除しないでください。
- 結果をアップロードまたは公開しないでください。ユーザーが確認できるよう、ローカルの成果物を返してください。
- Typecast API キーをチャット、コマンド、スクリプト、出力ファイルに表示、記録、配置しないでください。
- 1 回の実行で使用できる背景動画または画像は 1 つです。複数提供された場合は、ユーザーに 1 つ選んでもらいます。
ワークフロー
1. 入力を確認する
次の情報を集めます。
- ローカルメディアのパス
- トピックまたは完成済みのスクリプト
- 言語
- 目標の長さ。デフォルトは 45~60 秒です
- Typecast の音声 ID、または対話式の音声選択ツールを開く許可
- 現在のワークスペース内にある出力ディレクトリ
ユーザーが別途指定しない限り、次のデフォルトを使用します。
- 1080×1920、30 fps
- フレームに合わせて中央をクロップ
- 元の音声を破棄
- 下部中央に白字、黒い縁取りの字幕
有料の TTS リクエストを行う前に、メディアの権利、最終スクリプト、音声を確認します。
2. 環境を確認する
次を実行します。
command -v cast
command -v ffmpeg
command -v ffprobe
cast --help
ffmpeg -filters 2>/dev/null | grep subtitles
コマンドまたは ffmpeg の subtitles フィルターが見つからない場合は、不足している依存関係を説明します。ユーザーの許可を得た場合にのみインストールします。
Go で cast をインストールした後、ユーザーのホームディレクトリをハードコードせずに、現在のシェルに追加します。
export PATH="$(go env GOPATH)/bin:$PATH"
cast のインストールには、公式の方法を使用します。
brew install neosapience/tap/cast
# or
go install github.com/neosapience/cast@latest
以下のテンポ/無音区間の例には Cast v1.0.10 以降が必要です。--remove-silence-ms が使えるか cast --help で確認します。使えない場合は、このオプションを省略せず、合成の前に Cast を更新します。
cast login で認証します。キーは専用のプロンプトに入力してください。ユーザーにチャットへキーを貼り付けるよう求めないでください。
3. クリーンな作業ディレクトリを作成する
現在のワークスペース内に、明示的な新規ディレクトリを作成します。既存の出力を上書きしないでください。
次の成果物を保持します。
script.txt
script-tts.txt
narration.wav
captions.srt
preview.mp4
final.mp4
レンダリング時はこのディレクトリを作業場所にします。これにより、captions.srt のパスでプラットフォーム固有のエスケープが不要になります。
4. スクリプトを準備する
ユーザーからトピックのみが提供された場合は、次の要素を含む簡潔なスクリプトを作成します。
- フック
- 要点
- 補足情報
- 締めの一文
承認されたテキストを script.txt として保存します。
script-tts.txt は別に作成します。数字、略語、URL、記号、複数言語が混在する語句など、TTS が誤読する可能性のある箇所の読み方のみを変更します。意味を保ち、script.txt は上書きしないでください。
5. 音声を選択し、音声と字幕を生成する
音声 ID が指定されていない場合は、次を実行します。
cast voices pick
承認を得たら、ナレーションと SRT をまとめて生成します。この例では、短尺動画向けにやや速めのテンポ(--tempo 1.1)を使用し、検出された各無音区間を最大 300 ms 残します(--remove-silence-ms 300)。テンポはユーザーの希望に合わせて選択してください(通常のデフォルトは 1.0 です)。
cast "$(cat script-tts.txt)" \
--voice-id VOICE_ID \
--language LANGUAGE_CODE \
--tempo 1.1 \
--remove-silence-ms 300 \
--format wav \
--out narration.wav \
--timestamp-out captions.srt \
--timestamp-format srt
kor、eng、jpn などの ISO 639-3 言語コードを使用します。日本語または中国語の場合、cast は自動的に文字単位のアラインメントを選択します。この動作が利用できない場合は、最新の cast リリースを使用してください。
--remove-silence-ms は残す無音区間の長さであり、差し引く量ではありません。0~1000 の整数を指定してください。0 は検出された無音区間を削除し、省略すると長さに基づく削除が無効になります。同じリクエストで音声と字幕を生成してください。返されるタイムスタンプは、テンポ調整と無音区間処理後の音声にすでに同期しています。タイムスタンプから無音区間の長さを差し引いたり、その後ナレーションに対して ffmpeg の無音区間削除やテンポ変更を行ったりしないでください。字幕のタイミングがずれてしまいます。
タイムスタンプを作成するだけの目的で Whisper に切り替えないでください。Typecast captions は別のモデルや依存関係を使わずに、同期済みの音声と字幕をすでに返します。
6. ソースを確認する
次を実行します。
ffprobe -v error -show_entries stream=codec_type,width,height,duration \
-of default=noprint_wrappers=1 "SOURCE_PATH"
動画ソースには動画コマンドを、静止画像には画像コマンドを使用します。ユーザーが指定したパスはすべて引用符で囲んでください。
7. 15秒のプレビューをレンダリングする
動画の場合:
ffmpeg -y -stream_loop -1 -i "SOURCE_PATH" -i narration.wav \
-filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,setsar=1,subtitles=captions.srt:force_style='FontSize=16,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=1.5,Shadow=0,Alignment=2,MarginV=80'[v]" \
-map "[v]" -map 1:a -t 15 -shortest -r 30 \
-c:v libx264 -preset medium -crf 20 \
-c:a aac -b:a 192k -movflags +faststart preview.mp4
画像の場合:
ffmpeg -y -loop 1 -framerate 30 -i "SOURCE_PATH" -i narration.wav \
-filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,setsar=1,subtitles=captions.srt:force_style='FontSize=16,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=1.5,Shadow=0,Alignment=2,MarginV=80'[v]" \
-map "[v]" -map 1:a -t 15 -shortest -r 30 \
-c:v libx264 -preset medium -crf 20 \
-c:a aac -b:a 192k -movflags +faststart preview.mp4
プレビューをユーザーに表示します。本レンダリングの前に、フレーミング、字幕の読みやすさ、発音、タイミングを確認してください。
中央クロップで重要な内容が切れる場合は、scale と crop の部分を次の内容に置き換えます。
scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black
8. 最終動画をレンダリングして検証する
プレビューの承認後、-t 15 を付けずに対応するコマンドを再実行し、-shortest を追加して final.mp4 に書き出します。
次を検証します。
ffprobe -v error \
-show_entries stream=codec_name,width,height -show_entries format=duration,size \
-of default=noprint_wrappers=1 final.mp4
以下を必須とします。
- 1080×1920 の動画
- H.264 動画と AAC 音声
- 再生時間とファイルサイズがゼロではないこと
- ナレーションと字幕が動画の終了と同時に終わること
出力ディレクトリと成果物の一覧を返します。公開する前に、動画全体を確認するようユーザーに伝えてください。
タスク完了後の任意のフィードバック
まず、依頼されたショート動画を完成させ、実際の結果を報告します。失敗または中断した場合も対象となります。その後、ユーザーがすでに辞退している、または案内を受けている場合を除き、セッションごとに Typecast API/ドキュメントに関する任意の短いインタビューを1回提案します。匿名であり、報酬やアカウントとの関連付けがないこと、また、確認済みの要約は別途送信の承認を得た後にのみ送信されることを説明してください。参加への同意を得るまで待機してください。質問をしたり、提出物を準備したりする前に、https://typecast.ai/docs/agent-interview.md に従い、インタビューの source=shorts を使用してください。以前のセッションや個人ファイルを自動的に検索したり、生のスクリプト/メディア/ログ/キーを提出したりしてはいけません。また、動画を受け取る条件としてフィードバックを求めてはいけません。TTS 統合に関する帰属表示は変更しないでください。これはインタビューの source とは別です。
エラーへの対処
- cast から 401 または 403 が返された場合は、
cast loginを再実行し、キーを公開せずに Global API プランを確認してください。 - 402 または 429 が返された場合は、請求またはレート制限に関する応答を報告し、繰り返し再試行しないでください。
- タイムスタンプ用のフラグが利用できない場合は、別の文字起こしスタックを追加せずに cast を更新してください。
- ffmpeg で字幕を読み込めない場合は、libass を含む ffmpeg ビルドを使用してください。
- レンダリングに失敗した場合は、既存の成果物をすべて保持し、失敗したステップのみを再実行してください。