본문으로 건너뛰기

슈퍼 마케팅 스크립트 구성

이 페이지에서는 슈퍼 마케팅 스크립트의 API 엔드포인트를 설명합니다. 다른 스크립트와 달리, 슈퍼 마케팅은 일반 POST /api/v1/task 엔드포인트를 통해 생성하지 않습니다 — 재사용 가능한 타겟 데이터셋을 기반으로 실행되며 전용 엔드포인트가 있습니다.

개요

슈퍼 마케팅 캠페인은 타겟 풀에 대해 여러 성장 액션(팔로우, 언팔로우, 신고, DM, 부스트, 대량 댓글)을 한 번에 결합하여 실행합니다. 타겟 풀은 데이터셋으로 저장됩니다:

  • 데이터 유형 — 데이터셋에는 usernames(TikTok/Instagram 핸들) 또는 post_links(게시물 URL)가 포함됩니다.
  • 전략 — 타겟을 기기에 배분하는 방식을 제어합니다:
    • shared_pool — 선택한 모든 기기/계정이 모든 타겟을 처리합니다.
    • consume_once — 타겟을 기기 간에 분할하여 각 타겟을 한 번만 처리합니다.

일반적인 흐름:

  1. 타겟을 데이터셋에 가져오기dataset_id 획득.
  2. dataset_id를 참조하는 캠페인을 하나 이상의 기기에서 실행.

기능 토글(팔로우 / DM / 댓글 등)과 세부 설정은 데스크톱 앱의 저장된 구성(super_marketing_settings.json)에서 읽어옵니다. 실행 요청에 script_config를 전달하여 실행별로 오버라이드할 수 있습니다.

라이선스 요구 사항

모든 슈퍼 마케팅 엔드포인트는 로컬 API의 나머지 엔드포인트와 마찬가지로 Pro, Team, 또는 Business 플랜이 필요합니다.


데이터셋 가져오기

새 데이터셋을 만들거나 기존 데이터셋에 타겟을 추가합니다.

  • 엔드포인트: POST /api/v1/super-marketing/dataset

요청 본문

필드유형필수기본값설명
dataset_idintegerNo추가/교체할 기존 데이터셋 ID. 새로 만들려면 생략하거나 0 사용.
data_typestringYesusernames 또는 post_links
strategystringYesshared_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멀티 계정 모드에서 계정 전환 방법(예: profile)
official_packagesstring[]No[]실행을 이 공식 패키지로 제한(멀티 계정 모드)
clone_package_prefixstringNo이 접두사로 시작하는 패키지 이름의 클론 앱으로 실행 제한
script_configobjectNo데스크톱 저장 설정을 오버라이드하는 기능 토글/설정(아래 참조)
데이터 유형은 데이터셋에서 가져옴

실행 요청에서 data_source_type을 전달할 필요가 없습니다 — 캠페인은 데이터셋의 data_type(usernames 또는 post_links)을 자동으로 사용합니다. 게시물 링크 데이터셋은 boost_postsmass_comment 기능만 지원합니다.

script_config 오버라이드

script_config선택 사항입니다. 생략하면 데스크톱 앱에서 구성한 기능 토글과 설정이 사용됩니다. 완전히 독립적인 캠페인을 실행하거나 특정 필드를 오버라이드하려면 제공하세요. 키는 camelCasesnake_case 모두 허용됩니다.

필드유형설명
access_methodstring사용자 이름 타겟 접근 방법: search 또는 direct
features.follow_usersboolean각 타겟 팔로우
features.unfollow_usersboolean각 타겟 언팔로우
features.report_accountboolean각 타겟 계정 신고
features.send_dmboolean각 타겟에 DM 전송
features.boost_postsboolean타겟의 게시물 좋아요/즐겨찾기/리포스트/공유
features.mass_commentboolean타겟의 게시물에 댓글
follow_settings.boost_typestringfollow 또는 unfollow
dm_settings.message_contentsstringDM 텍스트(여러 변형은 줄바꿈으로 구분)
dm_settings.message_orderstringrandom 또는 sequential
dm_settings.insert_emojibooleanDM에 랜덤 이모지 삽입
dm_settings.generate_by_chatgptbooleanChatGPT로 DM 생성
dm_settings.chatgpt_promptstringDM 생성 시 사용할 프롬프트
dm_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
post_settings.skip_posts_countinteger액션 전 건너뛸 게시물 수(0~8, 사용자 이름 소스만)
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_chatgptbooleanChatGPT로 댓글 생성
comment_settings.chatgpt_settingsobject{ url, api_key, model, system_prompt }
task_finish_wait_timeinteger완료 전 대기 초(데이터 손실 방지)

예제

최소 실행(데스크톱 저장 설정 사용)

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_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 상태코드설명
40040001유효하지 않은 매개변수(잘못된 data_type/strategy, 빈 serials, 비양수 dataset_id, 객체가 아닌 script_config, 또는 생성된 작업 없음)
40340301금지 — API 액세스에는 Pro+ 플랜 필요
40440401데이터셋을 찾을 수 없음
50050001내부 서버 오류
작업이 생성되지 않는 경우

실행이 코드 40001과 "작업이 생성되지 않았습니다" 메시지를 반환하면, 데이터셋에 남은 타겟이 있는지(consume_once 전략의 경우) 그리고 선택한 기기가 온라인 상태인지 확인하세요.

참고 항목