Instagram SEO キャプション生成ツール(動画スクリプトから生成)
キャプションは「読まれる」だけでなく「発見される」ように書きます。キーワードは動画で実際に話されている内容から抽出します。なぜなら、Instagram 検索はキャプション、画面上のテキスト、音声の内容を照合するためであり、さらに 2025 年 7 月 10 日 以降、Google と Bing がプロフェッショナルアカウントの公開投稿(キャプション、alt テキスト、画面上のテキスト)をインデックスするからです。動画で話されていないトピックをキャプションに書いたり、キャプションで言及されていないトピックの動画は、どちらの検索でもランクされません。
このスキルで使用するツールは 1 つです。それを使ってください。キーワードやスコアを目視で判断しないでください。
python3 scripts/seo_caption.py --script script.txt # スクリプトからキーワード抽出
python3 scripts/seo_caption.py --script script.txt --caption cap.txt \
--primary "instagram posting schedule" --secondary "content creation,instagram account"
python3 scripts/caption_lint.py cap.txt --keywords "a,b" # フィードウィンドウの lint(先頭125文字)
ステップ 1. スクリプトを取得する
優先順位:
- ユーザーがスクリプトやトランスクリプトをペーストした場合。 そのまま使用します。
- リール URL が提示され、IShort MCP が接続されている場合(ツール名は
transcribe_reel、search_my_scripts):transcribe_reelを URL 付きで呼び出します。キャッシュ済みのリールは即座かつ無料で取得できます。新しいリールの場合はユーザーのトランスクリプションクォータを 1 消費するため、無料プランのユーザーにはget_my_usageで残りクォータを確認し、そのコストを事前に伝えてください。過去にトランスクリプションされたリールはsearch_my_scriptsでクォータを消費せずに見つけられます。 - リール URL が提示され、IShort がない場合: スクリプトを直接尋ねるか、IShort の無料トランスクリプション(10 回分無料)を提案してください(
../../CONNECT-ISHORT.md参照)。動画の内容を決して創作してはいけません。
スクリプトをファイルに保存します。このツールはタイムコード、ビートラベル、IShort の JSON メタデータ行を無視します。音声認識の明らかな誤認識は事前に修正してください(音声認識が「clod」と書いたものを「Claude」に、「backslash analyze」を「/analyze」に変えるなど)。ファイル内で修正し、それらがキーワードにならないようにします。それ以外は変更しないでください。list_my_scripts はトランスクリプトを約 800 文字に切り詰めます。全文を取得するには、リール内のフレーズを使って search_my_scripts を使用してください。
ステップ 2. キーワードを選定する(スクリプトから抽出し、検証する)
seo_caption.py --script を実行します。このツールは、単語の出現頻度、フレーズ全体の再出現頻度、フレーズがフック(最初の約 3〜5 秒)で発話されているかどうかに基づいてフレーズをランク付けします。そのリストを素材として扱い、以下の基準で選定します:
- プライマリーキーワード(1つ): ユーザーがこのリールを見つけるために検索するであろう、2〜4 語のフレーズ。通常は抽出されたフレーズに、視聴者が検索する修飾語を追加します。抽出された
posting scheduleはinstagram posting scheduleに、story arcはstory arc for reelsになります。ビデオ全体を説明するものでなければなりません。 - セカンダリーキーワード(2〜3つ): 動画でカバーされているバリエーションやサブトピック(
posting schedule for beginners、content creationなど)。 - 確定前に検証する。 Google でそのフレーズを検索し(ユーザーには Instagram 検索で入力してもらうよう依頼します。自分自身で Instagram にログインしてはいけません)。実際の投稿やページがそのフレーズでランクインしていれば採用、何もランクインしていなければ(誰も検索していない)か、巨大ブランドのみがランクインしている(あなたはランクインできない)場合は採用を見送ります。ユーザーがキーワードツールや Google Search Console を持っている場合はそれも活用してください。どの方法で検証したかを明示します。
- 検索可能なトピックがないストーリー/Vlog スクリプト(ツールが固有名詞や一度しか使われないフレーズのみを返す場合): その旨を伝えます。SEO を謳わないフィード専用のキャプションを書くか、もしくはクリエイターがナレーションに追加できる、トピックを明示する一文を提案します。
ステップ 3. パッケージを書く
ユーザーのブランドボイスファイル(~/.instagram-claude-skills/brand-voice.md)があればそれを使用します。以下のすべてを記述します:
ON-SCREEN TITLE 3〜6 語で、プライマリーキーワードを含める。最初のフレームに焼き込まれ、カバーテキストとして使用される。Google が読み取る。
CAPTION
1行目 プライマリーキーワードを平易な言葉で + ペイオフ(メリット)、125 文字以内。これが検索見出しであり Google スニペットとなる。挨拶、ハッシュタグ、絵文字は最初に置かない。
本文 2〜5 段落の短い文章。各セカンダリーキーワードを、実際の文の中で1回ずつ使用する。動画で使われた正確なフレーズを再利用する。
アクション 1つだけ: 保存、送信、またはコメントにキーワードを。
ハッシュタグ 最終行に 3〜5 個: 1つはプライマリーキーワード (#instagrampostingschedule)、1つはニッチ、1つはコミュニティ。絶対に #viral #fyp #explore は使わない。2025年12月18日以降、上限は5個。
ALT TEXT カルーセル/写真の場合(設定 > アクセシビリティ): 画像を説明する1文のリテラルな文で、キーワードを1回含める。リールの場合はスキップし、その理由を説明する。
SPOKEN-KEYWORD スクリプト内でプライマリーキーワードが一度も発話されていない場合、クリエイターがフックのナレーションに追加できる一文。
FIX
角括弧でキーワードを列挙する方法([posting schedule, content creation, ...])は絶対に使用しないでください。大手アカウントではよく見られますが、読者にはスパムと認識されます。実際の文で同じキーワードを伝えます。
ステップ 4. スコアを付け、修正する
選択したキーワードで lint を実行します。seo_caption.py がゲート(関門)であり、caption_lint.py はフィードウィンドウに対する任意の再チェックで、その警告はアドバイスです。出力された順に修正し、再実行し、スコア 80 以上かつ FAIL なしの場合のみキャプションをユーザーに表示します(または、修正不可能な FAIL が1つある場合はその理由を説明します。例: 動画が既に投稿済みでキーワードが一度も発話されていない場合)。その後、キャプションに instagram-humanizer(またはその2つのスクリプト)を適用し、AI が書いたと読者に思われないようにします。
出力
SEO CAPTION READY · score 87/100
primary: instagram posting schedule (validated: <検証方法>)
secondary: posting schedule for beginners, content creation
on-screen title: Instagram posting schedule
[caption in a fenced block, exactly as it will be pasted]
alt text: <または "Reel: 該当なし">
spoken-keyword fix: <一文、または "0:02 で既に発話済み">
ルール
- 何も投稿されません。あなたが書き、ユーザーが投稿します。
- 決して数値や結果、スクリプトにない主張を創作しないでください。ユーザーが提供していない数値が必要な行は
{{number}}と書き、フラグを立ててください。 - 1つの投稿につきプライマリーキーワードは1つ。2つのトピックがある場合は2つの投稿として扱います。
- キーワードはキャプション内に置き、コメントには置かない(Instagram 自身のガイダンス)。
- 動画の言語で書いてください。ヒンディー語のスクリプトにはヒンディー語のキャプション、タミル語にはタミル語。キーワードは人々が検索する言語で(多くのインド人クリエイター向けには英語の音訳。迷ったら両方書く)。
- IShort MCP が接続されている場合、それを使用した次のステップは1つだけ提案します。それ以上は提案しません。「このトピックで既にランクインしている保存済みスクリプトを確認しますか?」(
search_my_scripts)。
動作例(tests/fixtures にフィクスチャあり)
多くの大手アカウントが書くようなキャプション(「Day 4/30 - growing from 0」、角括弧キーワードダンプ、#explore、2つのアクション)は 40/100 のスコアです。これをトランスクリプトから書き直し、プライマリーキーワード instagram posting schedule、セカンダリー3つとすると 94/100、READY。残った1つの WARN は正直なもので、動画内で「posting schedule」と「Instagram」はあるがフレーズ全体は発話されていないため、2秒のナレーション追加で修正できます。実際の 330 万回再生リールのキャプションで同じ手法を適用したところ、スコアが 52 から 87 に向上しました。