Communitygithub.com

niruvai/ストーリーテリング

トーキングヘッドのクリップをストーリーテリング用リールに編集します。上部に3枚のシンプルなイメージカード、太字の黒枠タイトル、その下に小さな白いサブタイトルを配置し、すべてが連続テイクに一度に表示されます。TikTok風のキャプション(白、黒枠、1~3語)が付きます。ユーザーが /storytelling を実行したとき、ストーリーや証明リールを依頼したとき、「3つの画像とタイトル」またはリードマグネット風編集を9:16クリップに求めたときに使用します。

ストーリーテリング とは?

このスキルは、連続したトーキングヘッドクリップを視覚的に魅力的なストーリーテリングリールに変換します。上部に3枚のカード(統計、カバー画像、コメントなど)が同時に表示され、その下に太字の黒枠タイトルと小さな白いサブタイトルが配置されます。1~3語のTikTok風キャプションが下部に表示され、全体がひとつの連続テイクで構成されます。このスキルは、Claude Codeなどの開発者ツールで使用され、ユーザーが「ストーリー」や「証明リール」を依頼した際に自動的にトリガーされます。仕組みとしては、まず9:16のトーキングヘッドクリップから4~8秒の連続シーンを選択し、Whisperで文字起こし(ベンガル語対応)を行い、JSON形式の仕様ファイルを生成します。次に、内蔵のビルドスクリプトがカードとタイトルを重ね、TikTok風キャプションを追加して最終的なmp4ファイルを出力します。生成後はコンタクトシートで見た目を確認し、必要に応じてキャプション位置やタイトル行の調整を行います。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/niruvai/claude-editing-skills-bangla/tree/main/skills/storytelling

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

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

ドキュメント

/storytelling

┌──────────────────────┐
│ [4:12] [cover] [comments] │  3枚のカードが同時に表示
│  I made this carousel │  黒枠タイトル、1~2行
│   in a few minutes    │
│ and it's doing well   │  小さな白いサブタイトル
│        (顔)           │  連続テイク、少しズームイン
│     entire carousel   │  TikTokキャプション
└──────────────────────┘

初回使用

このスキルのフォルダは、Claude Codeがロード時に表示する「ベースディレクトリ」です。

SKILL_DIR="<このスキルのベースディレクトリ>"   # Claude Codeが「このスキルのベースディレクトリ」として表示したパス
KIT=$(python3 -c 'import os,sys;print(os.path.realpath(os.path.join(sys.argv[1],"..","..","kit")))' "$SKILL_DIR")
PY="$KIT/.venv/bin/python"; [ -x "$PY" ] || bash "$KIT/setup.sh"

ベンガル語クリップ. 話者がベンガル語で話す場合、最初の words 呼び出しの前に REEL_LANGUAGE=bn を設定(exportするかコマンドの前に付加)して、Whisperが翻訳ではなくベンガル語で書き起こすようにしてください。画面上のすべてのテキスト(タイトル、ラベル、アイテム)もベンガル語で記述し、words が出力する単語に正確にアンカータイムを合わせてください。ベンガル語は同じサイズの英語よりも幅が広くなるため、見出しは2~4語に抑え、コンタクトシートでオーバーフローがないか確認してください。Whisperはベンガル語のスペルミスを起こしがちです(例:「ঢাকার মেয়র」が「ধাকার মেওর」になる)。仕様を書く前に、選択した区間の words 出力を読み、間違ったスペルを <clip>.transcript.json で直接修正し(word のみ変更、start/end はそのまま)、その後 words を再度実行して、キャプションとアンカーが修正された単語を使用するようにしてください。words に長い音声区間が欠落している場合は、トランスクリプトを削除して words を再実行してください。転写ツールがスキップされた区間を再チェックします。クリップが9:16でない場合(たとえば正方形の1080x1080の電話動画)、最初のフレームを確認してください。まっすぐにクロップすると顔が画面いっぱいになり、ビジュアルが隠れる可能性があります。その場合はユーザーに伝え、9:16での録画を提案してください。

文字起こしには GROQ_API_KEY が設定されている必要があります。ffmpeg と Node が必要です。

手順

  1. クリップ. 任意の9:16トーキングヘッド。
  2. 文字起こし. "$PY" "$KIT/reel.py" words <video> を実行します。1行に1文が [ends …](その文の最後の単語が終わる時間)付きで出力されるので、それを end として使用します。小さなストーリーや証拠を示す、4~8秒の連続した区間を1つ選んでください。つなぎ合わせると、ジャンプカットが不自然に見えるため行わないでください。
  3. 仕様. <clip>.storytelling.json を記述します(以下参照)。仕様内のパスは仕様ファイルからの相対パスです。3枚のカードは写真で表現するストーリーです。すなわち、労力、対象、結果です。
  4. ビルド. "$PY" "$SKILL_DIR/build.py" <spec.json> を実行します。
  5. 確認. <out>.sheet.jpg を確認します。
    • カードとタイトルが上部220pxをクリアしていること。
    • キャプションが口を覆っていないこと(caption_top を移動。デフォルトは1385)。
    • タイトルが各行に収まっていること。
  6. 引き渡し. mp4のパスをユーザーに渡します。

仕様

{
  "video": "my-clip.mp4", "start": 42.3, "end": 47.8,
  "zoom": 1.3,
  "cards": [
    {"type": "stat", "label": "TIME SPENT", "value": "4:12", "unit": "minutes"},
    {"type": "cover", "image": "my-photo.jpg", "text": "the best *ai tools*\nto use when\nyou're *young and broke*"},
    {"type": "comments", "title": "Comments", "rows": [["sarah.creates", "CAROUSEL"], ["mike.builds", "CAROUSEL!!"]]}
  ],
  "title": ["I made this carousel", "in a few minutes"],
  "subtitle": "and it's doing extremely well"
}

cards は正確に3つ必要で、それぞれ以下のいずれかです。

  • image: {"src": "photo.jpg"}、正方形の写真。
  • cover: カルーセルカバー。image と text(*単語* は黄色に、\n は改行になります)。ゆっくりとドリフトします。
  • stat: label、value、unit、およびリング。
    • value が数値("250"、"10,000")または時刻("4:12")の場合、カウントアップします。
    • ring(0~1)はリングの充填度合いです。
  • comments: 最大4つの [handle, text] 行。
  • text: {"big": "3×", "small": "more saves"}。

その他のフィールド:

  • title: 1行または2行。各行は最大約22文字。
  • subtitle: 1行の短いテキスト。
  • zoom: テイクのズームイン度合い。デフォルトは1.3、1でズームなし。

テイスト

  • すべての要素が、最初の3分の1秒以内に同時に表示されます。決して一つずつ表示しないでください。
  • タイトルは、一呼吸で語るストーリーです。サブタイトルはその見返りです。
  • カードは実際のもの(ユーザー自身の投稿、数字、スクリーンショット)を表示します。コメント行とハンドルは、ユーザーが提供した実際のものでなければなりません。ユーザーが何も提供していない場合は、text または stat カードを使用し、人物をでっち上げないでください。

関連スキル