Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: tiktok-ads description: Operating procedure for TikTok Ads through Adako (not available yet — TikTok has not approved API access, so every TikTok tool says so and nothing runs), the MCP server and REST API that connects this assistant to Google Ads, Meta Ads, ChatGPT Ads, TikTok Ads and LinkedIn Ads. Use it whenever the user asks about TikTok campaigns, ad groups, in-feed video ads, Spark Ads, identities, video metrics such as hook rate and 6-second views, TikTok pixels and events, interest targeting or creative fatigue on TikTok, and whenever they ask to launch, pause or re-budget a TikTok campaign. It lists the 30 TikTok tools by job, the objective and pixel-event rules, the video asset rules, the budget floors, and the order a launch is built in. license: MIT
TikTok Ads with Adako
Adako is an MCP server and REST API that connects Claude, ChatGPT, Cursor and other assistants to Google Ads, Meta Ads, ChatGPT Ads, TikTok Ads and LinkedIn Ads. This skill covers TikTok Ads: 30 tools behind two routers, tiktok_ads for reads and tiktok_ads_write for changes.
Not available yet. TikTok has not approved API access for Adako, so no TikTok ad account can be connected and every TikTok tool answers access_level_insufficient before anything runs. Tell the user so, do not send them to connect TikTok, and offer the same job on a platform they have connected.
tiktok_ads(action="execute", tool_name="tiktok_list_campaigns", arguments={"advertiser_id":"700000000000000"})tiktok_ads_write(action="execute", tool_name="tiktok_pause_campaign", arguments={...})
tiktok_get_campaign_performance is callable by name. The Create, Change and Pause and resume tools below, and tiktok_upload_images, go through tiktok_ads_write, and each one becomes a proposal the user approves. Everything else goes through tiktok_ads, where list_tools and get_tool_schema are free for every TikTok tool, changes included. Never look anything up through tiktok_ads_write.
TikTok appears on the Accounts page only where the deployment has TikTok credentials. If the user does not see it, say it is available on request and write to support rather than promising a date.
Account contract
advertiser_idis a string. Omit it to use the primary TikTok account.- Money is a decimal in the account currency.
- Delivery is switched with
operation_status. Adako only ever sendsENABLEorDISABLE. The
platform's DELETE is never sent by any tool.
Tools by job
See what exists tiktok_list_campaigns · tiktok_get_campaign_details · tiktok_list_ad_groups · tiktok_list_ads · tiktok_list_identities · tiktok_list_ad_videos · tiktok_list_lead_forms · tiktok_list_pixels
Measure tiktok_get_campaign_performance · tiktok_get_ad_group_performance · tiktok_get_ad_performance · tiktok_get_audience_insights · tiktok_analyze_geo_performance
Diagnose tiktok_analyze_wasted_spend · tiktok_detect_creative_fatigue
Plan and resolve tiktok_explain_objective (free) · tiktok_search_targeting (free) · tiktok_validate_assets (free) · tiktok_upload_images
Create tiktok_create_video_campaign · tiktok_add_ad_group · tiktok_add_ad
Change tiktok_update_campaign · tiktok_update_ad_group
Pause and resume tiktok_pause_campaign · tiktok_resume_campaign · tiktok_pause_ad_group · tiktok_resume_ad_group · tiktok_pause_ad · tiktok_resume_ad
No TikTok tool deletes anything.
The objective matrix
The objective decides which optimisation goals and pixel events are legal. The create tool's preview refuses an invalid pair before anything exists; settle it first with tiktok_explain_objective, or read the whole rule set with get_campaign_spec (platform: "tiktok_ads", campaign_type: "video").
| Objective | Optimises for | Pixel | |
|---|---|---|---|
| REACH | reach, billed on impressions | no | |
| TRAFFIC | clicks, landing page views | optional | |
| VIDEO_VIEWS | engaged views (6 s or 15 s), billed per view | no | |
| ENGAGEMENT | followers, or profile page visits | no | |
| WEB_CONVERSIONS | conversions, value | required, with an event the pixel fires |
Adako builds these five. Lead generation, app promotion and product sales need assets set up in TikTok first, and the create tool refuses them. VIDEO_VIEW and PROFILE_VISIT are retired goals; Adako maps them to ENGAGED_VIEW and PAGE_VISIT and says so.
VIDEO_VIEWS is the cheapest way to buy views and the worst proxy for intent. Say that when a user asks for views and means sales.
Video and image rules
- In-feed video: 9:16 preferred at 1080x1920, also 1:1 and 16:9; 5 to 60 seconds; minimum 540x960;
under 500 MB; mp4, mov, mpeg, avi or 3gp. Best-performing length is roughly 21 to 34 seconds.
- Safe zone: keep text and logos out of the top 13% and bottom 20%, where the interface sits.
- Cover image: required for every video ad that is not a Spark Ad from an organic post; exactly one.
tiktok_upload_images puts covers in the library and returns image ids.
- Identity: required on every ad. Custom identities (
CUSTOMIZED_USER) can no longer post on TikTok
placements; a Business Center identity needs its Business Center id.
- Ad text: 100 characters, no emoji; each Chinese or Japanese character counts as two. Display name:
- Call to action: 30.
tiktok_validate_assetschecks a URL is reachable, an accepted format and inside the size limit
before anything is uploaded. Run it first; an upload failure is expensive to unpick.
Budget floors
In USD, 20 a day per ad group and 50 a day per campaign. Other currencies multiply those by TikTok's currency ratio (JPY 5,000 and 2,000, for example), and some take whole amounts only. The preview checks the account's own floor, and a budget lowered later must stay at least 105% of what has already been spent. A bid must be below both the ad group and the campaign budget.
Dates
Start and end dates are days in the advertiser's time zone; Adako converts them to the UTC times TikTok takes. A start date that is already over is refused. The schedule lives on the ad group: change it with tiktok_update_ad_group, not the campaign.
Launching a video campaign
tiktok_explain_objectiveto fix objective, optimisation goal and billing event.tiktok_list_identitiesfor the handle and avatar the viewer sees. Spark Ads need a Business
Center identity and the creator's post authorisation code; without both the organic post cannot be used.
tiktok_list_pixelswhen the objective needs one, and check the chosen event has recent traffic.
An event with no volume never leaves learning.
tiktok_search_targetingfor places, interest categories, interest keywords and languages. Pass
the campaign objective, because the places TikTok allows depend on it. Device and network values come back as enums to use verbatim.
tiktok_validate_assetson the video URL.validate_campaign_drafton thediagnosticsrouter for a full dry run.tiktok_create_video_campaignfrom a video URL, an existing video id, or an organic post for a
Spark Ad. Campaign, ad group and ad are created PAUSED.
- Read back and say what is paused.
tiktok_add_ad_groupandtiktok_add_adextend it later.
Reading results
TikTok metrics include the video set: 2-second and 6-second views, completion, average watch time. Hook rate is the share of impressions that reach 2 seconds; it is the first number to look at when a creative underperforms.
tiktok_detect_creative_fatiguecompares the halves of a window per ad and flags falling hook
rate, CTR or CPA against rising frequency. The fix is a new video, not a bid change.
tiktok_analyze_wasted_spendexcludes anything still learning or too thin to judge.tiktok_get_audience_insightssplits by age, gender, placement, device OS or language.tiktok_analyze_geo_performanceranks countries by spend and flags the ones taking budget with
nothing to show.
Do not
- Do not run a horizontal video in a vertical feed. Ask for the 9:16 cut.
- Do not propose a Spark Ad without an identity and the authorisation code.
- Do not send interest or place names into a write call.
- Do not judge a new ad group before it leaves the learning period.