mcpField
T
tiktok-app-marketing

tiktok-app-marketing

github.com/upload-postマーケティング・グロース43230 回インストール36 週間前に更新
リポジトリ

tiktok-app-marketing について

アプリ向けTikTokマーケティングを支援するAIエージェント用スキルです。スライド投稿の作成、公開、効果測定を軸に、内容の改善を進めます。

主な機能

  1. 01競合調査とコンテンツ計画
  2. 02スライドまたは動画形式の設定
  3. 03画像生成または手持ち画像の利用
  4. 04スライドへのテキスト重ね合わせ
  5. 05Upload-Postによる投稿と分析
  6. 06RevenueCatによるコンバージョン追跡

活用シーン

  1. 01競合の投稿を参考にした企画
  2. 02画像スライド形式のTikTok投稿作成
  3. 03投稿の公開と反応の確認
  4. 04投稿とサブスクリプション転換の分析

MCP 対応

READMEでは、製品やオファリングをプログラムから操作するRevenueCat MCPに言及しています。これは任意の別コンポーネントです。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/upload-post/upload-post-larry-marketing-skill --skill tiktok-app-marketing

インストール後、Claude Code で/tiktok-app-marketingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

_meta.json
README.md
.gitignore
LICENSE
index.html
references/
slide-structure.md
revenuecat-integration.md
analytics-loop.md
competitor-research.md
app-categories.md
scripts/
competitor-research.js
check-analytics.js
onboarding.js
daily-report.js
add-text-overlay.js
generate-slides.js
post-to-platforms.js

詳細

TikTok アプリマーケティング

TikTok のスライドショーを使ったマーケティングワークフロー全体を自動化します:生成 → オーバーレイ追加 → 投稿 → 効果測定 → 改善。

実績あり: 話題になった X の記事で 700 万回再生、TikTok で 100 万回以上再生、月間経常収益(MRR)670 ドルを達成。すべて、古いゲーミング PC で動く AI エージェントによるものです。

前提条件

このスキルには依存関係が一切含まれていません。AI エージェントは、お使いの環境に合わせて以下を調査し、インストールする必要があります。何を使っているかエージェントに伝えれば、残りは判断してくれます。

必須
  • Node.js(v18 以降)— すべてのスクリプトは Node 上で動作します。エージェントはインストール済みか確認し、未インストールの場合はインストールする必要があります。
  • node-canvas(npm install canvas)— スライド画像にテキストオーバーレイを追加するために使用します。これはネイティブモジュールで、一部のシステムではビルドツール(Python、make、C++ コンパイラー)が必要になる場合があります。エージェントは、お使いの OS でのインストール要件を調査する必要があります。
  • Upload-Post — システム全体を支える基盤です。Upload-Post を使うと、1 回の API 呼び出しで TikTok、Instagram、その他 10 以上のプラットフォームに同時に投稿できます。また、分析データ(フォロワー数、インプレッション数、リーチ)とアップロード履歴(投稿ごとの追跡)も提供し、毎日のフィードバックループを支えます。Upload-Post がなければ、エージェントは投稿も、何が効果的かの追跡もできません。このフィードバックループによって、ただ闇雲に投稿するのではなく、アカウントを実際に成長させられます。upload-post.com で登録してください。
画像生成(いずれか 1 つを選択)

画像を生成する方法を選んでください。エージェントは、選択したサービスの API ドキュメントを調査する必要があります。

  • OpenAI — gpt-image-1.5 (必ず 1.5。1 は使用しないでください)。OpenAI API キーが必要です。写真のようにリアルな画像に最適です。Larry が使用しており、強くおすすめする方法です。
  • Stability AI — Stable Diffusion XL 以降。Stability AI API キーが必要です。様式化された画像やアート風の画像に適しています。
  • Replicate — 任意のオープンソースモデル(Flux、SDXL など)を実行できます。Replicate API トークンが必要です。最も柔軟な方法です。
  • ローカル — 画像はご自身で用意します。API は不要です。出力ディレクトリに画像を配置すれば、スクリプトは生成処理をスキップします。
コンバージョンの追跡(モバイルアプリでは任意ですが推奨)
  • RevenueCat — インテリジェンスのフィードバックループを完成させます。Upload-Post では、どの投稿がインプレッションを獲得したかがわかります。RevenueCat では、どの投稿が有料ユーザーを獲得したかがわかります。両者を組み合わせることで、エージェントは収益につながらないバズ投稿と、コンバージョンにつながる控えめな投稿を見分け、それに応じて最適化できます。サブスクライバー、MRR、トライアル、解約、収益の API に完全にアクセスするには、ClaWHub から RevenueCat スキル(clawhub install revenuecat)をインストールしてください。エージェントや IDE から製品やオファリングをプログラムで操作できるRevenueCat MCP もあります。
クロスポスト(Upload-Post に標準搭載)

Upload-Post は TikTok、Instagram、YouTube、LinkedIn、Facebook、X(Twitter)、Threads、Pinterest、Reddit、Bluesky への投稿に対応しており、すべて 1 回の API 呼び出しで実行できます。エージェントは、オーディエンスに適したプラットフォームを調査し、Upload-Post のプロフィールに接続する必要があります。同じコンテンツでも、異なるアルゴリズムでより多くの人に届けられます。

初回実行 — オンボーディング

このスキルを初めて読み込んだら、すぐにユーザーとの会話を始めてください。チェックリストを一方的に提示するのではなく、マーケティングパートナーとして人間らしく会話してください。以下の流れはガイドであり、台本ではありません。自然に話し、一度に 1 つか 2 つ質問してください。ユーザーの発言に反応し、その回答を踏まえて話を進めてください。

重要: 最後に scripts/onboarding.js --validate を使用して、設定がすべて完了していることを確認してください。

フェーズ 0:TikTok アカウントのウォームアップ(重要 — スキップしないでください)

何よりも先に、ユーザーが投稿履歴のある TikTok アカウントをすでに持っているか確認します。新規アカウントを作成する場合は、まず必ずウォームアップしてください。そうしないと、TikTok にボットと判定され、初日からリーチを制限されます。

自然な流れで説明します:

「始める前にひとつ確認させてください。すでに使っている TikTok アカウントはありますか? それとも新しく始めますか? 新しいアカウントの場合、まずウォームアップが必要です。TikTok のアルゴリズムは新しいアカウントの行動を監視しています。アカウントを作ってすぐに AI スライドショーを投稿すると、ボットと判定されてリーチが大きく落ちてしまいます。」

アカウントが新しい、またはほとんど使われていない場合は、次の手順を案内してください:

目標は、何かを投稿する前に7~14 日間、TikTok を普通の人のように使うことです。アプリを毎日30~60 分使います。

  • おすすめページを自然にスクロールします。 最後まで見る動画もあれば、途中でスキップする動画もあります。すべての動画を最後まで見るのは避けてください。実際の人はそのようなスクロールをしません。
  • 「いいね」は控えめにします。 10 本に 1 本程度です。すべてに「いいね」するのは避けてください。ボットのような行動です。自分のニッチな分野で、本当に興味を持ったものだけに「いいね」します。
  • 自分のニッチな分野のアカウントをフォローします。 フィットネスアプリを宣伝するなら、フィットネスクリエイターをフォローします。部屋のデザインなら、インテリアデザイン関連のアカウントをフォローします。これにより、アルゴリズムがアカウントの内容を理解できるようになります。
  • ニッチな分野のコンテンツを意識的に視聴します。 これが最も重要な点です。TikTok はユーザーが何に反応するかを学習し、それに似たコンテンツをさらに表示します。おすすめページが、これから投稿するものに似たコンテンツで占められるようにします。
  • 本物のコメントをいくつか残します。 スパムではなく、自然な反応を投稿します。1 回の利用中に数件程度です。
  • 気軽な動画を 1~2 本投稿しても構いません。 宣伝は避けてください。アカウントの背後に実在の人がいることが TikTok に伝わるよう、普通のコンテンツを投稿します。

確認する目安: TikTok を開いたとき、おすすめページのほとんどすべてが自分のニッチな分野の動画になっていれば、アカウントはウォームアップ済みです。アルゴリズムがユーザーのことを理解しています。その段階で投稿を始められます。

ユーザーには次のように伝えます。「2 週間も待つのは時間の無駄に感じるかもしれません。でも、ウォームアップを省略したアカウントは、最初の投稿のリーチが一貫して 80~90%も少なくなります。ウォームアップをしてください。最初の投稿が 200 回再生されるか、20,000 回再生されるかの違いになります。」

**アカウントがすでに活発に使われていて、十分な実績がある場合は、**この手順をすべてスキップしてフェーズ 1 に進みます。

フェーズ 1:アプリを知る(会話形式)

まずはカジュアルに始めます。たとえば、次のように聞きます。

「こんにちは!TikTok マーケティングを始めましょう。まず、あなたのアプリについて教えてください。名前は何ですか?どんなことができますか?」

相手の回答に応じて、追加で質問します。9つの質問を一度にすべて聞くのではなく、話を掘り下げていきます。

  • アプリの機能について話してくれたら、対象ユーザーを尋ねます(「理想的なユーザーはどんな人ですか?」)
  • 対象ユーザーについて説明してくれたら、解決する課題を尋ねます(「その人たちが抱える主な問題は何ですか?」)
  • 課題について説明してくれたら、差別化ポイントを尋ねます(「類似のサービスと比べて、あなたのアプリが際立つ点は何ですか?」)
  • 自然な流れで App Store またはウェブサイトのリンクを聞きます(「リンクを送ってもらえますか?」)
  • カテゴリを特定します(ホーム、美容、フィットネス、生産性、食品、その他)。多くの場合、推測できます。

ロボットのように「ブランドガイドラインはありますか?」と尋ねないでください。 代わりに、「既存のコンテンツや目指している雰囲気はありますか?それとも、ゼロから始めますか?」と聞きます。

続けて、アプリと収益化について尋ねます。

「これはモバイルアプリですか?また、決済の処理に RevenueCat(またはサブスクリプション/アプリ内課金システム)を使っていますか?」

これは、フィードバックループ全体を構築できるかどうかを左右するため、非常に重要です。RevenueCat を利用しているモバイルアプリの場合は、次のようにします。

  • ClawHub にある RevenueCat スキルについて伝えます(clawhub install revenuecat)。このスキルを使うと、サブスクライバー、MRR、トライアル、解約、収益、取引に関する API にフルアクセスできます。自動インストールはせず、スキルの存在と利用できる機能を伝え、必要であればユーザー自身にインストールしてもらいます。
  • 重要な理由を説明します。 RevenueCat のデータがないと、このスキルが最適化できるのは閲覧数(虚栄の指標)だけです。データがあれば、実際に料金を支払うユーザーに向けて最適化できます。この違いは非常に大きいです。20万回再生されてもコンバージョンがゼロの投稿には価値がありません。一方、5,000回再生で有料サブスクライバーを10人獲得した投稿には大きな価値があります。RevenueCat を接続して初めて、この違いがわかります。

RevenueCat は利用していなくても、別のサブスクリプションシステムを使っている場合は、それを記録し、利用可能な情報を使って進めます。モバイルアプリでない場合(物理的な製品、SaaS、サービスなど)は RevenueCat の話題を省き、代わりに利用できるコンバージョン指標(ウェブサイトの登録、購入、見込み客など)を追跡します。

すべての情報を tiktok-marketing/app-profile.json に保存します。

フェーズ 2:競合調査(ブラウザーの利用許可が必要)

コンテンツ戦略を立てる前に、競合他社が TikTok でどのような投稿をしているか調べます。市場の状況を把握することは非常に重要です。

ユーザーに次のように尋ねます。

「コンテンツを作り始める前に、競合他社が TikTok でどのような投稿をしているか調べたいです。あなたの分野で再生数を獲得している投稿や、使われているフック、うまくいっていることとそうでないことを確認します。TikTok と App Store をブラウザーで見てもいいですか?」

許可を待ちます。 許可が得られたら、次の手順に進みます。

  1. アプリの分野に関するキーワードで TikTok を検索します(例:「インテリアデザインアプリ」「リップフィラー加工」「フィットネスの変身アプリ」)
  2. 類似のコンテンツを投稿している 競合アカウントを3~5件見つけます
  3. パフォーマンスの高いコンテンツを分析します。
    • どのようなフックを使っていますか?
    • スライドの形式は何ですか?(ビフォー/アフター、リスト、POV、チュートリアル)
    • 最も再生された投稿と平均的な投稿の再生数は、それぞれどのくらいですか?
    • 投稿頻度はどのくらいですか?
    • どのような CTA を使っていますか?
    • この分野で流行している音楽やサウンドは何ですか?
  4. App Store を確認し、アプリのカテゴリにある競合アプリ、そのスクリーンショット、説明、評価を調べます。
  5. 調査結果を tiktok-marketing/competitor-research.json にまとめます。
{
  "researchDate": "2026-02-16",
  "competitors": [
    {
      "name": "CompetitorApp",
      "tiktokHandle": "@competitor",
      "followers": 50000,
      "topHooks": ["hook 1", "hook 2"],
      "avgViews": 15000,
      "bestVideo": { "views": 500000, "hook": "..." },
      "format": "before-after slideshows",
      "postingFrequency": "daily",
      "cta": "link in bio",
      "notes": "Strong at X, weak at Y"
    }
  ],
  "nicheInsights": {
    "trendingSounds": [],
    "commonFormats": [],
    "gapOpportunities": "What competitors AREN'T doing that we could",
    "avoidPatterns": "What's clearly not working"
  }
}
  1. 会話形式で調査結果をユーザーと共有します。

「調べてみたところ、[競合 A] は [形式] でうまくいっています。最も再生された投稿は [フックの種類] を使って [X] 回再生されていました。一方で、[見落とされている点] に取り組んでいるところはほとんどありません。そこが私たちの狙い目です。」

この調査結果は、フックの生成とコンテンツ戦略に直接役立ちます。投稿を作成するときに参照してください。

フェーズ 3:コンテンツ形式と画像生成

まず、形式について尋ねます。

「スライドショー(写真カルーセル)と動画のどちらにしますか?スライドショーはLarryが使っている形式で、このスキルもスライドショー向けに作られています。TikTokのデータによると、動画と比べてコメントが2.9倍、シェアが2.6倍多く、AIで安定して生成するのもずっと簡単です。とはいえ、動画を試したい場合もこのスキルで対応できます。ただし、スライドショーのように十分な実績があるわけではありません。お好みで選んでください。」

選択内容を、設定にformat: "slideshow"またはformat: "video"として保存します。動画を選んだ場合は、テキストオーバーレイ、6枚構成、プロンプトのテンプレートがスライドショー向けに設計されていることを記録します。動画にはさらなる試行錯誤が必要になるため、エージェントはその点を率直に伝えてください。

スライドショーの場合(推奨):

自然に尋ねます。

「スライドショーには画像が必要です。OpenAIのgpt-image-1.5を強くおすすめします。Larryが使っているもので、まるで誰かがスマートフォンで撮ったような画像を本当に生成できます。『明らかにAI』と『えっ、これって本物?』の違いです。Stability AI、Replicateを使ったり、お好みで自分の画像を用意したりすることもできます。」

⚠️ OpenAIを選んだ場合は、モデルが必ずgpt-image-1.5に設定されていることを確認してください。gpt-image-1は絶対に使用しないでください。 品質の差は非常に大きいです。gpt-image-1はAI生成だとすぐわかる画像になりやすく、見た人にスクロールで飛ばされてしまいます。gpt-image-1.5はスクロールを止めるような、フォトリアルな画像を生成します。この設定ひとつで、再生回数が1Kになるか100Kになるかが変わることもあります。

迷っている場合は、必ずgpt-image-1.5をおすすめします。実績のある選択肢です。

プロバイダー、apiKey、モデルとともに、imageGenとして設定に保存します。

OpenAIを選んだ場合は、Batch APIについて伝えます。

「知っておくとよい点があります。OpenAIには、リアルタイム生成より50%安いBatch APIがあります。スライドをその場で生成する代わりに、バッチジョブとして送信すると、24時間以内に結果が得られます(通常はもっと早く届きます)。翌日のスライドを夜間に事前生成するのに最適です。品質はそのままで、コストは半分です。設定しましょうか?」

興味がある場合は、"useBatchAPI": trueをimageGen設定に保存します。生成スクリプトはどちらのモードにも対応しており、素早く試す場合はリアルタイム、毎日のコンテンツを予定どおりに作成する場合はバッチを使えます。

次に、ここが重要です。画像のスタイルを一緒に決めてください。 汎用的なプロンプトを使うだけではいけません。画像の出来が悪ければ、誰も見てくれません。次の質問を、自然な流れで一度に1つか2つ尋ねます。

「では、画像を実際にどんな見た目にするか決めましょう。スマートフォンで誰かが撮ったような実際の写真にしますか?それとも、もっと洗練されたグラフィックやイラストにしますか?」

回答に応じて、詳しく尋ねます。

  • 何を写しますか? 「実際には何を見せますか?部屋、顔、商品、ビフォーアフターの比較などでしょうか?」
  • どんな雰囲気にしますか? 「居心地のよい温かみのある雰囲気、すっきりしたミニマルな雰囲気、豪華な雰囲気のどれがよいですか?視聴者が共感したり、憧れたりするものを考えてみてください。」
  • 一貫性: 「6枚すべてで、同じ場所や人物に見えるようにしますか?そうする場合は、各スライドの見た目がまったく違ってしまわないよう、具体的な特徴を固定する必要があります。」
  • 必ず含めたい要素はありますか? 「すべての画像に必ず入れたいものはありますか?特定の商品、家具、ペットなどでしょうか?」

ベースプロンプトは、ユーザーと一緒に作成します。良いベースプロンプトの例:

iPhone photo of a [specific room/scene], [specific style], [specific details].
Realistic lighting, natural colors, taken on iPhone 15 Pro.
No text, no watermarks, no logos.
[Consistency anchors: "same window on left wall", "same grey sofa", "wooden coffee table in center"]

合意したプロンプトのスタイルは、今後のすべての投稿で使えるようにimageGen.basePromptとして設定に保存してください。

プロンプトの重要なルール(講義のように説明せず、話題に上がったときに伝えてください):

  • 「iPhoneで撮影した写真」+「自然な照明」=AI生成ではなく、本物のように見えます
  • 毎回のスライドプロンプトで建築様式やレイアウトを固定しないと、スライドごとに別の場所に見えてしまいます
  • 生活感を出すため、マグカップ、リモコン、雑誌などの日用品を含めます
  • ビフォーアフターの場合、「ビフォー」は古びた現代的な状態にし、古代のような見た目にはしません
  • 必ず縦向き(1024x1536)にします。TikTok向けです
  • 曖昧な表現より、きわめて具体的な表現を使います(「白いキャビネットとシンクの上の窓がある小さなギャレーキッチン」>「キッチン」)

「素敵なリビングルーム」や「美しい顔」のような汎用プロンプトは絶対に使わないでください。 ありきたりな画像が生成され、見た人にスクロールで飛ばされてしまいます。

フェーズ 4:Upload-Post のセットアップ(必須 — マルチプラットフォーム投稿と分析を実現)

Upload-Post は、マルチプラットフォームへの投稿と分析の追跡を実現するエンジンです。API を 1 回呼び出すだけで、コンテンツを TikTok、Instagram、その他の接続済みプラットフォームに同時に投稿できます。次の機能を提供します。

  • マルチプラットフォーム投稿 — 1 回の API 呼び出しで TikTok + Instagram(+ YouTube、LinkedIn、Facebook、X、Threads、Pinterest、Reddit、Bluesky)に投稿
  • アップロード履歴 — request_ids、投稿 URL、成功/失敗のステータスによる投稿ごとの追跡
  • プラットフォーム分析 — フォロワー数、インプレッション数、リーチ、プロフィールの閲覧数、時系列データ
  • 自動追跡 — 動画 ID を手動で紐付ける必要はありません(request_id で追跡)

ユーザーには自然な流れで説明します。

「ここが重要なポイントです。投稿と分析には Upload-Post が必要です。API を 1 回呼び出すだけで TikTok と Instagram に同時に投稿でき、すべての投稿のパフォーマンスを追跡できます。1 回のアップロードで複数のプラットフォームに投稿し、自動で追跡できます。」

接続手順を順に案内します。

  1. upload-post.com にサインアップする — アカウントを作成します
  2. TikTok を接続する — まずはこちらから。プロフィールに移動 → TikTok を接続 → 承認します
  3. Instagram を接続する — 同じ手順です。無料でリーチを 2 倍にできます。
  4. プロフィールを作成する — これは API 呼び出しで使うプロフィール名です(例:「mybrand」)。メモしておいてください。
  5. API キーを取得する — Dashboard → API Keys → Generate。このキーを使って、エージェントがプログラムから Upload-Post に接続します。
  6. (任意) YouTube、LinkedIn、Threads なども接続すると、さらにリーチを広げられます — 同じコンテンツでも、アルゴリズムは異なります。

Upload-Post が接続され、API キーが使えるようになるまで先に進まないでください。 分析エンドポイントを呼び出してテストします。データが返ってくれば準備完了です。

フェーズ 5:コンバージョンの追跡(インテリジェンスループ)

RevenueCat を導入したモバイルアプリをお持ちの場合(フェーズ 1 ですでに確認しているはずです)、ここでスキルは「コンテンツの自動化」から「インテリジェントなマーケティングシステム」へと変わります。これはスキル全体で最も重要な連携です。任意の項目として扱わないでください。

重要な理由を説明します。

「現在、Upload-Post では、どの投稿がインプレッションやリーチを獲得したか、また各プラットフォームへの配信に成功したかどうかを追跡できます。これはファネルの上部にあたります。しかし、インプレッションだけでは売り上げにつながりません。どの投稿が実際に有料登録者を獲得しているかを把握する必要があります。」

「そこで RevenueCat の出番です。登録者、トライアル、MRR、解約など、実際の収益を追跡します。Upload-Post のプラットフォーム分析と RevenueCat のコンバージョンデータを組み合わせると、本当にインテリジェントな判断ができるようになります。」

「投稿のインプレッションが 50K でコンバージョンがゼロなら、フックは優れていますが、CTA やアプリのメッセージを改善する必要があると分かります。投稿のインプレッションが 2K で有料登録者が 5 人なら、コンテンツのコンバージョン率が非常に高いと分かります。あとは、もっと多くの人に見てもらえるよう、フックを改善するだけです。」

「RevenueCat がなければ、見栄えの良い指標を最適化することになります。RevenueCat があれば、収益を最適化できます。」

セットアップを手順ごとに案内します。

  1. ClaWHub から RevenueCat スキルをインストールします。

    clawhub install revenuecat
    

    これにより、RevenueCat プロジェクトへの完全な API アクセスを提供する revenuecat スキル(v1.0.2 以降)がインストールされます。メトリクスの概要、顧客、サブスクリプション、オファリング、エンタイトルメント、トランザクションなどを確認できます。すべての API エンドポイントのリファレンスドキュメントと、API を直接呼び出すためのヘルパースクリプト(scripts/rc-api.sh)も含まれています。

  2. RevenueCat ダッシュボードからV2 シークレット API キーを取得します。

    • RC プロジェクト → Settings → API Keys の順に移動します。
    • V2 シークレットキー(sk_ で始まるもの)を生成します。
    • ⚠️ これはシークレットキーです。公開リポジトリにコミットしないでください。
  3. 環境変数を設定します。

    export RC_API_KEY=sk_your_key_here
    
  4. 動作を確認します。 ./skills/revenuecat/scripts/rc-api.sh /projects を実行します。プロジェクトの詳細が返されるはずです。

  5. 任意:RevenueCat MCP — エージェントまたは IDE から、プロダクト、オファリング、エンタイトルメントをプログラムで操作するためのものです。セットアップ方法を調べるよう、エージェントに依頼してください。

RevenueCat を使った日次レポートで得られる情報:

  • GET /projects/{id}/metrics/overview → MRR、アクティブな登録者数、アクティブなトライアル数、解約率
  • GET /projects/{id}/transactions → 個々の購入とタイムスタンプ(コンバージョンのアトリビューション用)
  • 日次 cron では、トランザクションのタイムスタンプと投稿の公開時刻を照合し(24~72 時間の範囲)、どの投稿がどのコンバージョンにつながったかを特定します。

これにより可能になるインテリジェンス:

  • 「このフックは 50K 回表示されたのに、コンバージョンはゼロ」→ フックは優れていますが、CTA の改善が必要です。
  • 「このフックは 5K 回表示され、有料登録者を 3 人獲得した」→ コンテンツのコンバージョン率が非常に高いため、より多くの人に届くようフックを改善します。
  • 「すべての投稿でコンバージョンが一貫して低い」→ コンテンツの問題ではなく、アプリ(オンボーディング、ペイウォール、価格設定)の問題である可能性があります。スキルは調査が必要な項目としてこれを通知します。

RevenueCat がない場合: Upload-Post の分析(インプレッション/リーチ/アップロード状況)を使ったループは引き続き機能します。エンゲージメントの最適化はできますが、収益については手探りになります。どの投稿がインプレッションを獲得したかは分かっても、どの投稿が収益を生み出したかは分かりません。

RevenueCat がある場合: 実際に支払いを行うユーザーに向けて最適化できます。何も生み出さないバイラル投稿と、目立たなくてもサブスクリプションで 50 ドルの収益をもたらす投稿を見分けられます。これこそがフィードバックループの目的です。日次レポートが行うすべての判断は、RevenueCat のデータによってより的確になります。

RevenueCat を使っていない場合や、サブスクリプションを提供していない場合でも、スキルは引き続き機能しますが、フィードバックループはインプレッションに基づく最適化に限られます。

フェーズ 6:コンテンツ戦略(リサーチに基づく)

競合調査とアプリのプロフィールを使って、初期のコンテンツ戦略を作成します。

「調査結果とアプリの機能を踏まえて、最初の1週間は次のように進めることをおすすめします……」

次の内容を提示します。

  1. フックのアイデアを3〜5個:ニッチな分野と競合の弱点に合わせて提案します
  2. 投稿スケジュール:推奨時刻(デフォルト:午前7時30分、午後4時30分、午後9時。ユーザーのタイムゾーンに合わせます)
  3. 最初にテストするフックのカテゴリー:競合で効果があったものを参考にします
  4. クロスポスト計画:対象プラットフォームと、同じコンテンツを投稿するか、調整するか

戦略を tiktok-marketing/strategy.json に保存します。

フェーズ 7:日次分析の Cron を設定する

この設定がシステム全体の自己改善を可能にします。次の処理を行う日次の Cron ジョブを設定します。

  1. Upload-Post からプラットフォーム分析データ(フォロワー数、インプレッション、リーチの推移)を取得します
  2. アップロード履歴を取得し、各プラットフォームでの投稿の成功・失敗を確認します
  3. RevenueCat が接続されている場合、コンバージョンデータを取得します
  4. インプレッションとコンバージョンを照合し、何が効果を上げているかを診断します
  5. 具体的な推奨事項を含むレポートを作成します
  6. パフォーマンスの傾向に基づいて、新しいフックを提案します

ユーザーには次のように説明します。

「毎朝実行する日次チェックを設定します。過去3日間の投稿のパフォーマンスを確認します。プラットフォーム分析、TikTok と Instagram でのアップロード状況、さらに RevenueCat が接続されていれば実際のコンバージョンも確認します。そして、何が効果を上げているのか、何を変更すべきかを具体的にお伝えします。」

「投稿のパフォーマンスは通常24〜48時間でピークに達し、コンバージョンの attribution には最大72時間かかります。そのため、3日間の期間を確認すれば、全体像を把握できます。」

Cron を設定する:

エージェントの Cron システムを使って、日次分析ジョブをスケジュールします。その日の最初の投稿より前(たとえば、ユーザーのタイムゾーンで午前7時)に毎朝実行し、その日のコンテンツにレポートを反映できるようにします。

Schedule: daily at 07:00 (user's timezone)
Task: Run scripts/daily-report.js --config tiktok-marketing/config.json --days 3
Output: tiktok-marketing/reports/YYYY-MM-DD.md + message to user with summary

日次レポートでは、次の診断フレームワークを使います。

  • 閲覧数が多い + コンバージョンが多い → 拡大します。同様のコンテンツを増やし、投稿時間をテストします
  • 閲覧数が多い + コンバージョンが少ない → フックは効果的ですが、CTA に問題があります。6枚目のスライドで新しい CTA をテストし、アプリのランディングページを確認します
  • 閲覧数が少ない + コンバージョンが多い → コンテンツはコンバージョンにつながっていますが、見られていません。フックを大きく変えてテストし、CTA は維持します
  • 閲覧数が少ない + コンバージョンが少ない → 全面的に見直します。新しい形式、新しいオーディエンスへの切り口、新しいフックのカテゴリーを試します

これがインテリジェンスレイヤーです。これがなければ、ただ投稿してうまくいくことを願うだけです。これがあれば、毎日のコンテンツにデータを反映できます。

フェーズ 8:設定の保存と最初の投稿

すべてを tiktok-marketing/config.json に保存します(これがパイプライン全体の信頼できる唯一の情報源です)。

{
  "app": {
    "name": "AppName",
    "description": "Detailed description",
    "audience": "Target demographic",
    "problem": "Pain point it solves",
    "differentiator": "What makes it unique",
    "appStoreUrl": "https://...",
    "category": "home|beauty|fitness|productivity|food|other",
    "isMobileApp": true
  },
  "imageGen": {
    "provider": "openai",
    "apiKey": "sk-...",
    "model": "gpt-image-1.5"
  },
  "uploadPost": {
    "apiKey": "your-upload-post-api-key",
    "profile": "your_profile_name",
    "platforms": ["tiktok", "instagram"]
  },
  "revenuecat": {
    "enabled": false,
    "v2SecretKey": "sk_...",
    "projectId": "proj..."
  },
  "posting": {
    "schedule": ["07:30", "16:30", "21:00"],
    "crossPost": ["youtube", "threads"]
  },
  "competitors": "tiktok-marketing/competitor-research.json",
  "strategy": "tiktok-marketing/strategy.json"
}

次に、最初のテスト用スライドショーを生成します。ただし、期待値は調整しておきましょう。

「最初のスライドショーを作成しましょう。これはテストです。まだ投稿はせず、画像のスタイルを調整します。スライドを6枚生成して、一緒に確認しましょう。画像の雰囲気が違っていたら、プロンプトを調整して再度試します。投稿を始める前に、目指す見た目をしっかり固めることが目標です。」

⚠️ 改良のプロセスもスキルの一部です:

画像を理想どおりに仕上げるには、試行錯誤が必要です。これは通常のことで、想定内です。ユーザーが進めやすいように案内してください。

  1. 一緒に作成したプロンプトを使って、テスト用の画像を6枚生成します
  2. 結果を見せて、「この仕上がりはどうですか? 洗練されすぎていますか? 暗すぎますか? 雰囲気が違いますか? 家具が違いますか?」と尋ねます
  3. フィードバックに基づいて調整し、ベースプロンプトを修正して再生成します
  4. ユーザーが満足するまで繰り返します。2~5回かかることもありますが、問題ありません
  5. 見た目がよくなったら、プロンプトのスタイルを確定し、設定に保存します

確認すべき点と、尋ねる内容:

  • 「十分にリアルですか? それともAI生成だとわかる見た目ですか?」
  • 「照明は適切ですか? 明るすぎますか? 雰囲気が重すぎますか?」
  • 「ユーザーが実際に共感できる内容になっていますか?」
  • 「日常的な細部は適切ですか?(家具のスタイル、物、レイアウトなど)」

気に入らないものを投稿する必要はありません。 最初の数回の生成は、あくまでプロンプトを調整するためのものです。画像の仕上がりが安定してよくなってから、投稿を始めてください。エージェントは各回から学習し、何がうまくいき、何がうまくいかないか、プロンプトで何を強調すべきかを把握します。

スタイルが確定したら、競合調査で得たフック戦略とカテゴリを使い(references/slide-structure.md を参照)、投稿スケジュールを開始します。


基本的なワークフロー

1. スライドショー画像の生成

script/generate-slides.js を使用します。

node scripts/generate-slides.js --config tiktok-marketing/config.json --output tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --prompts prompts.json

このスクリプトは、config.imageGen.provider に基づいて適切なプロバイダーに自動的に振り分けます。OpenAI、Stability AI、Replicate、またはローカル画像に対応しています。

⚠️ タイムアウトに関する警告: 画像を6枚生成するには、合計で3~9分かかります(gpt-image-1.5 の場合、1枚あたり30~90秒)。実行タイムアウトは**少なくとも600秒(10分)**に設定してください。spawnSync ETIMEDOUT が発生した場合、実行タイムアウトが短すぎます。このスクリプトは再開に対応しているため、途中で失敗した場合は再実行すると、生成済みのスライドはスキップされます。

重要な画像ルール(すべてのプロバイダーが対象):

  • 常に縦長のアスペクト比(1024x1536 または 9:16 相当)にします。TikTok の画面いっぱいに表示されます。
  • (AI プロバイダーの場合)プロンプトに「iPhone photo」と「realistic lighting」を含めます。
  • 6枚すべてのスライドで、まったく同じベースの説明を使用します(変更するのはスタイルまたは特徴のみ)。
  • 建築様式、顔の形、カメラのアングルなど、重要な要素はすべてのスライドで統一します。
  • 6枚構成のスライドショーの形式については、references/slide-structure.md を参照してください。
2. テキストオーバーレイの追加

この手順では node-canvas を使い、スライド画像に直接テキストを描画します。これが、Larry が TikTok で100万回以上の再生数を記録したスライドを作成する方法です。テキストのサイズ、配置、スタイルは、何百もの投稿を通じて調整されています。

node-canvas のセットアップ

テキストオーバーレイを追加する前に、ユーザーに node-canvas をインストールしてもらう必要があります。次のように案内してください。

「スライドにテキストオーバーレイを追加するには、node-canvas というライブラリが必要です。サイズ、位置、スタイルを細かく制御しながら、画像にテキストを直接描画できます。Larry がバズった TikTok のスライドに使っているものです。

ターミナルで次のコマンドを実行してもらえますか?」

npm install canvas

「うまくいかない場合は、node-canvas にいくつかのシステムライブラリが必要なためです。先に次のものをインストールしてください。」

macOS:

brew install pkg-config cairo pango libpng jpeg giflib librsvg
npm install canvas

Ubuntu/Debian:

sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
npm install canvas

Windows:

# node-canvas auto-downloads prebuilt binaries on Windows
npm install canvas

「インストールが完了すれば、オーバーレイの生成、テキストのサイズ調整、最適な位置への配置など、あとはすべてこちらで対応できます。もうこの作業をする必要はありません。」

この手順を省略しないでください。 node-canvas がないと、テキストオーバーレイは機能しません。インストールに失敗した場合は、トラブルシューティングを手伝ってください。たいていの場合、システムライブラリが不足しています。一度インストールすれば、そのまま使い続けられます。

Larry のテキストオーバーレイ処理の仕組み
  1. node-canvas に元のスライド画像を読み込む
  2. スライドごとのテキストの長さに基づいてテキスト設定を行う
  3. 白い塗りと太い黒い縁取りでテキストを描画する
  4. 出力を確認する — サイズ、位置、読みやすさをチェックする
  5. 気になる点があれば調整して再レンダリングする
  6. 仕上がりに問題がなければ最終画像を保存する

Larry が使用している正確なコード:

const { createCanvas, loadImage } = require('canvas');
const fs = require('fs');

async function addOverlay(imagePath, text, outputPath) {
  const img = await loadImage(imagePath);
  const canvas = createCanvas(img.width, img.height);
  const ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0);

  // ─── Adjust font size based on text length ───
  const wordCount = text.split(/\s+/).length;
  let fontSizePercent;
  if (wordCount <= 5)       fontSizePercent = 0.075;  // Short: 75px on 1024w
  else if (wordCount <= 12) fontSizePercent = 0.065;  // Medium: 66px
  else                      fontSizePercent = 0.050;  // Long: 51px

  const fontSize = Math.round(img.width * fontSizePercent);
  const outlineWidth = Math.round(fontSize * 0.15);
  const maxWidth = img.width * 0.75;
  const lineHeight = fontSize * 1.3;

  ctx.font = `bold ${fontSize}px Arial`;
  ctx.textAlign = 'center';
  ctx.textBaseline = 'top';

  // ─── Word wrap ───
  const lines = [];
  const manualLines = text.split('\n');
  for (const ml of manualLines) {
    const words = ml.trim().split(/\s+/);
    let current = '';
    for (const word of words) {
      const test = current ? `${current} ${word}` : word;
      if (ctx.measureText(test).width <= maxWidth) {
        current = test;
      } else {
        if (current) lines.push(current);
        current = word;
      }
    }
    if (current) lines.push(current);
  }

  // ─── Position: centered at ~28% from top ───
  const totalHeight = lines.length * lineHeight;
  const startY = (img.height * 0.28) - (totalHeight / 2);
  const x = img.width / 2;

  // ─── Draw each line ───
  for (let i = 0; i < lines.length; i++) {
    const y = startY + (i * lineHeight);

    // Black outline
    ctx.strokeStyle = '#000000';
    ctx.lineWidth = outlineWidth;
    ctx.lineJoin = 'round';
    ctx.miterLimit = 2;
    ctx.strokeText(lines[i], x, y);

    // White fill
    ctx.fillStyle = '#FFFFFF';
    ctx.fillText(lines[i], x, y);
  }

  fs.writeFileSync(outputPath, canvas.toBuffer('image/png'));
}

Larry のスライドをプロらしく見せる重要なポイント:

  • フォントサイズを動的に調整 — 短いテキストは大きく(75px)、長いテキストは小さく(51px)します。各スライドに合わせて最適化されます。
  • ワードラップ — 手動の \n 改行を維持しながら、幅の75%を超える行は自動で折り返します。文字が押しつぶされることはありません。
  • 上から28%の位置を中心に配置 — テキストブロックはこの位置に固定するのではなく、この位置を中心に垂直方向に配置します。行数にかかわらずセーフゾーン内に収まります。
  • 太い縁取り — フォントサイズの15%の太さです。どんな背景でもテキストを読みやすくします。
  • 手動改行を推奨 — 調整しやすいように、テキスト内で \n を使用してください。1行は4〜6語に収めてください。

テキスト内容のルール:

  • ラベルではなくリアクション — 「Wait... this is actually nice??」であって、「Modern minimalist」ではありません。
  • 1行あたり4〜6語 — 短い行はひと目で読み取れます。
  • 1枚あたり3〜4行が理想
  • 絵文字は使わない — canvas では安定して描画できません。
  • セーフゾーン: 下部20%(TikTok のコントロール)と上部10%(ステータスバー)にはテキストを配置しないでください。

普通のスライドとバズるスライドの差は、こうした細部にあります。 Larry のスライドは、テキストのサイズと位置が適切で、スクロール中でもひと目で読み取れるため、安定して50K〜150K以上の再生数を獲得しています。

⚠️ 改行は非常に重要です — こちらをお読みください:

texts.json ファイルには、行の折り返し位置を制御できるように \n の改行を含むテキストを記述する必要があります。改行なしの長い文字列を渡してもスクリプトが自動で折り返しますが、手動で改行したほうが、リズムを調整できるため見栄えがよくなります。

良い例(手動改行、1行あたり4〜6語):

[
  "I showed my landlord\nwhat AI thinks our\nkitchen should look like",
  "She said you can't\nchange anything\nchallenge accepted",
  "So I downloaded\nthis app and\ntook one photo",
  "Wait... is this\nactually the same\nkitchen??",
  "Okay I'm literally\nobsessed with\nthis one",
  "Snugly showed me\nwhat's possible\nlink in bio"
]

悪い例(改行なし — 自動で折り返されますが、見栄えは劣ります):

[
  "I showed my landlord what AI thinks our kitchen should look like",
  ...
]

オーバーレイテキストの作成ルール:

  1. 1行あたり最大4〜6語 — 短い行はひと目で読み取れます。
  2. \n を使って改行する — リズムを調整できます。
  3. 1枚あたり3〜4行が理想 — 行数が増えても問題ありません。はみ出すことはありません。
  4. 声に出して読む — 各行が自然な間になるようにします。
  5. 絵文字は使わない — canvas では描画できず、空白として表示されます。
  6. ラベルではなくリアクション — 「Wait... this is nice??」であって、「Modern minimalist」ではありません。

75%の幅を超える行は安全策としてスクリプトが自動で折り返しますが、最良の見た目にするには、常に手動で \n を入れてください。

3. TikTok + Instagram に投稿する

scripts/post-to-platforms.js を使用します:

node scripts/post-to-platforms.js --config tiktok-marketing/config.json --dir tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --caption "caption" --title "title"

すべてのスライド画像をアップロードし、Upload-Post 経由で 1 回の API 呼び出しにより、TikTok + Instagram(および設定済みのその他のプラットフォーム)に同時に投稿します。

仕組み:

  1. ディレクトリからスライド画像(slide1.png から slideN.png)を読み込みます
  2. Upload-Post の POST /upload_photos エンドポイントに送信します
  3. 1 つのリクエストに設定済みのすべてのプラットフォームを含めます
  4. バックグラウンド処理に async_upload=true を使用します
  5. 追跡用の request_id を返します(meta.json に保存されます)

手動で動画 ID を紐付ける必要はありません。 Upload-Post は request_id で投稿を自動的に追跡します。アップロード履歴エンドポイントから、プラットフォームごとの投稿 URL と成功/失敗のステータスを取得できます。

キャプションのルール: 長めのストーリー性のあるキャプション(閲覧数が 3 倍)。構成:フック → 課題 → 発見 → 機能 → 結果 → ハッシュタグは最大 5 個。会話調にします。

TikTok のスライドショーを下書きとして投稿する理由 — ベストプラクティス

特に TikTok では、投稿は写真カルーセルとして公開されます。TikTok の写真投稿は、トレンドのサウンドを使うと大きな効果が得られます。

  1. TikTok では音楽がすべてです。 トレンドのサウンドはリーチを大幅に伸ばします。アルゴリズムは人気の音源を使った投稿を優先します。
  2. 投稿後、TikTok のサウンドライブラリから音楽を追加します — 自分のニッチでトレンドになっているものを探しましょう。
  3. 音楽のない投稿は埋もれてしまいます。 無音のスライドショーは広告のように見え、スキップされます。トレンドのサウンドを使うと、コンテンツが自然に馴染みます。

これが、TikTok の閲覧数 100 万回以上、月次経常収益(MRR)670 ドルの達成に役立ったワークフローです。音楽を追加する手順を省略しないでください。

Instagram のカルーセルには音楽は必要ありません — そのままでも十分に機能します。Upload-Post は適切な設定で両方のプラットフォームに対応します。

4. アナリティクスを追跡する

scripts/check-analytics.js を使用して、プラットフォームのアナリティクスとアップロード履歴を取得します:

node scripts/check-analytics.js --config tiktok-marketing/config.json --days 3

スクリプトは次の処理を行います。

  1. プラットフォームレベルのアナリティクス(フォロワー数、インプレッション数、リーチ、プロフィール閲覧数)を取得します
  2. 過去 N 日間のアップロード履歴を取得します
  3. アップロードを request_id ごとにグループ化します(1 件の投稿 = 複数のプラットフォームエントリー)
  4. 投稿ごとの成功/失敗ステータスと投稿 URL を表示します
  5. スナップショットを analytics-snapshot.json に保存します

接続手順は不要です。 投稿 ID の手動での紐付けが必要なシステムとは異なり、Upload-Post は request_id であらゆる情報を自動的に追跡します。アップロードすると、履歴に投稿を受け取ったプラットフォームと投稿 URL がすぐに表示されます。

毎日の cron がこれらすべてを自動的に処理します。 朝に実行され、過去 3 日間を確認して、包括的なレポートを生成します。


フィードバックループ(重要 — これが機能する理由です)

これこそが、「TikTok に投稿する」ことと「マーケティングマシンを運用する」ことの違いです。毎日の cron は、2 つのソースからデータを取得します。

  1. Upload-Post → プラットフォームのアナリティクス(フォロワー数、インプレッション数、リーチ)+ アップロード履歴(投稿ごとの成功状況、投稿 URL)
  2. RevenueCat(接続されている場合)→ コンバージョンデータ(トライアル開始、有料サブスクリプション、収益)

これらを組み合わせることで、エージェントは次に何をすべきかを勘ではなく、実際のデータに基づいて賢く判断し、最適化できます。

毎日の cron(オンボーディング時に設定)

毎朝、最初の投稿の前に、cron が scripts/daily-report.js を実行します。

  1. Upload-Post からプラットフォームのアナリティクス(フォロワー数、インプレッション数、リーチの時系列データ)を取得します
  2. 過去 3 日間のアップロード履歴(投稿ごとのステータス、投稿 URL)を取得します
  3. RevenueCat が接続されている場合は、同じ期間のコンバージョンイベント(24〜72 時間のアトリビューション)を取得します
  4. 相互参照して、閲覧数を伸ばした投稿と、有料ユーザーを獲得した投稿を特定します
  5. 診断フレームワーク(下記)を適用して、何が効果を上げているかを判断します
  6. 調査結果を tiktok-marketing/reports/YYYY-MM-DD.md に生成します
  7. 概要と今日のフックの候補をユーザーにメッセージで送ります
診断フレームワーク

ここが中核となる判断基準です。2つの軸があります。再生数(見られているか)とコンバージョン(課金されているか)です。

再生数が多い + コンバージョンが多い → 🟢 拡大する

  • うまくいっています。成果の高いフックのバリエーションをすぐに3つ作成します
  • 最適な投稿時間を見つけるため、異なる時間帯に投稿してテストします
  • リーチをさらに伸ばすため、より多くのプラットフォームにクロスポストします
  • CTAは何も変更しません。コンバージョンにつながっています

再生数が多い + コンバージョンが少ない → 🟡 CTAを修正する

  • フックは機能しています。視聴されています。しかし、ダウンロードや登録にはつながっていません
  • スライド6のCTAを変えてみます(直接的 vs 控えめ、「ダウンロード」vs「App Storeで検索」)
  • アプリのランディングページが、スライドショーでの訴求内容と一致しているか確認します
  • キャプションの構成を変えてテストします。CTAが埋もれている可能性があります
  • フックは申し分ありません。変更しないでください。その後のすべてを修正します

再生数が少ない + コンバージョンが多い → 🟡 フックを修正する

  • それを見た人はコンバージョンしています。コンテンツとCTAは優れています
  • しかし、十分な人に見られていないため、フックやサムネイルがスクロールを止められていません
  • まったく異なるフックをテストします(人物+対立、POV、リスト形式、失敗談形式)
  • 投稿時間やスライド1の画像を変えてみます
  • CTAとコンテンツの構成はそのままにし、フックだけを変更します

再生数が少ない + コンバージョンが少ない → 🔴 全面リセット

  • フックもコンバージョンへの導線も機能していません
  • まったく異なる形式やアプローチを試します
  • ニッチな分野で今まさにトレンドになっているものを調査します(ブラウザーを使用)
  • ターゲットオーディエンスの切り口を変えることを検討します
  • 新しいフックのカテゴリーを一からテストします
  • 競合調査を参考に、他の人に効果が出ているものを確認します

再生数が多い + ダウンロード数が多い + 有料登録者が少ない → 🔴 アプリの問題

  • マーケティングは機能しています。視聴され、ダウンロードもされています。しかし、課金にはつながっていません
  • これはコンテンツの問題ではありません。アプリのオンボーディング、ペイウォール、または価格設定を修正する必要があります
  • 確認事項:ペイウォールは適切なタイミングで表示されていますか?無料で利用できる範囲が広すぎませんか?
  • 確認事項:ペイウォールの前に、オンボーディングでユーザーを「なるほど」と感じる体験へ導いていますか?
  • 確認事項:価格設定は適切ですか?感じられる価値に対して高すぎませんか?
  • これは、投稿をいったん中断し、まずアプリの体験を改善すべきというシグナルです

再生数が多い + ダウンロード数が少ない → 🟡 CTAの問題

  • 視聴されていますが、ダウンロードにはつながっていません。フックは機能していますが、CTAが機能していません
  • 「プロフィールのリンク」「App Storeで検索」「アプリ名のみ」「無料でお試し」など、CTAを入れ替えて試します
  • App Storeのページを確認します。TikTokで見せている内容と一致していますか?
  • 「プロフィールのリンク」が実際に機能し、正しいページにつながっていることを確認します

日次レポートがこれらすべてを自動化します。 プラットフォームのインプレッション(Upload-Post)とダウンロード数および収益(RevenueCat)を照合し、投稿ごとにファネルのどの部分に問題があるかを正確に知らせます。また、成果の高いパターンに基づいて新しいフックの候補を自動生成し、CTAの入れ替えが必要なタイミングも通知します。

フックの変遷

tiktok-marketing/hook-performance.json で追跡します:

{
  "hooks": [
    {
      "requestId": "abc123def456",
      "text": "My boyfriend said our flat looks like a catalogue",
      "date": "2026-02-15",
      "platforms": {
        "tiktok": { "success": true, "postUrl": "..." },
        "instagram": { "success": true, "postUrl": "..." }
      },
      "conversions": 4,
      "cta": "Download Snugly — link in bio",
      "lastChecked": "2026-02-16"
    }
  ],
  "ctas": [
    {
      "text": "Download [App] — link in bio",
      "timesUsed": 5,
      "totalConversions": 8,
      "conversionRate": 0.067
    },
    {
      "text": "Search [App] on the App Store",
      "timesUsed": 3,
      "totalConversions": 12,
      "conversionRate": 0.141
    }
  ],
  "rules": {
    "doubleDown": ["person-conflict-ai"],
    "testing": ["listicle", "pov-format"],
    "dropped": ["self-complaint", "price-comparison"]
  }
}

日次レポートがこれを自動で更新します。 各投稿にフックのテキスト、CTA、紐づくコンバージョンが記録されます。時間が経つにつれ、どのフックとCTAの組み合わせが再生数だけでなく、実際に収益につながるのかが明確になります。

CTAのローテーション: レポートがインプレッションは多いもののコンバージョンが少ないと検出すると、別のCTAへの切り替えを自動で推奨し、各CTAのパフォーマンスを個別に追跡します。データを蓄積できるよう、エージェントはすべての投稿に使用したCTAを記録します。

判断ルール:

  • インプレッションとコンバージョンが増加中 → 集中する。すぐにバリエーションを3つ作成します
  • インプレッションが安定 → 良好です。ローテーションに残します
  • インプレッションが減少 → もう1つバリエーションを試します
  • 一貫して低調 → 外す。まったく異なるものを試します
CTA のテスト

閲覧数は良好でもコンバージョンが低い場合は、CTA を順番に試します:

  • 「[App] をダウンロード — リンクはプロフィールに」
  • 「[App] は無料でお試しいただけます — リンクはプロフィールに」
  • 「この動画には [App] を使いました — リンクはプロフィールに」
  • 「App Store で [App] を検索」
  • 明示的な CTA なし(アプリ名だけを表示)

フックのカテゴリごとに、どの CTA が最もコンバージョンにつながるかを記録します。


投稿スケジュール

最適な時間(視聴者のタイムゾーンに合わせて調整してください):

  • 午前 7:30 — 朝早くスクロールする人にリーチ
  • 午後 4:30 — 午後の休憩時間
  • 午後 9:00 — 夜のくつろぎ時間

1 日最低 3 回投稿します。散発的なバズ投稿より、一貫性が重要です。バズ投稿 1 件より、投稿 100 件です。

クロスポスティング

Upload-Post は、1 回の API 呼び出しで同じコンテンツを 10 以上のプラットフォームに同時投稿できます。おすすめ:

  • Instagram — 特に美容、ライフスタイル、住宅関連に効果的(デフォルトで含まれます)
  • YouTube Shorts — 長期的な発見につながります
  • Threads — 手軽にエンゲージメントを促進できます
  • LinkedIn — B2B/ビジネス向けアプリに適しています
  • Pinterest — ビジュアル、住宅、デザイン関連のニッチで効果的です

同じスライドでも、アルゴリズムが異なるため、リーチを広げられます。各プラットフォームのアルゴリズムはコンテンツを個別に評価します。Upload-Post が各プラットフォームのフォーマット要件に自動で対応します。

アプリカテゴリ別テンプレート

カテゴリ別のスライドプロンプトとフックの定型文については、references/app-categories.md を参照してください。

よくある間違い

間違い修正方法
1536x1024(横向き)1024x1536(縦向き)を使用する
フォントサイズが幅の 5%幅の 6.5% にする
画面下部にテキストを配置上端から 30% の位置に配置する
スライドごとに部屋が異なるすべてのプロンプトで建築様式を統一する
リアクションではなくラベルを使う「待って、これいいじゃん??」を使い、「モダンなスタイル」は避ける
閲覧数しか記録しないコンバージョンを記録する — 収益につながらない閲覧数は見栄えだけです
いつまでも同じフックを使うデータをもとに改善し、毎週新しい形式を試す
クロスポスティングをしないUpload-Post を使ってすべてのプラットフォームに同時投稿する
spawnSync ETIMEDOUT実行タイムアウトが短すぎます — 6 枚の画像生成には 3~9 分かかります。10 分のタイムアウトを設定するか、スライドを 1 枚ずつ生成してください

コメント