Automate the full TikTok slideshow marketing pipeline: generate → overlay → post → track → iterate. This page is intentionally very close to the original playbook structure, but the publishing backbone is Shorts V2 instead of Postiz.
This skill does not bundle everything for you. The agent should verify the environment and install what is needed for the user’s setup.
gpt-image-1.5 if you want realistic slide images.Shorts V2 replaces the old posting backbone. It is responsible for:
When the skill starts, the agent should behave like a marketing operator, not a checklist generator. Ask a small number of questions at a time, react to the answers, and build the system gradually.
Before anything else, determine whether the TikTok account is new. If it is, the user should warm it up first so TikTok does not treat it like a bot account.
The account is ready when the For You page is mostly niche-relevant.
Collect the basics conversationally:
Store this in tiktok-marketing/app-profile.json.
Before creating the strategy, inspect what the niche is already doing on TikTok and in the App Store. The output should include:
Store the findings in tiktok-marketing/competitor-research.json.
Default to slideshows. If the user wants video, note that the main structure and overlay tuning are optimized for slideshows.
This phase replaces the old posting-platform setup. The user needs:
/api-keys/channelsDraft workflow stays the same: posts should land in TikTok inbox drafts so the user can add a trending sound before final publication.
RevenueCat remains the recommended way to connect post performance to actual business outcomes. Without it, the loop can still optimize for views and engagement. With it, the loop can optimize for revenue and subscriber growth.
Build the first-week plan from the research. Save it in tiktok-marketing/strategy.json.
Run a daily review that looks back across the last 3 days, identifies what is driving reach and what is driving conversions, and suggests the next hooks and CTAs to test.
Generate a test slideshow first, review the image quality, refine until the look is right, then start the posting schedule.
Keep the same config philosophy, but replace the publishing section with Shorts V2.
{
"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"
},
"shortsV2": {
"baseUrl": "https://shortsblink.com",
"apiKey": "sk_v2_...",
"channelId": "4"
},
"revenuecat": {
"enabled": false,
"v2SecretKey": "sk_...",
"projectId": "proj..."
},
"posting": {
"privacyLevel": "SELF_ONLY",
"schedule": ["07:30", "16:30", "21:00"],
"deliveryMode": "inbox"
},
"competitors": "tiktok-marketing/competitor-research.json",
"strategy": "tiktok-marketing/strategy.json"
}
Use the same generation strategy and the same constraints: portrait aspect ratio, realistic prompts, consistency between slides, and category-specific references.
Keep the same overlay approach: dynamic text sizing, center-safe placement, thick outline, manual line breaks, and reaction-style overlay copy rather than flat labels.
Recommended overlay rules:
\n breaks for rhythmReplace the old posting command with Shorts V2 API calls.
curl https://shortsblink.com/api/v2/channels \
-H "X-API-Key: sk_v2_..."
curl https://shortsblink.com/api/v2/schedules \
-H "X-API-Key: sk_v2_..." \
-F "channel_id=4" \
-F "title=App marketing slideshow" \
-F "caption=Hook + CTA test" \
-F "content_type=slideshow" \
-F "delivery_mode=inbox" \
-F "scheduled_for=2026-04-11T18:00:00Z" \
-F "assets=@slide1.png" \
-F "assets=@slide2.png" \
-F "assets=@slide3.png" \
-F "assets=@slide4.png" \
-F "assets=@slide5.png" \
-F "assets=@slide6.png"
curl -X POST https://shortsblink.com/api/v2/schedules/SCHEDULE_ID/publish \
-H "X-API-Key: sk_v2_..."
Shorts V2 gives the extra state tracking that the draft workflow needs.
curl https://shortsblink.com/api/v2/schedules/SCHEDULE_ID/status \
-H "X-API-Key: sk_v2_..."
Interpretation:
PROCESSING_DOWNLOAD: keep pollingSEND_TO_USER_INBOX: positive terminal draft-delivered stateFAILED: terminal failure; inspect fail_reasonKeep the same operating principle: the post lands in the user’s TikTok inbox as a draft, then the user adds a trending sound manually before final publication. That keeps the workflow aligned with TikTok-native behavior.
The daily report should keep the same diagnosis framework:
Recommended artifacts:
tiktok-marketing/
├── app-profile.json
├── competitor-research.json
├── hooks.json
├── strategy.json
├── reports/
│ └── 2026-04-11.md
└── posts/
└── 2026-04-11-1800/
├── slide1.png
├── slide2.png
├── slide3.png
├── slide4.png
├── slide5.png
├── slide6.png
└── meta.json
The hook-testing part should stay essentially unchanged. Maintain a structured file of what is winning, what is losing, and what should be tested next.
{
"researchDate": "2026-04-11",
"winningHooks": [
"POV: you open the app and fix this in 30 seconds",
"I tried this every day for 7 days"
],
"underperformingHooks": [
"generic feature list",
"vague motivational opener"
],
"nextTests": [
"before-after contrast",
"mistake-based opener",
"POV format"
]
}
This is one of the few operational differences that must be explicit. Shorts V2 requires credits before a schedule can be created.
1. Open https://shortsblink.com/plans
2. Buy credits or redeem a coupon
3. Retry the failed schedule creation
4. Continue with publish and status polling
If an admin coupon is needed, management is available at /admin/coupons.
PROCESSING_DOWNLOAD before reaching the inboxFAILED, capture fail_reason and feed it back into the workflowThat means Sarry should stay the same strategically and operationally almost everywhere, with the posting backbone and related diagnostics moved to Shorts V2.