tiktok-ads
Skill107 starsChanged 5 months agoMITView on GitHub
Plan and create TikTok advertising campaigns end-to-end via the Hyper MCP, with strict parameter validation for objective-specific requirements. Use when the user wants to launch TikTok ads, set up TikTok traffic or reach campaigns, configure conversions or app-promotion campaigns, upload TikTok video creatives, or analyze TikTok ad performance. Also triggers on tiktok marketing, tiktok campaign, tiktok ppc, or tiktok ads manager.
We split this skill into the rules it gives an agent
11 rules. 0 are common, 4 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
If tiktok_ads_advertiser_accounts_list is not found, the integration to connect is TikTok Marketing.
- Distinctive: line 25
Every tool in this skill is named by its canonical tool name.
- Very specific: line 33
If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit.
- Very specific: line 56
Use tiktok_ads_advertiser_accounts_list() to get advertiser IDs.
- Distinctive: line 57
If multiple accounts: ask the user to select one.
- Distinctive: line 58
If single account: inform the user and proceed.
- Very specific: line 62
Before setting bid prices, call tiktok_ads_benchmarks_get to retrieve industry-specific CPM/CPC benchmarks.
- Very specific: line 185
Always create ads paused (operation_status="DISABLE") and only flip them to ENABLE once the user has reviewed.
- Very specific: line 239
Use ID-based dimensions only (ad_id, campaign_id, adgroup_id — not names).
- Very specific: line 249
Create ads with operation_status="ENABLE" before the user has reviewed creative + targeting.
- Distinctive: line 250
Run reports with name-based dimensions — TikTok only accepts ID dimensions.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
TikTok Ads
Strategic guide for managing TikTok advertising campaigns. Research deeply, validate parameters carefully, and guide users through the platform's strict objective-specific requirements.
This skill is for paid TikTok ads (the TikTok Marketing API surface).
Requirements
- Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
- TikTok Marketing integration connected (TikTok Ads Manager / Business Center) at https://app.hyperfx.ai/apps.
If tiktok_ads_advertiser_accounts_list is not found, the integration to connect is TikTok Marketing.
How to run the tools in this skill
Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
| Surface | Find a tool | Run it |
| Hyper chat | Call the tool by its name; search_tools(queries=["<provider> <action>"]) shows its parameters | <name>(...) |
| MCP client (Claude, Cursor, Codex, ChatGPT) | search("<what you want to do>"), then describe("<name>") | call_read("<name>", {...}), call_write or call_destructive: the one that describe names in call_with |
| Hyper CLI | hyperai search "<what you want to do>", then hyperai describe <name> | hyperai call <name> --json '{...}' |
If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit. On an MCP client or the CLI, tell the user which integration to connect in Hyper.
Out of scope — defer to other skills
- Organic TikTok posting (videos, photos, carousels — no ad spend) →
tiktok. - Creative generation (ad copy, images) →
ad-creative-generation; video creatives →video-generation. - Cross-platform campaign launches → use this skill for TikTok, then invoke
meta-ads/google-adsseparately.
Tool surface
| Tool | Purpose |
tiktok_ads_advertiser_accounts_list | Discovery: list advertiser IDs available to the connected user. |
tiktok_ads_campaigns_get, tiktok_ads_campaigns_create, tiktok_ads_campaigns_update, tiktok_ads_campaigns_status_update | Campaign lifecycle. |
tiktok_ads_ad_groups_list, tiktok_ads_ad_groups_create, tiktok_ads_ad_groups_update, tiktok_ads_ad_groups_status_update | Ad group lifecycle. |
tiktok_ads_list, tiktok_ads_create, tiktok_ads_ad_status_update, tiktok_ads_update | Ad lifecycle and supported incremental content changes. Describe the selected tool before editing; Smart+ ads use their dedicated tools. |
tiktok_ads_videos_upload, tiktok_ads_videos_get, tiktok_ads_videos_search | Video creative upload + lookup. |
tiktok_ads_integrated_reports_get | Performance reporting. |
tiktok_ads_custom_audiences_create, tiktok_ads_custom_audiences_list, tiktok_ads_lookalike_audiences_create | Audience management (optional). |
Phase 1: Account Discovery
Initial Setup
- Use
tiktok_ads_advertiser_accounts_list()to get advertiser IDs. - If multiple accounts: ask the user to select one.
- If single account: inform the user and proceed.
Bid Benchmarks (optional but recommended)
Before setting bid prices, call tiktok_ads_benchmarks_get to retrieve industry-specific CPM/CPC benchmarks. This prevents using placeholder values that may be too low to win auctions or too high for the user's budget.
tiktok_ads_benchmarks_get(
advertiser_id="123456789",
dimensions=["industry"],
filtering={"industry": "292801"} # industry code from tiktok_ads_advertiser_accounts_list
)Available Campaign Objectives
| Objective | Best For | Key Requirements |
TRAFFIC | Drive website visits | promotion_type="WEBSITE", CPC billing |
CONVERSIONS | Drive purchases / leads | Pixel ID, conversion event tracking |
REACH | Brand awareness | Manual placement only, CPM billing, frequency cap |
APP_PROMOTION | App installs | App ID, app store URL |
VIDEO_VIEW | Video engagement | Video creative assets |
Phase 2: Campaign Creation
Step 1: Create Campaign
Budget Requirements:
- MINIMUM $50 for campaign-level budgets (TikTok requirement).
budget_mode:BUDGET_MODE_INFINITE(CBO),BUDGET_MODE_DAY, orBUDGET_MODE_TOTAL.
tiktok_ads_campaigns_create(
advertiser_id="123456789",
campaign_name="Summer Sale 2026",
objective_type="TRAFFIC",
budget_mode="BUDGET_MODE_DAY",
budget=50.0, # MINIMUM $50/day
operation_status="ENABLE"
)Step 2: Create Ad Group
ALWAYS REQUIRED Parameters:
advertiser_id,campaign_id,adgroup_name.location_ids(e.g.,["6252001"]for US).schedule_typeandschedule_start_time(MUST be a future date).billing_event(CPC,CPM,OCPM).budget_mode(REQUIRED for ad groups).
For TRAFFIC Campaigns:
tiktok_ads_ad_groups_create(
advertiser_id="123456789",
campaign_id="1234567890123456",
adgroup_name="Website Traffic - Summer Sale",
location_ids=["6252001"], # US
schedule_type="SCHEDULE_FROM_NOW",
schedule_start_time="2026-06-01 00:00:00", # FUTURE DATE
billing_event="CPC",
budget_mode="BUDGET_MODE_DAY",
budget=30.0,
promotion_type="WEBSITE", # REQUIRED for TRAFFIC
optimization_goal="CLICK", # REQUIRED (correct spelling)
bid_price=0.50,
placement_type="PLACEMENT_TYPE_AUTOMATIC",
operation_status="ENABLE"
)For REACH Campaigns:
tiktok_ads_ad_groups_create(
advertiser_id="123456789",
campaign_id="1234567890123456",
adgroup_name="Brand Awareness US",
location_ids=["6252001"],
schedule_type="SCHEDULE_FROM_NOW",
schedule_start_time="2026-06-01 00:00:00",
billing_event="CPM", # REQUIRED for REACH
budget_mode="BUDGET_MODE_DAY",
budget=30.0,
optimization_goal="REACH",
placement_type="PLACEMENT_TYPE_NORMAL", # REQUIRED — automatic NOT supported
placements=["PLACEMENT_TIKTOK"], # REQUIRED
bid_price=2.0, # REQUIRED
frequency=3, # REQUIRED
frequency_schedule=7, # REQUIRED
operation_status="ENABLE"
)Step 3: Upload Creative Assets
Upload one video per creative variant. Capture the returned video_id — you'll need it in Step 4.
video_response = tiktok_ads_videos_upload(
advertiser_id="123456789",
video_file=video_data,
upload_type="UPLOAD_BY_FILE"
)
video_id = video_response["data"]["video_id"]Already-uploaded videos can be reused. Use
tiktok_ads_videos_searchto find existing videos by name ortiktok_ads_videos_getto fetch metadata for a known video ID.
Step 4: Create the Ad
tiktok_ads_create(
advertiser_id="123456789",
adgroup_id="1234567890123456",
ad_name="Summer Sale - Hero Video",
identity_type="CUSTOMIZED_USER", # or "AUTH_CODE" for TikTok Account spark ads
identity_id="<advertiser_identity_id>",
ad_format="SINGLE_VIDEO",
video_id=video_id,
ad_text="Limited-time summer drop. Shop now.",
landing_page_url="https://example.com/summer",
call_to_action="SHOP_NOW",
operation_status="DISABLE" # create paused, enable after review
)Always create ads paused (operation_status="DISABLE") and only flip them to ENABLE once the user has reviewed.
Critical Parameter Rules
Common Errors & Solutions
| Error | Solution |
| Budget must be at least $50 | TikTok enforces a MINIMUM $50 for campaign budgets. |
| Start time in past | Use a future date in schedule_start_time and the current year. |
TikTok API rejects optimize_goal in some contexts | Both optimize_goal and optimization_goal exist in the schema, but prefer optimization_goal — it is the field TikTok validates in most objective types. |
| Only supports manual placement | REACH requires placement_type="PLACEMENT_TYPE_NORMAL". |
| Bid needs to be greater than $0 | Set bid_price > 0. |
| Please set frequency cap | REACH requires both frequency and frequency_schedule. |
Parameter Dependencies
TRAFFIC objective requires:
promotion_type="WEBSITE".optimization_goal="CLICK".billing_event="CPC".bid_price> 0.
REACH objective requires:
optimization_goal="REACH".billing_event="CPM".placement_type="PLACEMENT_TYPE_NORMAL".placementsarray (e.g.,["PLACEMENT_TIKTOK"]).bid_price> 0.frequencyandfrequency_schedule.
CONVERSIONS objective requires:
- A connected TikTok Pixel and a configured conversion event.
optimization_goal="CONVERT"(orVALUEfor value-based).billing_event="OCPM".pixel_idandexternal_actionset on the ad group.
Reporting
tiktok_ads_integrated_reports_get(
advertiser_id="123456789",
report_type="BASIC",
data_level="AUCTION_AD",
dimensions=["ad_id"], # ID-based only — NOT names
start_date="2026-04-01",
end_date="2026-04-30",
metrics=["impressions", "clicks", "ctr", "spend", "cpc", "cpm"],
page_size=20
)Reporting Rules:
- With the
stat_time_daydimension: maximum 30-day range per call. - Use ID-based dimensions only (
ad_id,campaign_id,adgroup_id— not names). - Conversion metrics (
conversion,cost_per_conversion,conversion_rate, etc.) require a connected pixel and a configured conversion event. data_levelmust match the dimension granularity:AUCTION_ADwithad_id,AUCTION_ADGROUPwithadgroup_id,AUCTION_CAMPAIGNwithcampaign_id.
Safety Rules
Never:
- Set ad group budgets below $20/day without warning the user.
- Schedule a campaign with a past
schedule_start_time(TikTok rejects this with a confusing error). - Mix REACH ad groups with
PLACEMENT_TYPE_AUTOMATIC— it will silently fail validation. - Create ads with
operation_status="ENABLE"before the user has reviewed creative + targeting. - Run reports with name-based dimensions — TikTok only accepts ID dimensions.
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- gomarble-ai/marketing-agent★ 13same name
- sergeyizmailov/knowledge-delta-skills★ 3same name
- slilbudget/knowledge-delta-skills★ 3same name
- vidual-labs/digital-marketing-skills★ 3same name
- ruslan2027/adako-mcp★ 1same name
- windsor-ai/claude-windsor-ai-plugin★ 1same name
- angelgabrieljacintohuayllasco/marketing-skills★ 0same name
- gmmh1/claude-paid-media-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use linkedin-ads.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
vinayakmamodiaSkilllinkedin-ads
Expert LinkedIn Ads strategist for B2B companies. Use when the user asks about LinkedIn advertising, LinkedIn campaign setup, LinkedIn ad targeting, LinkedIn bidding strategies, LinkedIn ad formats, LinkedIn retargeting, LinkedIn ABM campaigns, LinkedIn Thought Leader Ads, LinkedIn funnel architecture, LinkedIn ads measurement/attribution, LinkedIn ads troubleshooting, LinkedIn creative best practices, or any B2B paid social strategy involving LinkedIn. Also triggers on "LinkedIn campaign", "LinkedIn CPM", "LinkedIn CTR", "LinkedIn lead gen", "B2B ads", "demand gen on LinkedIn", "sponsored content", or "LinkedIn ads not working". Do NOT use for LinkedIn organic content/posting (use linkedin-content skill) or LinkedIn outbound messaging (use cold-email skill).
Also in 3 projects that use this
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ad-creative-generationSkill
- amazon-adsSkill
- analytics-insightsSkill
- blog-generationSkill
- brand-contextSkill
- cold-email-outreachSkill
- competitor-intelSkill
- customer-researchSkill
- email-lifecycleSkill
- gmailSkill
- google-adsSkill
- google-sheetsSkill
- hyper-cliSkill
- image-generationSkill
- instagramSkill
- linkedinSkill
- meta-ads-librarySkill
- meta-adsSkill
- openai-adsSkill
- pinterest-adsSkill
- reddit-adsSkill
- redditSkill
- seo-researchSkill
- slackSkill
- snapchat-adsSkill
- tiktokSkill
- twilioSkill
- video-generationSkill
- youtubeSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

