การกำหนดค่าสคริปต์ Super Marketing
หน้านี้บันทึก API endpoints สำหรับสคริปต์ Super Marketing แตกต่างจากสคริปต์อื่น ๆ Super Marketing ไม่ได้ สร้างผ่าน endpoint POST /api/v1/task ทั่วไป — แต่ทำงานบน ชุดข้อมูล เป้าหมายที่นำกลับมาใช้ใหม่ได้ และมี endpoints เฉพาะของตัวเอง
ภาพรวม
แคมเปญ Super Marketing รวมหลายการดำเนินการเพื่อการเติบโต (ติดตาม, เลิกติดตาม, รายงาน, DM, บูสต์, คอมเมนต์จำนวนมาก) ไว้ในการรันเดียวบนกลุ่มเป้าหมาย กลุ่มเป้าหมายจัดเก็บเป็น ชุดข้อมูล:
- ประเภทข้อมูล — ชุดข้อมูลเก็บ
usernames(ชื่อผู้ใช้ TikTok/Instagram) หรือpost_links(URL โพสต์) - กลยุทธ์ — ควบคุมการกระจายเป้าหมายไปยังอุปกรณ์:
shared_pool— ทุกอุปกรณ์/บัญชีที่เลือกจัดการ เป้าหมายทั้งหมดconsume_once— เป้าหมายถูก แบ่ง ระหว่างอุปกรณ์และแต่ละอันถูกใช้ครั้งเดียว
ขั้นตอนทั่วไป:
- นำเข้า เป้าหมายลงในชุดข้อมูล → รับ
dataset_id - รัน แคมเปญที่อ้างอิง
dataset_idนั้นบนอุปกรณ์หนึ่งหรือมากกว่า
การสลับฟีเจอร์ (ติดตาม / DM / คอมเมนต์ ฯลฯ) และการตั้งค่าโดยละเอียดอ่านจากการกำหนดค่าที่บันทึกไว้ในแอปเดสก์ท็อป (super_marketing_settings.json) คุณสามารถแทนที่ค่าใด ๆ ต่อการรันโดยส่ง script_config ในคำขอรัน
endpoints Super Marketing ทั้งหมดต้องใช้แผน Pro, Team หรือ Business เหมือนกับส่วนอื่นของ Local API
นำเข้าชุดข้อมูล
สร้างชุดข้อมูลใหม่หรือเพิ่มเป้าหมายลงในชุดข้อมูลที่มีอยู่
- Endpoint:
POST /api/v1/super-marketing/dataset
Request Body
| ฟิลด์ | ชนิด | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
| dataset_id | integer | No | — | ID ชุดข้อมูลที่มีอยู่สำหรับต่อท้าย/แทนที่ ละเว้นหรือใช้ 0 เพื่อสร้างชุดข้อมูลใหม่ |
| data_type | string | Yes | — | usernames หรือ post_links |
| strategy | string | Yes | — | shared_pool หรือ consume_once |
| entries | string[] | Yes* | [] | เป้าหมายเป็น JSON array มีความสำคัญเหนือ raw_text |
| raw_text | string | Yes* | — | เป้าหมายเป็นสตริงคั่นด้วยบรรทัดใหม่ (ทางเลือกแทน entries) |
| mode | string | No | append | append เพิ่มลงในรายการที่มีอยู่; replace ล้างรายการที่มีอยู่ก่อน |
| label | string | No | — | ป้ายกำกับที่มนุษย์อ่านได้สำหรับชุดข้อมูล |
ระบุเป้าหมายผ่าน 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": "Campaign A targets",
"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": "Campaign A targets",
"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
}
}
}
แสดงรายการชุดข้อมูล
ดึงชุดข้อมูลทั้งหมดพร้อมสถิติการใช้งาน
- Endpoint:
GET /api/v1/super-marketing/datasets
Query Parameters
| พารามิเตอร์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| 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": "Campaign A targets",
"total": 6,
"consumed": 0,
"remaining": 6,
"created_at": "2026-06-22 09:00:00",
"updated_at": "2026-06-22 09:05:00"
}
]
}
ดึงข้อมูลชุดข้อมูล
ดึงสถิติชุดข้อมูลและหน้ารายการ
- Endpoint:
GET /api/v1/super-marketing/dataset/{id}
Query Parameters
| พารามิเตอร์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| limit | integer | 50 | รายการต่อหน้า (สูงสุด 500) |
| offset | integer | 0 | จำนวนรายการที่ข้าม |
ตัวอย่าง
curl "http://localhost:50809/api/v1/super-marketing/dataset/7?limit=100&offset=0"
ล้างชุดข้อมูล
ลบ รายการทั้งหมด ออกจากชุดข้อมูล บันทึกชุดข้อมูลยังคงอยู่ (และ dataset_id ยังใช้ได้สำหรับการนำเข้าในอนาคต)
- Endpoint:
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 }
}
รันแคมเปญ
เปิดตัวแคมเปญ Super Marketing บนอุปกรณ์ที่กำหนด โดยใช้เป้าหมายจากชุดข้อมูล
- Endpoint:
POST /api/v1/super-marketing/run
Request Body
| ฟิลด์ | ชนิด | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
| serials | string[] | Yes | [] | หมายเลขซีเรียลอุปกรณ์ที่จะรัน |
| dataset_id | integer | Yes | — | ชุดข้อมูลที่เป้าหมายขับเคลื่อนแคมเปญ |
| enable_multi_account | boolean | No | false | สร้างงานหนึ่งต่อบัญชีในแต่ละอุปกรณ์ |
| merge_same_username_tasks | boolean | No | false | รวมเป้าหมายทั้งหมดของอุปกรณ์เป็นงานเดียวแทนที่จะเป็นหนึ่งงานต่อเป้าหมาย |
| 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 | หมุนเวียน proxy ของอุปกรณ์ก่อนรัน |
| switch_account_method | string | No | — | วิธีสลับบัญชีในโหมดหลายบัญชี |
| official_packages | string[] | No | [] | จำกัดการดำเนินการเฉพาะแพ็กเกจทางการเหล่านี้ |
| clone_package_prefix | string | No | — | จำกัดการดำเนินการเฉพาะแอปโคลนที่ชื่อแพ็กเกจเริ่มต้นด้วยคำนำหน้านี้ |
| script_config | object | No | — | การสลับฟีเจอร์/การตั้งค่าต่อฟีเจอร์ที่แทนที่การกำหนดค่าที่บันทึกไว้ในเดสก์ท็อป |
คุณไม่ต้องส่ง data_source_type ในคำขอรัน — แคมเปญใช้ data_type ของชุดข้อมูลโดยอัตโนมัติ (usernames หรือ post_links) ชุดข้อมูล Post-link รองรับเฉพาะฟีเจอร์ boost_posts และ mass_comment
การแทนที่ script_config
script_config เป็น ตัวเลือก เมื่อละเว้น แคมเปญใช้การสลับฟีเจอร์และการตั้งค่าที่กำหนดไว้ในแอปเดสก์ท็อป ระบุเพื่อรันแคมเปญแบบครบในตัวเองหรือแทนที่ฟิลด์เฉพาะ คีย์รองรับทั้ง camelCase และ snake_case
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
| access_method | string | วิธีเข้าถึงเป้าหมาย username: 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 สตริงทั้งหมดคือข้อความเดียว (ขึ้นบรรทัดใหม่ตามปกติ, กลุ่ม {option1|option2}) รองรับ {username} และ {sender_username} |
| dm_settings.message_order | string | random หรือ sequential (มีผลกับรูปแบบ multiline เท่านั้น) |
| dm_settings.insert_emoji | boolean | แทรก emoji แบบสุ่มใน DM |
| dm_settings.generate_by_chatgpt | boolean | สร้าง DM ด้วย ChatGPT |
| dm_settings.chatgpt_settings | object | { url, api_key, model, system_prompt } |
| post_settings.skip_posts_count | integer | โพสต์ที่ข้ามก่อนดำเนินการ (0–8 เฉพาะ username) |
| 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 | แทรก emoji แบบสุ่มในคอมเมนต์ |
| 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 (ค่าเริ่มต้น) | หนึ่งรายการต่อบรรทัดที่ไม่ว่าง เลือกด้วย 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}"
}