Перейти к основному содержимому

Конфигурация скрипта супер маркетинга

На этой странице описаны API-эндпоинты скрипта супер маркетинга. В отличие от других скриптов, кампании супер маркетинга не создаются через обобщённый эндпоинт POST /api/v1/task — они работают на основе многократно используемого датасета целей с собственными эндпоинтами.

Обзор​

Кампания супер маркетинга объединяет несколько действий по росту (подписка, отписка, жалоба, личные сообщения, буст, массовые комментарии) в одном запуске по пулу целей. Пул целей хранится как датасет:

  • Тип данных — датасет хранит либо usernames (аккаунты TikTok/Instagram/Threads), либо post_links (ссылки на публикации).
  • Стратегия — управляет распределением целей по устройствам:
    • shared_pool — каждое устройство/аккаунт обрабатывает все цели.
    • consume_once — цели делятся между устройствами и каждая используется один раз.

Типичный процесс:

  1. Импорт целей в датасет → получение dataset_id.
  2. Запуск кампании, ссылающейся на dataset_id, на одном или нескольких устройствах.

Переключатели функций (подписка / ЛС / комментарии и т.д.) и их настройки считываются из сохранённой конфигурации (super_marketing_settings.json). Вы можете переопределить любые параметры для конкретного запуска, передав script_config в запросе.

Threads поддерживает навигацию по профилям, подписки/отписки, личные сообщения там, где цель показывает кнопку Message, просмотр/лайк/сохранение/репост постов и комментарии. Поделиться пропускается, потому что Threads не имеет эквивалентного рабочего процесса обмена SMS. Жалобы на аккаунт целенаправленно пропускаются, потому что Threads требует выбранную вручную причину жалобы, которую фиксированный путь автоматизации не поддерживает.

Требование лицензии

Все эндпоинты супер маркетинга требуют план Pro, Team или Business, как и остальное локальное API.


Импорт датасета​

Создать новый датасет или добавить цели в существующий.

  • Эндпоинт: POST /api/v1/super-marketing/dataset

Тело запроса​

ПолеТипОбязательныйПо умолчаниюОписание
dataset_idintegerNo—ID существующего датасета для добавления/замены. Пропустите или используйте 0 для создания нового.
data_typestringYes—usernames или post_links
strategystringYes—shared_pool или consume_once
entriesstring[]Yes*[]Цели в виде JSON-массива. Приоритет над raw_text.
raw_textstringYes*—Цели в виде строки с переносами (альтернатива entries).
modestringNoappendappend — добавить к существующим; replace — сначала очистить.
labelstringNo—Необязательная метка для датасета.
примечание

Передайте цели через один из вариантов: entries или raw_text. Дубликаты и пустые записи игнорируются. Один импорт ограничен 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_typestring—Необязательный фильтр: 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}

Параметры запроса​

ПараметрТипПо умолчаниюОписание
limitinteger50Записей на страницу (макс. 500)
offsetinteger0Количество пропускаемых записей

Пример​

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

Тело запроса​

ПолеТипОбязательныйПо умолчаниюОписание
serialsstring[]Yes[]Серийные номера устройств
dataset_idintegerYes—Датасет с целями кампании
enable_multi_accountbooleanNofalseСоздать задачу для каждого аккаунта на устройстве
merge_same_username_tasksbooleanNofalseОбъединить все цели устройства в одну задачу
platformstringNo—Платформа (tiktok / instagram). Применяется только в мультиплатформенных сборках
min_intervalintegerNo0Минимальный интервал в минутах между задачами
max_intervalintegerNo0Максимальный интервал в минутах между задачами
start_timestringNo—Время начала первой задачи в формате HH:MM
rotate_proxybooleanNofalseСменить прокси устройства перед запуском
switch_account_methodstringNo—Метод переключения аккаунтов в мультиаккаунт режиме
official_packagesstring[]No[]Ограничить выполнение этими официальными пакетами
clone_package_prefixstringNo—Ограничить выполнение клонами с этим префиксом пакета
script_configobjectNo—Переключатели функций / настройки, переопределяющие конфигурацию из приложения (см. ниже)
Тип данных берётся из датасета

В запросе не нужно передавать data_source_type — кампания автоматически использует data_type датасета (usernames или post_links). Датасеты с ссылками поддерживают только функции boost_posts и mass_comment.

Переопределения script_config​

script_config необязателен. При отсутствии кампания использует переключатели и настройки из приложения. Передайте его для запуска полностью автономной кампании или переопределения конкретных полей. Ключи принимаются в camelCase и snake_case.

ПолеТипОписание
access_methodstringСпособ доступа к целям: search или direct
features.follow_usersbooleanПодписаться на каждую цель
features.unfollow_usersbooleanОтписаться от каждой цели
features.report_accountbooleanПожаловаться на аккаунт цели
features.send_dmbooleanОтправить личное сообщение каждой цели
features.boost_postsbooleanЛайк / избранное / репост / поделиться публикациями цели
features.mass_commentbooleanКомментировать публикации цели
follow_settings.boost_typestringfollow или unfollow
dm_settings.message_formatstringmultiline (по умолчанию) или spintax — см. раздел о форматах сообщений ниже
dm_settings.message_contentsstringТекст сообщения. В multiline каждая строка — отдельное сообщение (### = перенос строки внутри сообщения); в spintax вся строка — одно сообщение (обычные переносы строк, группы {option1|option2}). Поддерживает {username} и {sender_username}.
dm_settings.message_orderstringrandom или sequential (применяется только к формату multiline)
dm_settings.insert_emojibooleanВставить случайный эмодзи в ЛС
dm_settings.generate_by_chatgptbooleanГенерировать ЛС через ChatGPT
dm_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
post_settings.skip_posts_countintegerПубликации для пропуска перед действиями (0–8, только username)
post_settings.max_posts_countintegerМакс. публикаций для обработки на цель
post_settings.enable_likebooleanЛайкнуть публикации
post_settings.enable_favoritebooleanДобавить публикации в избранное
post_settings.enable_repostbooleanРепостить публикации
post_settings.enable_sharebooleanПоделиться публикациями
post_settings.repeat_timesintegerКоличество повторений действий
post_settings.view_durationsinteger[][min, max] секунд просмотра каждой публикации
comment_settings.comment_contentstringТекст комментария (несколько вариантов через перенос)
comment_settings.comment_orderstringrandom или sequential
comment_settings.insert_emojibooleanВставить случайный эмодзи в комментарий
comment_settings.generate_by_chatgptbooleanГенерировать комментарий через ChatGPT
comment_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
task_finish_wait_timeintegerСекунды ожидания перед завершением (предотвращает потерю данных)

Форматы сообщений DM​

dm_settings.message_contents разбирается согласно dm_settings.message_format — так же, как описания публикаций разбираются по caption_format:

ФорматШаблоныПереносы строкСлучайная вариативность
multiline (по умолчанию)По одному на каждую непустую строку, выбор через message_order### внутри строкиМежду строками, через message_order
spintaxВся строка — один шаблонОбычный \n внутри строкиГруппы {option1|option2}

{username} и {sender_username} подставляются до разбора групп spintax, поэтому переменная никогда не воспринимается как группа 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
}'

Автономная кампания подписки + ЛС​

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 StatusCodeОписание
40040001Неверные параметры (неверный data_type/strategy, пустой serials, невалидный dataset_id, не-объект script_config, или задачи не созданы)
40340301Запрещено — требуется план Pro+
40440401Датасет не найден
50050001Внутренняя ошибка сервера
Задачи не созданы

Если запуск возвращает код 40001 с сообщением "No tasks created", проверьте, что у датасета ещё остались цели (для стратегии consume_once) и выбранные устройства онлайн.

См. также​