Reelsトレンド調査
指定された期間に特定のニッチでInstagram Reelsでバイラルになったものを特定し、その理由を説明します。ユーザーがすぐに行動できるレポートを提供します。
中核となる指標は 投稿者の中央値に対する×倍率 です: リールの視聴回数を投稿者の最近の動画の中央値視聴回数(下限1,000)で割ったものです。これにより、フォーマットが優れていてバズったリールと、単にアカウントが大きいだけで視聴回数が多いリールを区別します。
スクリプトは ${CLAUDE_SKILL_DIR}/scripts/ にあり、参考メモは ${CLAUDE_SKILL_DIR}/references/ にあります。すべてのスクリプトは、最初の引数として実行フォルダ(以下RUN)を受け取り、実行内容とコストを出力します。
開始前の準備
- Apifyトークン.
echo ${APIFY_TOKEN:+set}またはファイル~/.config/reels-trends/apify_tokenを確認してください。どちらも存在しない場合は、ユーザーに https://console.apify.com/settings/integrations でトークンを作成してもらい、mkdir -p ~/.config/reels-trends && read -s T && echo "$T" > ~/.config/reels-trends/apify_token && chmod 600 ~/.config/reels-trends/apify_tokenで保存するように依頼してください。Windowsの場合:setx APIFY_TOKEN "<token>"を実行し、ターミナルを再起動してください。トークンを絶対に表示、ログ、コミットしないでください。 - Pythonパッケージ.
python3 -c "import lingua, PIL"を実行し、失敗した場合はpip install lingua-language-detector pillowを実行してください(pipが拒否する場合は--userを追加するか、venvを使用してください)。ffmpegはオプションですが強く推奨されます。これがないと、エージェントはカバー画像のみからリーダーをラベル付けします。Windowsでは、このファイルでpython3と記載されている箇所はpythonを使用してください。 - 指示. 推測できないことだけを1回のメッセージで、以下のデフォルト値とともに尋ねてください。
- ニッチ(ユーザーの言葉で。除外するものがあればそれも。例:「歯科医療、歯学生は除く」)
- 市場: 国または言語、または「全世界」
- 期間: デフォルトは過去30日間。本日で終了する期間で問題ありません。新しいリールは単に視聴回数が少ないだけです。
- 予算(USD): 無料のApifyプランではデフォルト5ドル、有料プランでは10~15ドル。
- レポート言語: デフォルトはユーザーが使用している言語(UI文字列は
ruとenに対応)。
ワークフロー
1. 実行フォルダと設定
カレントプロジェクト(またはユーザーが希望する場所)に reels-research/<短いスラッグ>/ を作成し、config.json を書き込みます。最初に ${CLAUDE_SKILL_DIR}/references/config.md を読んでください。すべてのフィールドと良いクエリの書き方が説明されています。重要な点は以下の通りです。
segments: 言語または市場ごとに1つ。大規模市場では8~30のネイティブクエリ(実際に人々が入力するフレーズ、サービス名、スラング)、小規模市場では3~6のクエリを含み、min_viewsは市場に合わせて調整します。英語のクエリは全世界のコンテンツを取得します。各市場のクエリはその市場の言語で記述してください。relevance_regex: 検索するすべての言語でのニッチの語幹(リールがこれに一致する必要があります)。exclude_regex: 絶対にカウントしてはいけないもの(アダルトサービス、スパム、ニッチワードの無関係な意味)。topics: マルチリンガルな正規表現を持つ8~12のサブトピック。最も具体的なものから最も一般的なものの順に並べ、fallback_topicを含めます。focus_topics: 言語間で比較する予定のトピック。${CLAUDE_SKILL_DIR}/references/examples/には完全な全世界設定(マッサージ、19言語)と小規模な無料プラン設定があります。
2. アカウント確認とコスト
python3 ${CLAUDE_SKILL_DIR}/scripts/check.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/search.py RUN --dry
check.py はプランを読み取り、エンジンを選択します。有料Apifyプランでは memo23(サーバー側で日付と視聴回数のフィルタリング、ミスは無料)、無料プランでは hashtag(memo23は無料アカウントに対して1クエリのみ、数件の結果しか提供しません)。プラン、エンジン、最悪の場合のコスト、予算を1~2行でユーザーに伝えてください。スクリプトは残りの budget_usd を超える実行を開始しません。ユーザーの同意なしに予算を増やさないでください。
3. 検索とマージ
python3 ${CLAUDE_SKILL_DIR}/scripts/search.py RUN # 5~25分、バックグラウンドで実行
python3 ${CLAUDE_SKILL_DIR}/scripts/merge.py RUN
他の作業に支払う前に、マージサマリーを読んでください。
not_in_nicheが多い: 正規表現が狭すぎるか、クエリがずれています。保持されたリールにオフトピックが多い: 正規表現が広すぎます。- ある言語のリールが非常に少ない: その言語でクエリを追加し、
search.py RUN --only SEG --tag extra2を実行してから、再度マージしてください(生ファイルは蓄積されます)。 - hasthagエンジンの場合、
outside_datesはしばしば70~90%です。30~60日のウィンドウを使用し、より多くの具体的なハッシュタグ、より大きなsearch.hashtag_resultsを使用するか、有料プランを提案してください。
4. 投稿者、倍率、リーダー
python3 ${CLAUDE_SKILL_DIR}/scripts/profiles.py RUN --dry # その後 --dry なしで実行
python3 ${CLAUDE_SKILL_DIR}/scripts/score.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/leaders.py RUN
プロフィールは、profiles.floor_by_lang を超えるリールを持つ投稿者についてのみ取得されます。予算に合わせてフロアや --max を調整してください。リーダー = 全体の×倍率トップ(視聴回数の下限あり)+ 視聴回数トップ + 各言語内の×倍率トップです。全世界実行では100~250のリーダー、単一市場では30~80を目指してください。
5. リーダーのエンリッチ(3つを並列実行)
python3 ${CLAUDE_SKILL_DIR}/scripts/transcripts.py RUN
python3 ${CLAUDE_SKILL_DIR}/scripts/about.py RUN # 各リーダーアカウントの国、有料プランのみ
python3 ${CLAUDE_SKILL_DIR}/scripts/media.py RUN # 4コマ画像 + カバー画像。CDNリンクは数日で期限切れになるため、検索後すぐに実行
6. フレームからリーダーをラベル付け
python3 ${CLAUDE_SKILL_DIR}/scripts/batches.py RUN --size 20
これにより、work/label_prompt.md(このニッチの分類法で既に埋められた指示)と、リーダー20件ごとに1つのバッチファイルが作成され、BATCHパスとOUTパスが出力されます。すべてのバッチに対して1つのメッセージでサブエージェントを起動し(並列実行)、以下のプロンプトを使用します。
RUN/work/label_prompt.md のラベリング指示を読み、正確に従ってください。その指示の中で、{BATCH} = <バッチパス>、{OUT} = <出力パス> です。
サブエージェントが利用できない場合は、同じ指示で自分でバッチをラベル付けしてください。ラベルはフレームを見て判断する必要があります。多くのビジュアルニッチのリールには音声がなく、キャプションも画面上の内容を説明していないことが多いためです。python3 ${CLAUDE_SKILL_DIR}/scripts/labels.py RUN でカバレッジを確認してください。
7. カウント前のレビュー
×倍率トップ20のリーダーと、エージェントがフラグを立てたり無関係と判断したすべてのリールのフレームを開いてください。work/overrides.json でバッチ間のルールを統一します(形式は ${CLAUDE_SKILL_DIR}/references/content.md にあります)。例えば、運動のみのリールはマッサージではない、モデルの身体を売るコンテンツファームは "flagged": {"<リールコード>": "sexualised"}、他人の動画の再投稿は "repost" とします。フラグが立てられたリールはデータとレポートグリッドに残りますが(デフォルトでは非表示)、フォーマットテーブルやアイデアには含まれません。
8. 数値とストーリー
python3 ${CLAUDE_SKILL_DIR}/scripts/stats.py RUN
サマリーを読み、事業者が行動できる6~7の調査結果を見つけてください。各主張をデータと照合してから記述してください。
- ある言語で何かが不足しているという主張には、その言語を適切な単語で検索した証拠が必要です(検索していない場合はクエリを追加して再実行してください)。
- リーダーが5件未満のフォーマットには「リール数が少ない」という注意書きを追加してください。
- 追加の数値は、
work/scored.jsonとwork/cls/に対する短いPythonスニペットで計算し、決して記憶に頼らないでください。 次に、${CLAUDE_SKILL_DIR}/references/content.mdに従ってRUN/content.jsonを記述します。調査結果、フォーマット・トピック・言語に関するメモ、8~10のアイデア(タイトル、カメラで言えるフック、なぜ機能するのかを数値とともに、2~3のリールコード例)、「最初の数秒」セクション用の12~16のフックを含めます。
9. レポート
python3 ${CLAUDE_SKILL_DIR}/scripts/build.py RUN
report/index.html(ブラウザで開く)、report/artifact.html(Claudeアーティファクトとして公開するためのボディのみのバージョン。環境にArtifactツールがある場合)、report/reels.json(全リールとスコア・ラベル)を生成します。レポートの場所、実行の総コスト(work/spend.jsonl)、および最も有用な調査結果3~5件を平易な言葉でユーザーに伝えてください。
数値を正直に読むために
- 検索は注目すべきリールを返すものであり、すべてのリールを返すわけではないため、中央値は典型的なアカウントのものよりも高くなります。グループ同士を比較し、ユーザー自身の数値と比較しないでください。
- ×倍率は投稿者に相対的です。小さなアカウントほど大きな倍率を生み出します。それがポイントです(リーチにフォロワーは必要ありません)。ただし、その旨を明確に述べてください。
- フォーマットテーブルはリーダーを説明するものであり、ニッチ全体ではありません。トピック、再生時間、フォロワーテーブルはすべてのリールを使用します。
- ウィンドウの最後の数日のリールはまだ視聴回数を集めている最中です。
- 言語は国ではありません。国を調べるには
about.pyを使用してください。
実際の実行からのさらなる教訓は ${CLAUDE_SKILL_DIR}/references/gotchas.md にあります。全世界実行や多言語実行の前に読んでください。