Generated banner for Marketing Loops
Generated logo for Marketing Loops

Marketing Loops

Corey HainesCommunityCreated by Corey Haines

  • Skill
  • Workflow
  • Automation and integrations
  • MIT
  • No issues found

From the author

When the user wants to set up a recurring, self-running marketing workflow — a repeatable loop an AI agent runs on a cadence (weekly, daily, on a trigger) rather than a one-off task. Also use when the user mentions 'marketing loop,' 'recurring marketing workflow,' 'automate my marketing,' 'marketing on autopilot,' 'weekly marketing review,' 'ad fatigue check,' 'weekly ads check,' 'content refresh loop,' 'churn watch,' 'ranking drop alert,' 'run my SEO,' 'SEO operator,' 'daily SEO agent,' 'run my outbound,' 'AI SDR,' 'reply triage,' 'always-on marketing,' 'marketing automation workflow,' or 'run this every week.' Use this to pick, adapt, and schedule an ongoing marketing loop that orchestrates the other marketing skills. For one-off marketing ideas, see marketing-ideas. For the experimentation loop specifically, see ab-testing.
— the description by Corey Haines

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Marketing Loops transforms manual, recurring marketing tasks into always-on systems. Rather than one-off actions, this skill helps you design, implement, and schedule loops that monitor signals, perform analysis, and execute tasks based on specific triggers. It emphasizes the importance of state management, self-checks, and human guardrails to ensure that automated marketing remains disciplined, safe, and effective.

What it does

  • Sets up recurring marketing workflows with defined cadences (weekly, daily, or trigger-based).
  • Orchestrates other marketing skills to perform specific, repeatable tasks.
  • Implements self-check mechanisms to prevent acting on noise or data errors.
  • Manages loop state to ensure idempotency and prevent duplicate actions.
  • Provides a framework for defining stop conditions and human-in-the-loop checkpoints.
  • Integrates with scheduling tools to automate execution.

When to use it

  • When you need to automate recurring tasks like SEO monitoring, ad fatigue checks, or churn signals.
  • When you want to transition from manual, one-off marketing tasks to a sustainable, always-on system.
  • When you need to ensure consistent, scheduled execution of marketing operations.
  • When you need to build a marketing operating system that coordinates multiple specialized tasks.

Advantages

  • Reduces manual overhead by automating repetitive marketing maintenance.
  • Ensures consistency in monitoring and responding to marketing signals.
  • Prevents common automation failures through built-in state management and self-checks.
  • Provides clear guardrails for safety, compliance, and human oversight.
  • Scales marketing efforts without increasing manual workload.

Usage examples

“Set up a weekly SEO loop to monitor my site's rankings and suggest content updates.”
The agent will configure a weekly loop that pulls ranking data, identifies drops or opportunities, and stages content briefs for your review.
“I need a daily churn watch loop for my SaaS product.”
The agent will establish a daily monitoring process that checks for account risk signals and triggers alerts or outreach based on your defined thresholds.
“Can you automate my weekly ads check to look for ad fatigue?”
The agent will set up a recurring loop that analyzes ad performance metrics, identifies creative fatigue, and drafts new ad variations for your approval.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/coreyhaines31/marketing-loops/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip marketing-loops.zip -d .agents/skills

Documentation by Corey Haines

Marketing Loops

You help set up marketing loops — repeatable marketing workflows an AI agent runs on a cadence, each with a defined trigger, a bounded set of steps, a self-check, and an explicit stopping condition. A loop turns a marketing task you'd otherwise do manually (and forget) into an always-on system: the weekly SEO opportunity scan, the ad-fatigue refresh, the churn-signal watch.

This is the operational cousin of marketing-ideas. Ideas tell you what to try once. Loops tell you what to keep doing on a schedule — and wire the other marketing skills together to do it.

How to Use This Skill

Check for product marketing context first: if .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md), read it before asking questions. Use that context and only ask for what's missing.

Then:

  1. Clarify the job. What outcome should this loop protect or grow? (rankings, ad efficiency, activation, retention, revenue, referrals)

  2. Pick a loop from the catalog in references/loop-catalog.md — or adapt the closest one.

  3. Tune the cadence to how fast the underlying signal actually changes (see the cadence rule below).

  4. Confirm the human checkpoint. Decide what the loop does autonomously vs. what it stages for human approval before publishing or spending — see references/loop-guardrails.md.

  5. Schedule it (see "Scheduling a loop" below).

Building more than one loop, or a whole marketing operating system? See references/loop-orchestration.md for how loops compose and the order to adopt them (start with tracking + a weekly review; don't build them all at once).

Anatomy of a Marketing Loop

Every loop in the catalog has these nine parts. When you author or adapt one, fill all of them — a loop missing a stop condition, a self-check, or its state handling is a liability, not an asset.

PartWhat it defines
Check cadenceHow often the loop looks (weekly / daily / on-trigger). Match it to signal speed.
Acts whenThe action condition — what must be true to actually do something, vs. just check and skip. Most runs of a good loop are "checked, nothing to do."
PurposeThe one outcome this loop exists to move.
Skills usedWhich marketing skills the loop orchestrates each iteration.
Loop bodyThe ordered steps run each iteration.
Self-checkThe verification done before acting — so the loop doesn't act on noise, seasonality, or a tracking bug.
State / idempotencyWhat the loop remembers between runs: last-run marker, dedupe key, cooldown window, "already handled" set. Without this, loops double-act, re-nag the same people, or re-alert the same thing. Non-negotiable for anything scheduled — see references/loop-state.md for where state lives and the idempotency patterns.
Stop / bail-outWhen the loop skips, halts, escalates to a human, or disables itself — plus what it does on error. Every loop needs one, including heartbeat loops (their stop is "manual disable + error-halt," never "n/a").
OutputWhere results go: a file, a PR, a staged draft, a notification, a report.

The Check cadence / Acts when split matters: a churn-signal loop might check daily but only act when an account crosses a risk threshold it hasn't been contacted about inside the cooldown window. Conflating the two produces loops that either miss the window or spam.

The cadence rule

Match cadence to how fast the signal actually changes — not to how often you'd like an update.

SignalRealistic cadenceWhy
Rankings, backlinks, domain authorityWeeklyMove slowly; daily checks are noise
Ad creative fatigue, CPA driftEvery 2–3 daysMeta/Google feedback loops are days, not hours
Activation / onboarding funnelWeeklyNeeds enough signups to be significant
Churn signalsDaily or on-triggerEarly intervention window is short
Content / copy decayMonthlyTraffic erosion is gradual
Competitor changesWeeklyPricing/positioning shifts are infrequent but matter
Social listening / mentionsDailyEngagement windows close fast

Over-frequent loops are the most common failure mode: they generate busywork, burn budget, and train you to ignore the output.

When NOT to loop

Not everything should be automated on a cadence. Skip a loop — or add a mandatory human checkpoint — when:

  • Strategy or creative direction is the real work. Loops maintain and optimize; they don't set positioning, invent campaigns, or make brand calls.

  • The action publishes or spends without review. Auto-drafting an ad, email, or post is fine. Auto-publishing or auto-shifting budget needs a human checkpoint unless the user has explicitly authorized autonomous action and set guardrails (caps, allowlists).

  • The signal is too sparse to be significant. A weekly conversion-rate loop on 40 visitors/week is measuring noise.

  • It's a vanity loop. If nobody acts on the output, delete the loop. A loop that emails a dashboard nobody reads is worse than nothing.

For any loop that sends, spends, publishes, or touches personal data, apply references/loop-guardrails.md — the two-tier action model (autonomous-safe vs. gated), spend/send caps, CAN-SPAM/GDPR/FTC/ToS rules, the always-escalate list, and a required kill switch.

Scheduling a loop

These loops are agent-agnostic — the body works in any agent. The scheduling depends on your environment:

  • Claude Code — native options: /loop (self-paced, until a condition), ScheduleWakeup (dynamic pacing that reacts to state), and CronCreate (fixed cron schedule). If you have a loop-mechanics skill such as loopify installed, use it to choose between them and tune delays; otherwise the guidance below is enough.

  • Any agent + cron — wrap the loop body as a scheduled prompt/script (0 9 * * 1 for Mondays 9am, etc.).

  • Manual cadence — for high-judgment loops, "run this skill every Monday" is a perfectly good loop. The value is the repeatable body, not the automation.

Default to time-of-day cron for review-style loops (weekly review, ranking watch) and dynamic pacing for monitor-until-threshold loops (churn watch, launch-day tracking).

The Catalog

references/loop-catalog.md holds the full library — 60 marketing loops with thorough funnel coverage: SEO & Content, Paid, Earned/Social/Partnerships, Outbound, Activation, Retention, Revenue, Referral & Advocacy, and Ongoing Ops. Each is a complete, adaptable spec. Start there, pick the closest match, and tune it to the user's product, stage, and tooling.

Running a whole channel: the SEO operator

When the user wants an agent to own SEO for a site rather than run one loop, use references/seo-operator.md. It bundles the SEO loops (site health, claim drift, striking-distance push, AI-answer check, keyword gap, content decay, competitor watch, and more) into one schedule with shared memory in .agents/seo/, a first-run checklist, operating rules, a writing gate, and a one-screen weekly report.

Running outbound: the outbound operator

For an agent running day-to-day outbound (signal sweeps, staged outreach, reply triage, sending-domain health, weekly sequence retros), use references/outbound-operator.md. It sets the brief, approved claims, approval rules by tier, shared memory in .agents/outbound/, and a weekly report.

Authoring a new loop

When nothing in the catalog fits, author a new loop from references/loop-template.md — a copy-paste template with fill-in prompts, a worked before/after example, and a ship checklist. Fill all nine anatomy parts; if you can't answer the self-check, state/idempotency, and stop/bail-out concretely, the loop isn't ready to run.

Anti-patterns

  • Looping without a stop condition → runaway spend or infinite churn.

  • Same cadence for every loop → most run too often and get ignored.

  • No self-check → the loop acts on noise, seasonality, or a tracking bug.

  • No human checkpoint on spend/publish actions.

  • Building 10 loops at once → start with one, prove it earns its keep, then add the next.

Banned vocabulary

Avoid: "set it and forget it," "fully autonomous marketing," "AI does everything," "10x on autopilot," "growth hacking machine." Loops are disciplined systems with checkpoints, not magic. Describe them honestly.

  • marketing-ideas — one-off tactics and inspiration (what to try). Loops operationalize the ones worth repeating.

  • ab-testing — the experimentation loop specifically (hypothesis → test → promote winner → repeat).

  • analytics — most loops read from analytics to decide whether to act.

  • reverse-engineer-marketing — the growth-move watch loop keeps a competitor teardown current, and teardown plays name the loop that sustains each one.

  • Individual channel skills (ads, seo-audit, emails, social, churn-prevention, pricing, referrals) — the loop bodies orchestrate these.

Files

references/seo-operator.md

The SEO Operator

A recipe for handing an agent the whole SEO job for one site, run from the site's own repo on a schedule. It doesn't add new mechanics. It bundles the SEO loops from the catalog, gives them one shared memory, and sets the rules that keep an always-on agent useful instead of busy.

Use it when the user wants SEO run for them rather than advice about SEO, and the agent can work in the repo that builds the marketing site. If the site lives in a hosted builder with no repo access, run the same loops in draft mode and hand the changes to a human.

Before the first run

Settle five things with the owner and write them at the top of the operator brief (below):

SettingWhat to capture
SiteThe production URL
ConversionThe one action that counts (trial, demo request, purchase). Traffic that never reaches it isn't the goal
Competitors3–8 names, or permission to find them from the SERPs and AI answers
Ship mode"Open a PR for review" (default) or "merge when checks pass." Auto-merge needs the owner's explicit say-so; see loop-guardrails.md
Data accessWhich of Search Console, analytics, a rank or backlink tool, and an AI-visibility tool the agent can read

Then confirm the foundation: tracking works (the tracking-QA loop), and .agents/product-marketing.md exists. If it doesn't, build it with the product-marketing skill first. The operator reads product facts from there; it doesn't keep a second copy.

Shared memory

Agents start every run with no memory, so everything the operator knows lives in files. Use the loop-state convention (.agents/loops/) for run logs, plus one folder for SEO working files:

.agents/seo/
  brief.md          # the five settings above + any owner preferences
  claims.md         # claims ledger: each customer-facing fact, its source of truth, the pages that state it
  queries.csv       # query map: query, intent, page, status (live / planned / gap), position, last checked
  queue.md          # work queue, ranked by expected conversions per hour of effort
  prompts.md        # AI prompt panel by awareness stage, with each run's results
  snapshots/        # competitor sitemaps and key pages, for diffing
  reports/          # one file per weekly report
.agents/loops/seo-operator.log   # one line per run, acted or not

Two rules make the query map work. Every page owns one primary query, and every query has at most one page. Two pages chasing the same query is a defect: merge them and redirect the weaker one. A query with no page is a gap and goes in the queue.

Every fact in claims.md cites where it came from (a file in the product repo, the live pricing page). Facts from memory don't go in.

Run schedule

Every run (daily, or on each deploy)WeeklyMonthly
Site health crawlStriking-distance pushRebuild the query map (keyword-gap)
Claim driftRanking-drop watchContent decay
Ship the top item in the queueIndexing checkComparison-page review (competitors asset audit)
Append to the run logInternal linkingBacklink prospecting + directory submissions
AI-answer checkOne free-tool candidate (free-tools)
Competitor watch (sitemap diff)
Weekly report

Each cell is a catalog loop or a step defined below; run it with that loop's self-check, state, and stop rules. Skip any loop whose data isn't connected and say so in the report.

Site health crawl. Fetch the sitemap and request every URL. Flag non-200s, redirect chains, wrong canonicals, stray noindex, robots blocks, broken internal links, orphan pages, duplicate or missing titles and descriptions, and pages whose main content isn't in the server-rendered HTML. The seo-audit skill covers each check.

Indexing check. Compare the sitemap to what Search Console reports as indexed. For each unindexed URL, find the cause (thin, duplicate, orphaned, blocked, canonicalized elsewhere) and fix that, not the symptom. If indexing can't be verified, report "not verified." Never report a page as indexed without checking.

Competitor watch. Diff each competitor's sitemap against last week's snapshot to see what they published, then check which of those pages rank. Queue a response only where you can build a better page, not for every page they ship.

The first run

  1. Learn the repo. How routes and posts are created, and where titles, meta descriptions, canonicals, the sitemap, robots.txt, and structured data come from. Add pages the way the repo already does.

  2. Learn the product from the code and the live site until you can explain it better than the homepage does. Fill claims.md.

  3. Build the query map from buyers, not search volume: the problems they search, category terms, competitor names, "alternative" and "vs" queries, integrations, use cases, pre-purchase questions.

  4. Crawl the site and log every problem.

  5. Write the queue, then ship the top three fixes in the agreed ship mode, so the first run ends with real changes instead of a plan.

Operating rules

  • The output is changes to the site. A memo recommending a fix isn't progress; a PR with the fix is. Research earns its place only when it produces a change.

  • Finish before starting. Ship the change in progress before opening the next one. Half-done drafts don't rank.

  • No guessing past missing data. When a source isn't connected, note it in the report with what connecting it would make possible, then work with what exists. Don't fill gaps with estimates presented as data.

  • The product is the source of truth. When a page and the product disagree, change the page. Never change the product, its pricing, or its claims to match marketing.

  • Escalate repeat failures. If the same fix fails twice, stop, record what was tried, and raise it in the report.

  • Check before shipping. Run the repo's lint, type check, and build, then load each changed page and look at it.

  • Don't break what earns. Never delete, noindex, or redirect a page that gets traffic or has backlinks without the owner's approval.

  • Drafts only for anything outward-facing. Outreach emails, directory listings, social posts, and new accounts are drafted for the owner to send. See loop-guardrails.md.

The writing gate

Before writing any new page, read the current top results for its query and write one sentence on what the new page will have that none of them do: original data, a real example from the product, a working tool, a clearer answer. If you can't write that sentence, don't write the page. This is the same information-gain test as in content-strategy.

Then:

  • Answer the query in the first two sentences, then add detail.

  • Use what only this company has: product screenshots, real numbers, the owner's opinions. If none exist for a topic, ask for them in the report rather than writing around the gap.

  • Never invent a statistic, quote, customer, review, price, or benchmark.

  • Ship each new page with the checklist in seo-audit's rankings push reference: internal links from at least three existing pages, title, meta description, canonical, sitemap entry, structured data where it fits.

  • Draft one social post per new article, built on its single most useful point (social).

The weekly report

One screen, written to .agents/seo/reports/YYYY-MM-DD.md:

## SEO week of [date]
**Shipped:** [each change, with its URL]
**Moved:** [clicks, impressions, positions, conversions vs last week, each with its source]
**Broken:** [open problems, worst first]
**Next:** [top 3 queue items]
**Need from you:** [at most 3 asks: data access, approvals, facts or screenshots only the owner has]

If a number can't be sourced, leave it out rather than estimating it.

When not to run an operator

  • The site has almost no search demand to win (a brand-new category, a tiny niche). Spend on positioning and distribution first.

  • No one will review the PRs. An operator in PR mode with no reviewer just builds a backlog of stale branches. Use a weekly manual run instead.

  • Tracking is broken. Fix it first. Every loop above reads from it.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Corey Haines
Publisher
Corey Haines (Community)
Source
coreyhaines31/marketingskills · skills/marketing-loops · commit 96798cf
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Corey Haines or Corey Haines.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download marketing-loops.zip