SuperAPI AI Directory

run-paid-campaigns

Marketing & growth

View repository

Updated 10-27 12:24

About this skill

run-paid-campaigns

What you get

  • On the first run, an account baseline — structure (ad sets under the learning floor, overlapping audiences), spend concentration by concept, creative age and mix, tracking state — which seeds the first moves (consolidation, rotation, fixes). references/baseline-audit.md.
  • Weekly moves proposal (budgets in the marketer's currency) — in the report shape (references/proposal-and-log.md): In short (what a customer may cost, data window, what is and isn't visible), checks and pacing vs ceiling, since last time (each earlier move: done or not, and worked / didn't work / too early / can't tell, measured against the baseline stored when it was staged), then every move this week — scale / pause / hold / rotate / launch / graduate / fix / instructions — each with its evidence, confidence, what should happen, how it's applied and a check date. Near-threshold calls carry both readings and a trip-wire. Shape: references/proposal-and-log.md.
  • What to do: approve in three bundles — approval links for Meta budget changes, swaps and launches (one approval each; GO LIVE typed for increases and live swaps), one sentence the marketer says for pauses, and written instructions for everything outside GooseWorks' reach. With the marketer's own ads connector, a card per change, each applied on its own named yes.
  • Change log in the server's campaign-harness format — ads/campaigns/<slug>/state.md and decisions.md — so every approval, decline and pause is recorded and results trace back to decisions.
  • A run record for next week (references/run-memory.md): the per-ad scorecard (top 10 by spend plus all others, with the trend since last run), every money move with its baseline recipe and verdict, and the open moves with their review dates — saved to the brand so the next run, the performance read and the replan all start from what happened.

Before you start

  1. Setup first: do the marketing-guide skill (../marketing-guide/SKILL.md) §1–2 (connect, brand, brain read) before anything else; the job line is "run your ads"; groups to load: meta, files, campaigns, automation. This playbook offers local mode (marketing-guide §5; what replaces each GooseWorks read and lever: references/local-mode.md). Pick the mode from what is listed:
    • GooseWorks connected — the path below. An ads-platform connector the marketer also has fills what GooseWorks can't read (frequency, CPM, learning status, ads GooseWorks didn't make) and can change what GooseWorks has no lever for (step 3).
    • No GooseWorks, an ads-platform connector (store, CRM or billing connectors too, read-only) — local mode; reads and changes go through the connector by the connector rule (references/meta-levers.md § With an ads-platform connector).
    • Neither — local mode on exports and screenshots, with written instructions. A missing GooseWorks or Meta connection is never a blocker: say in one line what this run can and can't do, and go on. No coworker workspace → also say the server can't log Meta outcomes until the brand has one.
  2. Read the brain, then the plan. Brain chapters: 20 "Our plan", 15 "How we work together", 23 "What is working", and the operating plan (gooseworks:brand_knowledge_read; caps, protected campaigns, emergency stop — references/proposal-and-log.md § The yardstick in the brain); on the fallback path, gooseworks:knowledge_search ["learning"]. Then gooseworks:campaign_read; open the campaign being run. Use its brief only when the Status line says Approved: Channel decisions, Economics, Budget split, Paid structure, Test plan, Replan triggers, its version and the change-log slug (in the Status comment). Local mode: no brain or campaign reads; the newest approved plan in the local plans/<slug>/ (its Status line) is the brief, and brand-notes.md holds the rules. No approved brief → say so and recommend planning first. If ads are already live and the marketer wants moves now, continue only with the platforms they name and an allowable cost they confirm, labelled "no plan on file".
  3. Channel scope and levers — before touching any account. Every object on a chosen paid platform runs on one of three: GooseWorks levers (Meta objects GooseWorks created or pushed into; approval pages), connector levers (what the marketer's ads-platform connector can change, by the connector rule in references/meta-levers.md), or written instructions (everything else, incl. app-install and local-radius campaigns). Never default to Meta; never drop a chosen platform for lack of levers. Only if Meta is chosen and GooseWorks is connected: gooseworks:meta_read (pages, performance). Load references/meta-levers.md and tell the marketer in one line what will be links, connector changes and instructions; never claim a lever this run doesn't have. When the plan's goal is a conversion (sign-ups, sales, leads), that first message also says what a campaign GooseWorks creates can and can't do today, and the alternatives — all from references/meta-levers.md.
  4. The yardstick. Allowable cost (per customer, qualified lead, trial or retained user — whatever the brief's goal chain uses), budget ceiling, off-limits campaigns, attribution setting — from the brief, else a confirmed brain target (chapter 20 target_cpa / target_roas; found or waiting targets go only under "Decisions for you" and never steer a move — references/proposal-and-log.md § The yardstick in the brain), else state.md, else derived from margin and the goal, else asked. A pre-revenue or no-history brand gets framed options ("a provisional $X per trial for a fixed $Y test"), labelled provisional — the run doesn't stall.
  5. The volume regime (references/reading-results.md): high-volume (weekly moves) · low-volume lead-gen / services (monthly decisions, weekly fixes and upstream signals) · app (matured 7–14-day windows, cost per trial or retained user).
  6. Load the last run — the Start steps of the run-memory skill (../run-memory/SKILL.md) with job weekly ads check and the campaign slug as subject (references/run-memory.md): the last record, its scorecard and money moves with their baseline recipes. No record → say it's the first check of this campaign; this run's numbers become the baseline.
  7. The rest of the picture. state.md (frontmatter, open recommendations, Meta objects) and the ### YYYY-MM-DD — … blocks of decisions.md; for every open push or proposal id there, meta_read push or change status before proposing anything (GooseWorks only; local mode reads these files under gooseworks-local/<brand-slug>/). The latest weekly read and its input summary (reports/performance/<YYYY-MM-DD>.md, reports/performance/inputs/<YYYY-MM-DD>.md) — reuse exports the marketer already gave this week. Research's demand read (research/market/demand.md) for search keywords. Then ask once for what neither GooseWorks nor a connector shows: an export or screenshot per chosen platform, stock on promoted products, offer changes. Nothing arrives → no-export mode (references/written-instructions.md).

Steps

  1. First run on this account: baseline audit — references/baseline-audit.md. Map the structure, spend concentration and creative age from the exports and meta_read (local mode: the connector or the exports); it seeds this week's consolidation, rotation and fix moves and the regime. Later runs skip it unless the structure changed.
  2. Checks — atom the run-paid-campaigns-health-gate skill (../run-paid-campaigns-health-gate/SKILL.md). Per chosen platform: tracking (CRM lead-source capture for lead-gen; app postbacks for apps), destination (loads, product, price, offer, stock, UTMs), rejections, account/payment state. A fail blocks launches and scale moves for that destination and becomes a fix move; a broken tag also flags the window's numbers. Write the result into the state.md health line.
  3. Since last time — the outcome check — run-memory's Start step 3 is this step (references/run-memory.md § Start, which holds the sources, the baseline re-pull and where each verdict is logged). Every open move and every due ## Checks due line ends with one verdict: worked / didn't work / too early (readable ) / can't tell (why); then write the 3–5 "since last time" lines that open the proposal. A move that didn't work is not repeated without a new reason.
  4. Read the week — atom the run-paid-campaigns-weekly-read skill (../run-paid-campaigns-weekly-read/SKILL.md), references/reading-results.md. Settled, like-for-like windows; coverage stated; Traffic tests read on click rate, cost per page view and store conversion; everything against the allowable on store- or CRM-joined numbers where the weekly read has them. The "why" is one line from the weekly read — this playbook acts, that one explains.
  5. Draft the moves — atom the run-paid-campaigns-draft-moves skill (../run-paid-campaigns-draft-moves/SKILL.md). Done when every object that needs a move has one recommendation with its evidence, check date and baseline recipe, and the month-end total stays inside the ceiling.
  6. Launch (when the test plan or new picked creative calls for it) — references/launch-and-graduate.md. Picked statics come from make-static-ads' batch file ads/batches/<YYYY-MM-DD>-<slug>.md (picks, copy per ad, test structure, regulated-category flags) and the lower-case picked tag; copy, headline, CTA and destination verbatim (append UTMs only) — never written here; missing → ask the marketer to paste the approved copy. Creative no released maker checked (GooseWorks videos from gooseworks:video_read, the marketer's own files; local mode: only the marketer's own files or ads already in the account): before staging, the claims gate and ad-policy check on its copy and the video's script, on-screen text and end card, and one question on AI-made people or voices (references/launch-and-graduate.md § Health gate, item 3). Script or text unreadable → the card says "not claim-checked" and can't launch until the marketer confirms those lines.
  7. Rotation — a fatiguing ad gets a swap to a picked creative, or a request line in ads/campaigns/<slug>/rotation-requests.md (Rotation needed: for make-static-ads · <angle, hook, formats, proof, live-by date> · return to: ads/campaigns/<slug>/rotation-requests.md). A tired video ad gets the same brief in the proposal, offered as the next job with the goose-video skill (without GooseWorks: for whoever makes their videos).
  8. Stage — atom the run-paid-campaigns-apply-and-log skill (../run-paid-campaigns-apply-and-log/SKILL.md) § Stage, with the steps for each move's lever (GooseWorks approval pages, connector cards, or written instructions; local mode has only the last two), then save the run: the End steps of the run-memory skill (../run-memory/SKILL.md) (references/run-memory.md) — the per-ad scorecard, the money-move table and the open moves, linking state.md, decisions.md and this run's proposal file. Done when every move is in state.md with its check line, every approval link was returned by the server (GooseWorks levers), the proposal and run record are saved, and the proposal is shown. Stop.
  9. Apply what the marketer says — same atom, § Apply (or § Apply through a connector). Done when each move is approved, declined, waiting or "done" from a source, never early; anything the server can't log is in decisions.md; and, if moves were applied in this conversation, that day's run record is re-saved with the marketer's decisions.
  10. Follow up — on each check date (next run, or an optional mid-week check), apply the rule in ## Checks due; when a trip-wire trips, give the marketer the exact pause sentence.

Reactive runs below save a run record too (step 7).

Reactive — sold out, sale ended, page down: run the checks and stage the immediate fix (pause sentence, swap link or instructions); compare stock cover with the restock date and swap to in-stock creative where possible; stage offer-end pauses in advance from the lower-case offer-ends:<yyyymmdd> tags; flag the replan trigger in state.md.

Reactive — an ad was rejected (pausing it does nothing — it isn't delivering): get the exact reason (push status per creative, or the marketer's screenshot); write it to the health line; if it looks wrong, a "request review" instruction; if right, for an image ad, a request line for its maker (Fix needed: for make-static-ads · <ad, reason> · return to: ads/campaigns/<slug>/rotation-requests.md) — the maker rewrites it; for a video ad, the reason and the exact line or shot to change, offered as a fix with the goose-video skill (without GooseWorks: for whoever made it); scan the other live ads for the same claim or visual and flag them (repeat rejections risk the account — a replan trigger); stage the swap once a fixed creative is picked.

Reactive — brand crisis (viral complaint, recall, safety or PR issue, or the marketer says "hold everything"): propose at once — pause sentence for every Goose ad touching the issue (or all, if the marketer says so), instructions for the rest, and a hold on every launch and scale; flag ads whose copy or offer now reads badly; name any approval links still open from this week (budget increases, launches) and say plainly "don't approve these for now" — mark them on hold in state.md; tell the marketer that scheduled emails and posts are paused separately, outside the ads; nothing switches back on until the marketer says so. Note it as a replan trigger and in the health line.

Approval gates

  • Every money move is a finished proposal; how each kind gets its yes (approval page, the pause sentence, a named connector yes) is the run-paid-campaigns-apply-and-log skill (../run-paid-campaigns-apply-and-log/SKILL.md) and references/meta-levers.md. You cannot approve on the marketer's behalf.
  • Graduating a winner into the main conversion ad set is the marketer's call, with the re-learning risk stated.
  • Creative entering an account has passed the claims and ad-policy checks (the maker's, or step 5's for videos and the marketer's own files) and been picked by the marketer; a "not claim-checked" card never launches before the marketer confirms its lines.
  • Near-threshold kill-or-scale calls show both readings; the marketer decides. "Brand fit" vetoes are theirs.

Output and write-back

  • ads/campaigns/<slug>/state.md and decisions.md in the harness grammar (references/proposal-and-log.md), re-read before every write; the server appends its own Meta outcomes there.
  • If the allowable cost was asked or changed, offer to update the brief's Economics section (only that section; version bumped; pending creative plans checked first with gooseworks:ads_creative_read approvals view — saving discards them; local mode: a new version of the local plan, no check).
  • Request lines for the makers in rotation-requests.md; their answers (Rotation ready: / Fix ready:) are read on the next run.
  • The proposal file ads/campaigns/<slug>/proposals/<YYYY-MM-DD>.md every run, and the run record runs/run-paid-campaigns/weekly-ads-check/<slug>/<YYYY-MM-DD>.md through run-memory (imported to the brand, so analyze-performance and plan-campaign read the moves, outcomes and scorecard).
  • Targets and a stated daily cap → proposals to the Brand Brain for the marketer's yes (references/proposal-and-log.md § The yardstick in the brain).
  • Recurring: offer once to stage this every Monday after the weekly read (and an optional mid-week trip-wire check), created by marketing-guide §3 Schedules (local mode: the host's scheduler, or say it isn't available). With GooseWorks, per the spend-gate skill (../spend-gate/SKILL.md)'s automation rule the schedule is created paused, each run uses credits (the exact cost isn't shown in advance), and a scheduled run only stages — it never pauses or applies anything. A scheduled run still loads the last record, checks every earlier move and saves a new record (references/run-memory.md § Scheduled run). Set it up by marketing-guide §3 Schedules: the method goes in ads/method/, the prompt is references/run-memory.md § Setting up the schedule (stage proposals only; never apply, publish, pause or spend).

Done when

  • One proposal is staged: every move has its evidence, what should happen, a baseline recipe and a check date.
  • Every approval link shown was returned by the server; the pause sentence and the instructions are ready; borderline calls carry both readings.
  • Nothing was applied before the yes; after it, only approved moves were applied, each confirmed by the server or the marketer and logged in the harness format.
  • You would approve the staged moves as written.

Out of scope

  • Making or rewriting ads — make-static-ads (it answers this playbook's request lines). Making or remaking video ads: the goose-video skill (a GooseWorks skill, not a playbook).
  • Choosing the channel mix, budget split or test plan — plan-campaign (this playbook flags what the account can't express and records fired replan triggers).
  • Explaining why performance moved and what to make next — analyze-performance.
  • Ads inside AI assistants — watch-list only.