Kai Daily Ad Review logo

Kai Daily Ad Review

Community
cgallic
kai-daily-ad-review

Daily ad performance check-in across platforms. Pulls live metrics from Meta, Google, and LinkedIn via deterministic scripts, compares against benchmarks and previous period, flags overspend/underperformers/policy issues, and outputs a quick daily summary with action items. Use when "daily ad review", "how are my ads doing today", "ad check-in", "morning ad report", "daily ad summary", "check ad performance", "ad dashboard", "daily ads", or any request for a recurring or quick-glance ad performance review.

Overview

Publishercgallic
Repositorykai-cmo-harness
Skill namekai-daily-ad-review
Stars
61
Forks
8
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by cgallic on GitHub. Read the source before you install it.

Installation

Install the Kai Daily Ad Review AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/cgallic/kai-cmo-harness/tree/main/harness/skills-v2/kai-daily-ad-review
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/cgallic/kai-cmo-harness.git /tmp/kai-cmo-harness
mkdir -p .claude/skills
cp -r /tmp/kai-cmo-harness/harness/skills-v2/kai-daily-ad-review .claude/skills/kai-daily-ad-review
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Kai Daily Ad Review in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Kai Daily Ad Review on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Kai Daily Ad Review is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Kai root note: knowledge/, harness/, and scripts/ paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains a knowledge/ folder (the Kai plugin root, ~/.claude/kai, or the kai-cmo-harness repo). MARKETING.md, memory/, and any output files live in the current project. If a referenced scripts/ command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.

Objective

A scannable daily pulse on live ad performance: today's numbers against the 7-day trend, every problem flagged with its severity, and a short list of specific actions naming the campaign or ad they apply to. Every figure traceable to the morning's pull.

This is not /kai-ad-campaign, which builds and evaluates campaigns end to end. This is the fast check that decides whether a deeper audit is needed today.

Done when

Work type audit-report (also_covers: weekly-audit, monthly-audit — the daily-cadence member of the same family) — floor E3/C4/O1 (harness/eco-floors.yaml).

  • E3 — the review at workspace/ads/daily-reviews/[YYYY-MM-DD]-daily-review.md is the version a named human read and approved before any action is taken from it.
  • C4 — every number in the review resolves to today's pull artifact under workspace/ads/pulls/YYYY-MM-DD/. No metric appears that is not in the JSON. Platforms without credentials are reported as not pulled, never estimated. banned_word_check passes.
  • O1 — each action item names the metric it should move, that metric's current value from the pull, a threshold, and the date it gets re-read.

Constraints

Pull before analyzing. python scripts/ads/pull_all.py auto-detects which platforms have credentials and writes meta.json, google.json, linkedin.json, and summary.json to workspace/ads/pulls/YYYY-MM-DD/. Scope to one platform with --platforms meta. When a platform is skipped, the script logs which env vars are missing — report that, do not fill the gap. At minimum Meta should be configured (META_ACCESS_TOKEN, META_AD_ACCOUNT_ID numeric without the act_ prefix).

Never write a metric from memory, from yesterday's review, or from an estimate. If it is not in today's JSON, it is not in the review.

Mutations require approval. scripts/ads/meta.py, scripts/ads/google.py, and scripts/ads/linkedin.py expose pause, activate, budget, add-negative, and creation commands. They are dry-run by default and need --execute to apply. Live ad-account mutation without recorded human approval is never SHIPPED, whatever the evidence shows — this skill recommends actions and does not take them. Acting on a recommendation crosses into paid-ad-campaign (E5/C4/O4, spend_authority: true).

The benchmark table below is a default, not this account's benchmark. Adjust to the vertical from MARKETING.md where it exists, and label any benchmark that has no sourced vertical figure as a default rather than a target.

Escalation on recurrence. When the same flag appears 3+ days running, stop re-reporting it and recommend /kai-ad-campaign in evaluation mode for a deeper audit.

Cross-reference PostHog when connected using harness/references/posthog-marketing-queries.md — today's ad traffic with UTM breakdown (query #2), conversion events with campaign attribution (query #8), and bounce on pages receiving ad traffic. This connects spend to on-site behavior; when PostHog is not connected, say so.

Compare against history. Diff today's pull against yesterday's under workspace/ads/pulls/ for precise trends, and against prior files in workspace/ads/daily-reviews/ for week-over-week spend, recurring flags, and whether yesterday's action items were addressed.

Context

NeedLoad
Unified pull across configured platformsscripts/ads/pull_all.py
Meta pull + mutation commandsscripts/ads/meta.py
Google pull + mutation commandsscripts/ads/google.py
LinkedIn pull + mutation commandsscripts/ads/linkedin.py
Ad traffic and conversion queriesharness/references/posthog-marketing-queries.md
Paid channel checklist for deeper reviewknowledge/checklists/paid-acquisition-checklist.md
Vertical, goals, budget contextMARKETING.md (project root)

Where the signal lives in each pull:

PlatformFields that carry the diagnosis
Metaaccount_insights.last_7d (spend, impressions, reach, frequency, ctr, cpc) · campaigns[].insights_7d · adsets[].audience_type (LAL / custom / interest / advantage+ / broad) · adsets[].insights_daily for fatigue · ads[].insights_7d incl. quality_ranking (ABOVE_AVERAGE_35 / AVERAGE / BELOW_AVERAGE_35), engagement and conversion rate rankings · breakdowns.age_gender · breakdowns.platform_position (FB Feed vs IG Reels vs Stories)
Googlecampaigns[].insights_daily for CPC/CPA trend · search_terms for wasted spend · keyword_quality (flag quality score < 5) · audience_segments
LinkedIncampaigns[].insights_7d engagement rate (higher baseline than Meta/Google) · breakdowns.industry + breakdowns.job_function · campaigns[].audience_type (matched audience vs professional targeting)

Benchmarks (default grid — adjust to vertical):

MetricPoorOKGoodGreat
CTR< 0.5%0.5–1%1–2%> 2%
CPC> $5$3–5$1.50–3< $1.50
CPL> $50$30–50$15–30< $15
ROAS< 1x1–2x2–4x> 4x
Frequency> 4.03.0–4.01.5–3.01.0–1.5

Trend detection — today vs the 7-day average: spend pace > 120% of daily average is overspend · CTR < 70% of the 7-day average is creative fatigue · CPC > 130% is a competition spike or audience saturation · conversions < 50% of the daily average means a broken funnel or tracking · frequency > 3.0 means fatigue is coming · any BELOW_AVERAGE_35 diagnostic dimension is a flag.

Issue detection:

IssueTriggerSeverity
OverspendDaily spend pace > 120% of budgetHIGH
Zero impressionsActive ad with 0 impressions todayHIGH
CTR crashCTR < 50% of 7-day avgHIGH
CPC spikeCPC > 150% of 7-day avgMEDIUM
No conversionsSpend > $50 today with 0 conversionsMEDIUM
Creative fatigueCTR declining 3+ consecutive daysMEDIUM
Frequency overloadFrequency > 3.5 on any ad setMEDIUM
Quality warningAny ad with BELOW_AVERAGE quality rankingMEDIUM
Wasted search spendGoogle search term with > $20 spend, 0 conversionsMEDIUM
Budget underspend< 50% of daily budget used by middayLOW
Learning phaseAd set in learning phase > 7 daysLOW
LAL underperformLAL CPL > broad/interest CPLLOW

Audience reading (from audience_type tagging): lookalikes should show lower CPL than broad · custom retargeting audiences should show the highest CTR · note when Advantage+ beats manual targeting · flag LAL underperforming interest targeting for investigation.

Output goes to workspace/ads/daily-reviews/[YYYY-MM-DD]-daily-review.md, scannable in under a minute, carrying:

  • Snapshot — today vs 7-day average vs trend direction for spend, impressions, reach, frequency, clicks, CTR, CPC, conversions, CPL.
  • Flags — one line each, severity-prefixed, naming the campaign or ad set and the number that triggered it.
  • Audience performance — ad sets, spend, leads, CPL, and CTR per audience type.
  • Campaign breakdown — spend, clicks, CTR, CPC, conversions, CPL, status per campaign.
  • Top performers and underperformers — each underperformer with what is wrong and the specific action (pause, adjust, replace creative).
  • Quality diagnostics — only the non-ABOVE_AVERAGE entries.
  • Action items — checkbox list, each naming the campaign or ad it applies to.

This skill is built to run every morning. Recommend /schedule for a recurring trigger.

Escalate when

  • No platform is configured and the pull returns nothing — report the missing env vars; a review with no data is a failure record, not an empty report.
  • The same flag has appeared 3+ days running.
  • Spend is pacing far past budget and the fix requires a live mutation.
  • Conversions dropped to zero across platforms at once — suspect tracking, not creative, and say so.
  • The account's numbers contradict what MARKETING.md says the budget or goal is.
  • A recommended action would change budget, targeting, or creative on a live account without a recorded human approval.

Frequently asked questions

What does the Kai Daily Ad Review AI skill do?

Daily ad performance check-in across platforms. Pulls live metrics from Meta, Google, and LinkedIn via deterministic scripts, compares against benchmarks and previous period, flags overspend/underperformers/policy issues, and outputs a quick daily summary with action items. Use when "daily ad review", "how are my ads doing today", "ad check-in", "morning ad report", "daily ad summary", "check ad performance", "ad dashboard", "daily ads", or any request for a recurring or quick-glance ad performance review.

Why use Kai Daily Ad Review on TypingMind?

Because you install it once and use it with any model. Kai Daily Ad Review is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Kai Daily Ad Review in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/cgallic/kai-cmo-harness/tree/main/harness/skills-v2/kai-daily-ad-review. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Kai Daily Ad Review?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Kai Daily Ad Review?

As many as you like. As long as a model supports skills, you can use Kai Daily Ad Review with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Kai Daily Ad Review AI skill free?

It is published on GitHub by cgallic. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇