Communitygithub.com

mardab96/tiktok-ads-claude-skills

Reviews TikTok Search Ads search terms and keywords and decides what to add as a keyword, add as a negative, or watch, with match handling as labelled in the account and a lag-aware waste floor. Use when someone types "review our TikTok search terms", "negative keyword list for TikTok Search Ads", "which queries should become keywords", "broad match is bringing junk", or "Search Ads spend with zero conversions".

tiktok-ads-claude-skills 是什麼?

tiktok-ads-claude-skills is a Claude Code agent skill that reviews TikTok Search Ads search terms and keywords and decides what to add as a keyword, add as a negative, or watch, with match handling as labelled in the account and a lag-aware waste floor. Use when someone types "review our TikTok search terms", "negative keyword list for TikTok Search Ads", "which queries should become keywords", "broad match is bringing junk", or "Search Ads spend with zero conversions".

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mardab96/tiktok-ads-claude-skills/tree/HEAD/search-ads-keyword-review-tiktok-ads

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Search Ads Keyword Review

Use this skill when

Search term data exists and the buyer must turn it into three lists: terms to add as keywords, terms to block as negatives, and terms to watch. Read search terms first, keywords second, and never treat a single thin term as proof.

Common requests:

  • "Here is the Search Terms report. What do we block?"
  • "Broad match is pulling irrelevant queries. Narrow it?"
  • "Which converting queries deserve their own keyword?"
  • "We spend on search with no conversions. Waste or just early?"
  • "Build the negative list with the right match types."

Do not use this skill for these jobs:

  • Non-search waste across ad groups, ads, or placements: wasted-spend-finder-tiktok-ads.
  • A page that fails the query promise: landing-page-match-tiktok-ads.
  • Event or tracking doubts: pixel-events-api-check-tiktok-ads.
  • CPA moved and the cause is unknown: cpa-spike-diagnosis-tiktok-ads.

Required input

Work from pasted exports and screenshots. Claude's TikTok for Business MCP connector is optional.

Required

  • Search terms export with columns search term, keyword (the entered keyword that matched), match type where present, campaign, ad group, date, spend, clicks, conversions. Rename the account's own column labels to these names when you paste.
  • Current keyword list with match types, and the current negative list with its scope (ad group or account level, as labelled in your Ads Manager).
  • Target CPA, currency, timezone, primary event, conversion lag in days.
  • The offer: products or services sold, brand terms, competitor policy, landing page URL or text.

Optional

  • impressions and CTR per term, which help with intent reading.
  • Ad copy or the in-feed video the search ad reuses.
  • Independent order or lead report for the same dates.

Export route: the Search Terms section and Custom reports are the documented places in TikTok help pages for search reporting. See ../tiktok-ads-shared/references/getting-your-data.md and save screenshots when a column cannot be exported.

Before analysis

  1. Identify which surface produced the data. A Search Ads Campaign is keyword based, with keywords set at ad group level. Automatic Search Placement (formerly Search Ads Toggle) extends an in-feed video campaign to the search results page, has no keywords to edit, and still shows a search terms report and accepts negatives.
  2. Confirm the primary event and the conversion lag. Rows newer than the lag are needs_data.
  3. Collect the brand and competitor policy. A competitor or brand term is a business decision, not a waste finding.
  4. Check the change log for keyword, match, or budget edits in the window. Learning-sensitive ad groups (T05) get hold on match narrowing.

Analysis workflow

  1. Join every search term to the keyword and match type that served it. Terms with no keyword (Automatic Search Placement) go in a separate block.
  2. Classify intent per term with the offer list in hand: brand, competitor, product specific, category or problem, research, free or DIY, unrelated. Ambiguous intent is hypothesis.
  3. Keep mature rows only. Aggregate each term across the window and compute spend, clicks, conversions, CPA, CVR against the ad group average. Optionally run ../tiktok-ads-shared/scripts/wasted_spend.py on term rows (columns date, level set to search_term, name, spend, conversions) with --target-cpa and --conversion-lag-days. It judges each row on its own, so aggregate first and strip currency symbols other than $.
  4. Apply T03 to zero-conversion terms. Pass T03, then check intent. Pass both and the term enters the negative proposal.
  5. For converting terms at or under target CPA on mature rows, check whether an equivalent keyword already exists and what match type serves it. Propose an add only where it gives control, for example a phrase or exact keyword for a term currently served by a broad keyword.
  6. Choose negative match type from the blocking level TikTok documents: broad blocks most, phrase blocks medium, exact blocks least. Run a collision check: would this negative block any converting term or any active keyword.
  7. Add variants. Negatives do not block plurals, misspellings, or synonyms, so each variant is its own entry. Casing is covered automatically.
  8. Review keyword match types. TikTok help suggests broad match for reach and learning at launch, and says match types can be adjusted mid-flight, for example after learning. Propose narrowing only when off-intent terms dominate a keyword and the ad group is past T05.
  9. Check overlap: the same term served by several ad groups or keywords. Propose one owner and negatives elsewhere.
  10. Send adjacent terms (right audience, weak page) to landing-page-match-tiktok-ads. Return the approval queue.

Decision rules

Match syntax as TikTok documents it (confirm in your account): broad is the plain keyword, phrase uses quotation marks, exact uses square brackets. For negatives, broad blocks a query that contains every word in any order, phrase blocks the words in order with extra words allowed around them, exact blocks only the identical query.

Condition on mature rowsActionVerdictNext step
Spend at least 1.5 times target CPA, zero conversions (T03), intent off-offerNegativelikelyapproval_needed, pick match type after the collision check
Same T03 pass, intent on-offer or ambiguousWatch and page checkpossiblelanding-page-match-tiktok-ads, review again next window
Zero conversions, spend under the T03 floorWatchmonitorRe-export next window
Zero conversions, spend under the floor, intent clearly unrelatedNegative on intent alonepossible, confidence low, tag hypothesisapproval_needed if the operator accepts intent as evidence
Converted at or under target CPA, no matching keyword controlAdd as keywordlikely, or possible if all conversions came on one dateapproval_needed for match type
Converted, CPA above targetWatchmonitorDo not negate a converter on CPA alone
Brand or competitor termPolicy decisionapproval_neededOwner decides, record the rule
Row inside the conversion lagNoneneeds_dataWait for the lag to clear
Primary event drop with steady clicks (T10)Freeze all negativesholdpixel-events-api-check-tiktok-ads
Export has no keyword column (Automatic Search Placement)Negatives only; adds are a testpossibleConsider a separate Search Ads Campaign, approval_needed

Term clusters: single terms are thin. Group by pattern (for example all "free" variants), treat the cluster as one row, and label it hypothesis until a member converts or the cluster passes T03 as a whole.

Output format

Fill this template.

## Search review: [campaign], [dates], [currency], [timezone]
Surface: [Search Ads Campaign | Automatic Search Placement | needs_data]
Target CPA: [value]. T03 floor: [1.5 x target]. Lag: [days]. Rows excluded as recent: [n]

### Search action sheet
| Term | Keyword and match as labelled | Intent | Spend | Clicks | Conv | Lag status | Action | Verdict | Rationale |
|---|---|---|---|---|---|---|---|---|---|

### Negative proposals
| Entry with syntax | Scope | Blocks | Collision check | Variants to add |
|---|---|---|---|---|

### Keyword proposals
| Term | Proposed match | Why | Existing keyword it overlaps |
|---|---|---|---|

### Findings
| Finding | Evidence | Verdict | Severity | Confidence | Business impact | Next step |
|---|---|---|---|---|---|---|

### Data gaps
[missing column, lag, policy, or export and what it would firm up]

Keep negative proposals separate from live changes. Nothing is applied by this skill.

Practical example

Illustrative numbers only. A sports-nutrition store, Search Ads Campaign, target CPA 30 USD, lag 7 days, so the T03 floor is 45 USD.

  • "free protein samples": 62 USD, 48 clicks, 0 conversions, off-offer. Passes T03 and intent. Verdict likely. A broad negative free would also block "free shipping protein powder", which converted, so the collision check rejects it. Propose [free protein samples] plus [free protein sample], since a singular form is not blocked.
  • "whey protein isolate 2kg": 118 USD, 5 conversions, CPA 23.60, served by broad keyword protein powder. Verdict likely. Propose phrase keyword "whey protein isolate" and keep the broad keyword.
  • "best protein powder reddit": 51 USD, 40 clicks, 0 conversions, research intent. Passes T03 but intent is ambiguous. Verdict possible, action watch, page check.
  • "protein bar recipes": 18 USD, 0 conversions, unrelated. Below the floor. Verdict possible, confidence low, negative on intent alone if the owner agrees.
  • "protein shaker bottle": spend inside the lag. Verdict needs_data.

Output: two negatives and one phrase keyword at approval_needed, one watch item with a page check, one recent row held back.

Common failure modes

  • Treating Automatic Search Placement terms as keywords you control. That surface extends in-feed video, so there is no keyword to add.
  • Adding a broad negative that blocks a converting query because the words appear in a different order.
  • Assuming a negative also covers plurals, misspellings, and synonyms. It does not.
  • Negating a term after a few clicks. Per-term volume on search is often thin, so cluster before judging.
  • Judging terms inside the conversion lag, which makes late converters look like waste.
  • Narrowing match types while the ad group is still learning (T05).
  • Importing intent classes from other search platforms. TikTok queries mix entertainment and shopping, so check every class against your own converting terms.
  • Reading platform-reported term conversions as sales without an independent check.

Route to next

Weak page after a good click: landing-page-match-tiktok-ads. Tracking doubt: pixel-events-api-check-tiktok-ads. Waste outside search: wasted-spend-finder-tiktok-ads. CPA movement: cpa-spike-diagnosis-tiktok-ads. Strategy fit for a Traffic or Conversions ad group: bid-strategy-check-tiktok-ads.

Guardrails

  • Do not make a live account, budget, bid, placement, tracking, Shop, page, or creative change.
  • Do not propose a negative from T03 alone; intent review comes first.
  • Do not negate a converting term on CPA alone.
  • Do not use a broad negative without a collision check against converting terms and active keywords.
  • Do not treat rows inside the conversion lag as findings.
  • Do not present platform-reported conversions or GMV as profit without the supplied cost stack.
  • Do not hide missing dates, lag, attribution settings, or conversion definitions.
  • Do not claim a result before a controlled measurement exists.

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

mardab96/tiktok-ads-claude-skills

Runs an ordered, layer-by-layer triage of an unfamiliar TikTok Ads account (tracking, structure, learning, creative, bidding, landing page) and hands the first blocker to one named sibling skill. Use when the user inherits a TikTok account, onboards a client, asks where to start, says TikTok results dropped with no known cause, asks whether an account is ready to scale, or says "audit this TikTok account" without naming a problem.

mardab96/tiktok-ads-claude-skills

Reconciles TikTok Ads Manager conversions with GA4, Shopify, CRM, or app analytics using a baseline-ratio method, separating click-through from view-through credit, attribution window and timezone differences, and real tracking drift (T07). Use when a TikTok media buyer or client says "TikTok says 200 sales, Shopify says 90", "GA4 does not show our TikTok conversions", "TikTok ROAS looks too good", "the gap got bigger this month", or "which number do we report to the client".

mardab96/tiktok-ads-claude-skills

Checks whether a TikTok ad group's bidding strategy fits its goal, budget, and conversion volume using the labels TikTok currently lists (Maximum Results, Target Cost per Result, value options as shown in the account) and asks for a screenshot before mapping any legacy name. Use when someone types "Maximum Results or Target Cost per Result", "Cost Cap vs Lowest Cost on TikTok", "our target CPA is too low and delivery died", "bid strategy check", or "should we use hybrid bidding".

mardab96/tiktok-ads-claude-skills

Builds a staged TikTok budget plan with entry gates, one change per observation window, stop rules, and a recorded rollback, using T04, T05, T06, and T10 from the shared register. Use when someone types "can we scale this TikTok campaign", "double the budget on the winner", "how fast can I raise the daily budget", "scale before the sale", or "plan the budget increase for next week".

mardab96/tiktok-ads-claude-skills

Strips personal data from TikTok ad comments, clusters them into objections, questions, proof requests, and noise with counts, links each cluster to product facts, and drafts reply options and hook ideas for approval. Use when the user pastes TikTok comments and asks "what are people objecting to", "mine the comments for hooks", "draft replies to these comments", "what do viewers keep asking", or wants an FAQ and creative briefs built from comment themes.

mardab96/tiktok-ads-claude-skills

Diagnoses a TikTok CPA jump by splitting it into CPM, CTR, and CVR movement between a baseline and a current window with the cpa_decompose.py helper, then checking tracking, changes, mix, creative, and landing page in that order. Use when someone types "TikTok CPA doubled", "cost per purchase is up 40%", "why did CPA spike", "CVR dropped but clicks are fine", or "the client wants to know what broke".

mardab96/tiktok-ads-claude-skills

Detects whether a TikTok ad is tiring by comparing the last seven distinct dates with the preceding seven for frequency and CTR, using the bundled fatigue_scan.py script and a 14-date rule, then builds a control-versus-refresh queue. Use when the user asks "is this TikTok ad fatigued", says CTR is dropping while frequency climbs, wants to know when to refresh TikTok creative, or pastes a daily ad export and asks which ads to replace.

mardab96/tiktok-ads-claude-skills

Turns TikTok Shop and GMV Max reporting into a per-product cost-stack ledger with refunds, affiliate commissions, seller-funded coupons, referral fees, ad spend, COGS, and seller-borne shipping, using gmv_profit.py to flag any incomplete cost stack (T09). Use when a TikTok Shop seller or media buyer says "GMV Max ROI looks great but we are not making money", "is this product profitable on TikTok Shop", "check our TikTok Shop margins", "affiliate commissions are eating us", or before raising a GMV Max budget or ROI target.

mardab96/tiktok-ads-claude-skills

Scores the opening seconds of TikTok ads by computing 2-second and 6-second view rates and a thumb-stop proxy from ad-level export columns, comparing them with like-for-like ads, and scoring the script opening on a five-point rubric. Use when the user asks "which TikTok hook is weak", "what's my hook rate", "why do people scroll past my ad", wants a hook test plan, or pastes a transcript of the first seconds next to video-view columns.

mardab96/tiktok-ads-claude-skills

Sequences planned TikTok edits around the learning phase, separating urgent repairs from optimisation, naming which edits TikTok itself labels as affecting learning, and ordering one observable action at a time with rollback. Use when someone types "can I edit this ad group during learning", "will this reset the learning phase", "campaign is in learning, what can we change", "sequence these changes", or "the client wants five edits this week".

mardab96/tiktok-ads-claude-skills

Checks TikTok Pixel and Events API health from Events Manager screenshots and an Ads Manager export, covering event match signals, event_id deduplication between browser and server events, parameter completeness on value events, and primary-event drops against stable clicks (T10). Use when a TikTok media buyer says "purchases dropped but clicks are flat", "check our TikTok pixel", "is Events API deduplicating", "Events Manager shows a diagnostic warning", "TikTok value does not match our orders", or before any bid, budget, or scale call that depends on TikTok conversion data.

mardab96/tiktok-ads-claude-skills

Reviews TikTok Ads delivery split between the TikTok placement and Pangle or TikTok Ad Network inventory (as labelled in your Ads Manager), testing CPA and downstream quality per placement against T08 and keeping brand safety and suitability as a separate question. Use when a TikTok media buyer says "should we turn off Pangle", "where is our TikTok spend actually going", "automatic placement is eating budget", "network traffic converts badly", "is our TikTok ad showing next to unsafe content", or when a client asks for a placement and brand safety readout.

mardab96/tiktok-ads-claude-skills

Audits a TikTok Smart+ campaign by mapping what Smart+ automates against what the media buyer still controls (creative supply, audience exclusions, conversion event, budget, bidding), then ranks the risks. Use when someone types "audit our Smart+ campaign", "what does Smart+ actually control", "Smart+ vs manual", "Smart+ spend is up but results are flat", or "can we trust Smart+ with this budget".

mardab96/tiktok-ads-claude-skills

Compares TikTok Spark Ads with brand-handle ads like-for-like by matching objective, optimization event, audience, offer, placements, bidding label, dates, and concept before any metric is read, then records authorization status and designs a matched test when no clean pair exists. Use when the user asks "do Spark ads perform better than our brand ads", "Spark vs non-Spark", "should we boost creator posts", "why is the creator ad cheaper", or pastes ad-level data with a format column and wants a verdict.

mardab96/tiktok-ads-claude-skills

Writes a complete creator-facing UGC brief for TikTok ads, with viewer situation, one message, three hook options, scene structure, claims allowed and forbidden, do and don't lists, disclosure, usage rights, and a Spark authorization note, plus an internal approval checklist. Use when the user says "write a UGC brief for TikTok", "brief a creator", "I need a creator script with approved claims", "what rights do I need to run this creator video as an ad", or has product facts and needs something a creator can film from.

mardab96/tiktok-ads-claude-skills

Finds mature TikTok campaigns, ad groups, and ads that spent past a CPA-based floor with zero reported conversions, after excluding rows still inside the conversion lag, using the wasted_spend.py helper. Use when someone types "where is the wasted spend on TikTok", "which ad groups burn budget with no conversions", "what can we cut before we scale", "zero conversion ads", or "clean this account before the client call".

mardab96/tiktok-ads-claude-skills

Writes the weekly TikTok Ads client report as a plain-language narrative, a scorecard against the client goal, and next-week decisions with owners and approvals, after an integrity check on tracking, lag, and learning status (T04, T05, T07, T10). Use when an agency or freelance TikTok media buyer says "write the weekly TikTok report", "client update is due", "explain this week's TikTok results to the client", "what do we tell the client about CPA going up", or "set up a repeatable TikTok report format".

mardab96/tiktok-ads-claude-skills

Turns one proven TikTok ad into N distinct angle scripts, each with hook, body beats, CTA, on-screen text, and a shot list, after deconstructing why the winner worked and checking every claim against product facts and rights. Use when the user says "remix my winning TikTok ad", "give me new angles on this winner", "I need five scripts like this one", "my best ad is wearing out, what next", or pastes a winning transcript and asks for variations.

相關技能