スーパーマーケティングスクリプト設定
このページでは スーパーマーケティング スクリプトの API エンドポイントを説明します。他のスクリプトとは異なり、スーパーマーケティングは汎用の POST /api/v1/task エンドポイントでは作成しません — 再利用可能なターゲットデータセットを基に動作し、専用のエンドポイントが用意されています。
概要
スーパーマーケティングキャンペーンは、複数の成長アクション(フォロー、アンフォロー、報告、DM、ブースト、一括コメント)をターゲットプールに対して一度に実行します。ターゲットプールはデータセットとして保存されます:
- データ型 — データセットには
usernames(TikTok/Instagram/Threads のハンドル)またはpost_links(投稿 URL)が保持されます。 - ストラテジー — ターゲットをデバイスにどう配布するかを制御します:
shared_pool— 選択した全デバイス/アカウントがすべてのターゲットを処理します。consume_once— ターゲットをデバイス間で分割し、各ターゲットを一度だけ処理します。
典型的な流れ:
- ターゲットをデータセットにインポート →
dataset_idを取得。 dataset_idを参照するキャンペーンを 1 台以上のデバイスで実行。
機能トグル(フォロー / DM / コメントなど)と詳細設定はデスクトップアプリの保存設定(super_marketing_settings.json)から読み込まれます。実行リクエストで script_config を渡すことで、実行ごとにオーバーライドできます。
Threads はプロフィールナビゲーション、フォロー/アンフォロー、DM(ターゲットが Message ボタンを表示している場合)、投稿の閲覧/いいね/保存/リポスト、およびコメントをサポートしています。SMS への共有は Threads に同等のワークフローがないためスキップされます。Threads は固定自動化パスでサポートされていない人間が選択した報告理由を必要とするため、アカウント報告は意図的にスキップされます。
すべてのスーパーマーケティングエンドポイントは、ローカル API の他のエンドポイントと同様に Pro、Team、または Business プランが必要です。
データセットのインポート
新しいデータセットを作成するか、既存のデータセットにターゲットを追加します。
- エンドポイント:
POST /api/v1/super-marketing/dataset
リクエストボディ
| フィールド | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| dataset_id | integer | No | — | 追加/置換する既存のデータセット ID。新規作成の場合は省略または 0 を使用。 |
| data_type | string | Yes | — | usernames または post_links |
| strategy | string | Yes | — | shared_pool または consume_once |
| entries | string[] | Yes* | [] | JSON 配列としてのターゲット。raw_text より優先されます。 |
| raw_text | string | Yes* | — | 改行区切りのターゲット文字列(entries の代替)。 |
| mode | string | No | append | append は既存エントリに追加;replace は既存エントリを先にクリア。 |
| label | string | No | — | データセットの任意の人間可読ラベル。 |
ターゲットは entries または raw_text のどちらかで提供してください。重複・空のエントリは無視されます。1 回のインポートは最大 100,000 エントリです。
例
curl -X POST http://localhost:50809/api/v1/super-marketing/dataset \
-H "Content-Type: application/json" \
-d '{
"data_type": "usernames",
"strategy": "shared_pool",
"label": "キャンペーン A のターゲット",
"entries": ["@user_one", "@user_two", "@user_three"]
}'
改行区切りのテキストで既存データセットにターゲットを追加:
curl -X POST http://localhost:50809/api/v1/super-marketing/dataset \
-H "Content-Type: application/json" \
-d '{
"dataset_id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"mode": "append",
"raw_text": "@user_four\n@user_five\n@user_six"
}'
レスポンス例
{
"code": 0,
"message": "success",
"data": {
"dataset": {
"stats": {
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "キャンペーン A のターゲット",
"total": 3,
"consumed": 0,
"remaining": 3,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:00:00"
},
"entries": [
{ "id": 1, "value": "@user_one", "consumed": false, "consumed_by": null, "consumed_at": null, "created_at": "2026-06-22 09:00:00", "updated_at": "2026-06-22 09:00:00" }
]
},
"summary": {
"inserted": 3,
"duplicates": 0,
"skipped_empty": 0,
"removed": 0,
"truncated": 0
}
}
}
データセット一覧
消費統計とともにすべてのデータセットを取得します。
- エンドポイント:
GET /api/v1/super-marketing/datasets
クエリパラメータ
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
| data_type | string | — | 任意フィルター: usernames または post_links |
例
curl "http://localhost:50809/api/v1/super-marketing/datasets?data_type=usernames"
レスポンス例
{
"code": 0,
"message": "success",
"data": [
{
"id": 7,
"data_type": "usernames",
"strategy": "shared_pool",
"label": "キャンペーン A のターゲット",
"total": 6,
"consumed": 0,
"remaining": 6,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:05:00"
}
]
}
データセットの取得
データセットの統計情報とエントリのページを取得します。
- エンドポイント:
GET /api/v1/super-marketing/dataset/{id}
クエリパラメータ
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
| limit | integer | 50 | 1 ページあたりのエントリ数(最大 500) |
| offset | integer | 0 | スキップするエントリ数 |
例
curl "http://localhost:50809/api/v1/super-marketing/dataset/7?limit=100&offset=0"
データセットのクリア
データセットからすべてのエントリを削除します。データセットレコード自体は残り(dataset_id は将来のインポートでも有効です)。
- エンドポイント:
DELETE /api/v1/super-marketing/dataset/{id}
例
curl -X DELETE http://localhost:50809/api/v1/super-marketing/dataset/7
レスポンス例
{
"code": 0,
"message": "success",
"data": { "cleared": true, "dataset_id": 7 }
}
キャンペーンの実行
データセットのターゲットを使用して、指定デバイスでスーパーマーケティングキャンペーンを起動します。
- エンドポイント:
POST /api/v1/super-marketing/run
リクエストボディ
| フィールド | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| serials | string[] | Yes | [] | 実行するデバイスのシリアル番号 |
| dataset_id | integer | Yes | — | キャンペーンのターゲットを提供するデータセット |
| enable_multi_account | boolean | No | false | 各デバイスのアカウントごとに 1 つのタスクを作成 |
| merge_same_username_tasks | boolean | No | false | デバイスの全ターゲットをターゲットごとのタスクではなく 1 つのタスクにまとめる |
| platform | string | No | — | プラットフォームオーバーライド(tiktok / instagram)。マルチプラットフォームビルドのみ有効 |
| min_interval | integer | No | 0 | 段階的タスク開始時間の最小間隔(分) |
| max_interval | integer | No | 0 | 段階的タスク開始時間の最大間隔(分) |
| start_time | string | No | — | 最初のタスク開始時間(HH:MM 形式) |
| rotate_proxy | boolean | No | false | 実行前にデバイスのプロキシをローテート |
| switch_account_method | string | No | — | マルチアカウントモードでのアカウント切り替え方法(例: profile) |
| official_packages | string[] | No | [] | 実行を制限する公式パッケージ(マルチアカウントモード) |
| clone_package_prefix | string | No | — | このプレフィックスで始まるパッケージ名のクローンアプリに実行を制限 |
| script_config | object | No | — | デスクトップ保存設定をオーバーライドする機能トグル/設定(下記参照) |
実行リクエストで data_source_type を渡す必要はありません — キャンペーンはデータセットの data_type(usernames または post_links)を自動的に使用します。投稿リンクデータセットは boost_posts と mass_comment 機能のみサポートします。
script_config オーバーライド
script_config は任意です。省略した場合、デスクトップアプリで設定した機能トグルと設定が使用されます。完全に自己完結したキャンペーンを実行する場合や特定のフィールドをオーバーライドする場合に指定します。キーは camelCase と snake_case の両方を受け付けます。
| フィールド | 型 | 説明 |
|---|---|---|
| access_method | string | ユーザー名ターゲットへのアクセス方法: search または direct |
| features.follow_users | boolean | 各ターゲットをフォロー |
| features.unfollow_users | boolean | 各ターゲットをアンフォロー |
| features.report_account | boolean | 各ターゲットアカウントを報告 |
| features.send_dm | boolean | 各ターゲットにダイレクトメッセージを送信 |
| features.boost_posts | boolean | ターゲットの投稿にいいね/お気に入り/リポスト/シェア |
| features.mass_comment | boolean | ターゲットの投稿にコメント |
| follow_settings.boost_type | string | follow または unfollow |
| dm_settings.message_format | string | multiline(既定)または spintax — 下記のDMメッセージ形式を参照 |
| dm_settings.message_contents | string | DM本文。multiline では各行が個別のメッセージ(### = メッセージ内の改行)、spintax では文字列全体が1つのメッセージ(そのままの改行、{option1|option2} グループ)。{username} と {sender_username} に対応。 |
| dm_settings.message_order | string | random または sequential(multiline 形式のみ有効) |
| dm_settings.insert_emoji | boolean | DM にランダムな絵文字を挿入 |
| dm_settings.generate_by_chatgpt | boolean | ChatGPT で DM を生成 |
| dm_settings.chatgpt_prompt | string | DM 生成に使用するプロンプト |
| dm_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| post_settings.skip_posts_count | integer | アクション前にスキップする投稿数(0〜8、ユーザー名ソースのみ) |
| post_settings.max_posts_count | integer | ターゲットごとに処理する最大投稿数 |
| post_settings.enable_like | boolean | 投稿にいいね |
| post_settings.enable_favorite | boolean | 投稿をお気に入りに追加 |
| post_settings.enable_repost | boolean | 投稿をリポスト |
| post_settings.enable_share | boolean | 投稿をシェア |
| post_settings.repeat_times | integer | 投稿アクションの繰り返し回数 |
| post_settings.view_durations | integer[] | 各投稿を視聴する [min, max] 秒 |
| comment_settings.comment_content | string | コメントテキスト(複数バリエーションは改行区切り) |
| comment_settings.comment_order | string | random または sequential |
| comment_settings.insert_emoji | boolean | コメントにランダムな絵文字を挿入 |
| comment_settings.generate_by_chatgpt | boolean | ChatGPT でコメントを生成 |
| comment_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| task_finish_wait_time | integer | 終了前の待機秒数(データ損失を防ぐ) |
DMメッセージ形式
dm_settings.message_contents は dm_settings.message_format に従って解析されます。投稿キャプションが caption_format で解析されるのと同じ仕組みです:
| 形式 | テンプレート | 改行 | ランダム変化 |
|---|---|---|---|
multiline (既定) | 空でない行ごとに1つ、message_order で選択 | 行内の ### | 行をまたいで message_order により選択 |
spintax | 文字列全体が単一のテンプレート | 文字列中のそのままの \n | {option1|option2} グループ |
{username} と {sender_username} はspintaxグループの解決前に置換されるため、変数が選択肢1つのspintaxグループとして扱われることはありません。
// multiline
"dm_settings": {
"message_format": "multiline",
"message_contents": "Hey {username}! Love your content 🙌\nHi {username}###Here is a video I made###v.example.com/{username}",
"message_order": "sequential"
}
// spintax
"dm_settings": {
"message_format": "spintax",
"message_contents": "{Hi|Hello} {username}\n\nHere is a video I made\n\nv.example.com/{username}"
}
例
最小限の実行(デスクトップ保存設定を使用)
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1", "device_serial_2"],
"dataset_id": 7
}'
自己完結型フォロー + DM キャンペーン
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1"],
"dataset_id": 7,
"enable_multi_account": true,
"min_interval": 1,
"max_interval": 3,
"script_config": {
"access_method": "search",
"features": {
"follow_users": true,
"send_dm": true
},
"follow_settings": { "boost_type": "follow" },
"dm_settings": {
"message_format": "multiline",
"message_contents": "こんにちは!コンテンツが大好きです 🙌\n素晴らしい投稿です、続けてください!",
"message_order": "random",
"insert_emoji": true
}
}
}'
投稿リンクデータセットへの一括コメント
curl -X POST http://localhost:50809/api/v1/super-marketing/run \
-H "Content-Type: application/json" \
-d '{
"serials": ["device_serial_1"],
"dataset_id": 9,
"merge_same_username_tasks": true,
"script_config": {
"features": { "mass_comment": true },
"comment_settings": {
"comment_content": "🔥🔥🔥\nすごい!\n最高です",
"comment_order": "random"
}
}
}'
レスポンス例
{
"code": 0,
"message": "success",
"data": { "created_count": 6 }
}
created_count は作成されたタスクの数です。保留中のタスクはその後、割り当てられたデバイスで他のタスクと同様に実行されます — タスク管理 API で追跡してください。
エラーレスポンス
| HTTP ステータス | コード | 説明 |
|---|---|---|
| 400 | 40001 | 無効なパラメータ(不正な data_type/strategy、空の serials、非正の dataset_id、オブジェクトでない script_config、またはタスクが作成されなかった) |
| 403 | 40301 | 禁止 — API アクセスには Pro+ プランが必要 |
| 404 | 40401 | データセットが見つかりません |
| 500 | 50001 | 内部サーバーエラー |
実行がコード 40001 と「タスクが作成されませんでした」メッセージを返す場合、データセットに残りのターゲットがあるか(consume_once ストラテジーの場合)、および選択したデバイスがオンラインかどうかを確認してください。
関連ページ
- ローカル API 概要 - API 概要とクイックスタート
- タスク管理 API - 作成されたタスクの追跡と管理
- アカウント状態 API - アカウントとデバイスの状態を照会