Adwave Content READ ONLY dev@local

← Documents

AI Agent Context Bootstrap

strategy/agent-context.md · strategy · 1 versions

AI Agent Context Bootstrap

START HERE. This is the single entry point for AI agents working on Adwave content. Point to this file when starting a new context.

---

Documentation Hierarchy

Understanding Auto-Applied vs Reference Docs

┌─────────────────────────────────────────────────────────────────┐
│  LAYER 1: AUTO-APPLIED RULES (.cursor/rules/*.mdc)              │
│  ────────────────────────────────────────────────────────────── │
│  These are AUTOMATICALLY injected into every conversation.      │
│  You don't need to read them; they're already in your context.  │
│                                                                 │
│  • adwave-product.mdc   → Adwave facts, features, pricing       │
│  • adwave-voice.mdc     → Tone, style, AI scrubbing rules       │
│  • adwave-formatting.mdc → Structure, headings, lists           │
│  • adwave-seo.mdc       → SEO requirements (⚠️ READ THIS FILE)  │
│  • adwave-quality.mdc   → Quality checklist                     │
│  • adwave-competitor-content.mdc → What NOT to mention          │
│                                                                 │
│  ⚠️ NOT AUTO-APPLIED (must read manually before generating):    │
│  • adwave-images.mdc    → Image styles, colors, prompts         │
│    (Summary included in this file under "Image Generation")     │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  LAYER 2: THIS FILE (strategy/agent-context.md) ← YOU ARE HERE  │
│  ────────────────────────────────────────────────────────────── │
│  Central hub with essential constants, workflows, quick ref.    │
│  Links to detailed guides when more depth is needed.            │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│  LAYER 3: REFERENCE GUIDES (strategy/*.md)                      │
│  ────────────────────────────────────────────────────────────── │
│  Detailed guides for specific workflows. Read when needed.      │
│                                                                 │
│  PUBLISHING:                                                    │
│  • publishing-guide.md         → Full publishing workflow       │
│  • content-playbooks.md        → Content type outlines          │
│  • prose-first-writing-guide.md → Prose vs lists guidance       │
│                                                                 │
│  STAT SNAPSHOTS:                                                │
│  • stat-snapshot-writing-guidelines.md → Section structure      │
│  • stat-snapshot-qc-checklist.md       → Pre-publish QC         │
│                                                                 │
│  SOCIAL MEDIA:                                                  │
│  • social-media-guide.md         → Content + images + workflow  │
│  • social-media-distribution-guide.md → Scheduling              │
│                                                                 │
│  REFERENCE:                                                     │
│  • industry-taxonomy.md        → Industry/subindustry values    │
│  • documentation-gaps.md       → Known issues (living doc)      │
└─────────────────────────────────────────────────────────────────┘

When to Read What

TaskRead These
Any content creationThis file (auto-applied rules already loaded)
Stat snapshot post+ stat-snapshot-writing-guidelines.md + stat-snapshot-qc-checklist.md
Industry page+ industry-taxonomy.md + briefs/_TEMPLATE-industry-page.md
Other blog posts+ content-playbooks.md
Publishing to Contentful+ publishing-guide.md
⚠️ Generating imagesImage section in this file OR .cursor/rules/adwave-images.mdc
Social media content+ social-media-guide.md
Social scheduling+ social-media-distribution-guide.md

---

⛔ CRITICAL: All Facts and Statistics MUST Be Sourced

NEVER cite facts, statistics, or data that cannot be verified with a source. Spreading false or unverified information damages credibility.

The Golden Rule

If you cannot link to a source, do not present it as a fact.

What Requires a Source (MANDATORY)

ALL of the following MUST have linked citations:

What Does NOT Require a Source

These are acceptable without citation:

How to Handle Uncertain Data

If you find a statistic but cannot verify the source:

  1. DO NOT USE IT
  2. Search for an alternative statistic with a verifiable source
  3. If no sourced alternative exists, describe the concept without specific numbers

If you want to present analysis or estimates:

Source Quality Requirements

Acceptable sources:

Unacceptable sources:

Pre-Publish Data Audit

Before publishing ANY content:

  1. Review every specific number, percentage, or statistic
  2. Verify each has a linked source in the text
  3. If any data point lacks a source, either add one or remove the claim
  4. Check the Supporting Data section: every bullet must have a source link

Examples

❌ WRONG (unsourced):

CTV captures 38% of total TV ad spend, representing $33B of the $88B market.

✅ CORRECT (sourced):

U.S. CTV ad spending reached $33.35 billion in 2025, according to [eMarketer](https://www.emarketer.com/).

❌ WRONG (unsourced breakdown):

By category:
- DTC brands: 55% CTV
- Retail: 42% CTV
- Auto: 38% CTV

✅ CORRECT (honest about limitations):

CTV adoption varies by category. Digital-native brands tend to allocate more heavily to CTV due to their data-driven mindsets, while categories with stricter regulatory requirements may adopt more slowly.

---

⛔ CRITICAL: Mandatory Sitemap Verification for ALL Links

BEFORE using ANY internal link in ANY content, you MUST verify it exists in the current sitemap.

# REQUIRED: Fetch sitemap BEFORE writing ANY content
firecrawl_map(url: "https://adwave.com")

Rules:

  1. NEVER assume a link is valid based on pattern or memory
  2. NEVER use a link that isn't in the sitemap you just fetched
  3. ALWAYS verify EVERY /industries/ and /resources/ link against the sitemap
  4. Check for exact matches including full path structure (e.g., /industries/home-services/hvac/tv-advertising-hvac-companies NOT /industries/home-services/hvac/tv-advertising-hvac)

Common broken link patterns to watch for:

If you're not 100% certain a link exists, DO NOT USE IT. Fetch the sitemap and verify.

---

What Is This Project?

Adwave is an AI-powered platform that lets small businesses create and run TV commercials on streaming platforms (CTV) starting at just $50.

This repository contains the content strategy, briefs, and drafts for Adwave's blog. The goal is to create content that:

  1. Captures search traffic for CTV/TV advertising topics
  2. Educates SMBs about TV advertising opportunities
  3. Positions Adwave as the accessible solution

---

Essential Constants

CONTENTFUL_SPACE_ID: fia320z3blxi
CONTENTFUL_ENVIRONMENT_ID: master
CONTENT_TYPE_FOR_POSTS: resource
DEFAULT_LOCALE: en-US

---

Writing Style Guidelines

Adwave content should read like advice from a knowledgeable friend. Use a natural mix of prose and lists based on what serves the content best.

General Approach

When Lists Work Well

When Prose Works Better

Full guide: strategy/prose-first-writing-guide.md

---

Content Types & Workflows

Content Types & Where to Find Briefs

TypeWord CountScheduleBriefs
Stat Snapshot Pages3,000-4,000stat-snapshot-calendar.mdstat-snapshot-writing-guidelines.md
Industry Pages2,000-3,000editorial-calendar.mdSee "Industry Vertical Briefs" section
Platform/Technical Guides3,000-4,000editorial-calendar.mdSee "Platform & Technical Briefs" section
Political Content2,000-3,500editorial-calendar.mdSee "Political Advertising Briefs" section
SMB Guides & Comparisons3,000-4,000editorial-calendar.mdcontent-playbooks.md
📅 All scheduling and briefs are now consolidated in editorial-calendar.md

Regular Blog Post Length by Type

Content TypeTarget WordsMin/Max
Platform Guides3,000-3,5003,000-4,000
Case Studies1,200-1,5001,000-1,800
Comparison Posts3,000-3,5003,000-4,000
Vertical Playbooks2,000-2,5001,800-3,000
Statistics Roundups1,500-2,0001,200-2,500
How-To Guides3,000-3,5003,000-4,000
Thought Leadership1,200-1,8001,000-2,200

---

⚠️ CRITICAL: Slug Verification (ALL Content Types)

ALWAYS verify the slug is available BEFORE creating any Contentful entry.

Duplicate slugs will cause publishing failures or overwrite existing content. This step is NON-NEGOTIABLE for every piece of content.

# Run this BEFORE creating any entry
npm run check-slug -- "your-slug-here"

If the slug is taken:

  1. Check if it's the same content being updated (get entry ID from calendar)
  2. If it's different content, choose a new slug
  3. Never proceed with a duplicate slug

---

Workflow 1: Stat Snapshot Pages

Stat snapshot pages are data-driven "quick reference" pages answering specific questions (e.g., "What is YouTube's share of TV viewing?"). They're designed for featured snippets and authority building.

Key Requirements

Stat Snapshot Workflow

  1. Check calendar: calendar/stat-snapshot-calendar.md
  2. Verify slug is available: npm run check-slug -- "slug-from-calendar"
  3. Read guidelines: strategy/stat-snapshot-writing-guidelines.md
  4. Deep research: Multiple sources, 5+ citations required
  5. Write draft: All 11 sections, prose-first, 3,000+ words
  6. Verify word count: wc -w drafts/stat-snapshots/[file].md (need 3,200+ in markdown)
  7. AI scrub: Remove emdashes, AI telltale words
  8. Generate images: 4 minimum using nano-banana
  9. ⛔ MANDATORY QC CHECKPOINT: Complete strategy/stat-snapshot-qc-checklist.md

- [ ] Word count ≥ 3,000 (verified via wc -w) - [ ] All 11 sections present with minimum word counts - [ ] 4+ images uploaded with asset IDs - [ ] 8+ internal links included - [ ] 5+ source citations with working links - [ ] AI content scrubbed (zero emdashes, zero flagged words) - [ ] Statistics entries created - ⛔ DO NOT PROCEED TO STEP 10 UNTIL ALL BOXES CHECKED

  1. Create Contentful entries: Statistics → StatisticGroup → Resource

- Resource entry MUST include ALL required fields: - title (with quarter marker) - slug (verified available) - headerImage (hero image asset) - resourceDate (YYYY-MM-DD from calendar) - resourceType ("Insights" for stat snapshots) - seoDescription (meta description) - bodyContent (with statisticGroup embedded first)

  1. Update tracking: Mark complete in calendar with word count and image count

Stat Snapshot Section Structure

0. Hero Image (headerImage field)
1. Statistics Boxes (embedded statisticGroup - 3 stats)
2. Opening paragraph (150-200 words)
3. ## What the data shows (500-700 words)
4. ## Breaking down the numbers (400-600 words)
5. ## Why it matters for your business (400-500 words)
6. ## How to take advantage of this trend (400-500 words)
7. ## The bigger picture (350-450 words)
8. ## What experts are saying (250-350 words)
9. ## Common questions answered (400-500 words, 5-6 FAQs)
10. ## Supporting data (200-300 words, linked bullets)
11. ## Get started with TV advertising (100-150 words, CTA)
Note: The "Common questions answered" section (FAQ) is required for ALL content types. See below.

---

Workflow 2: Industry Pages

Industry pages are conversion-focused content targeting specific business verticals (e.g., "TV Advertising for Dentists").

Key Requirements

Industry Page Workflow

  1. Check calendar: calendar/editorial-calendar.md (look for Industries category)
  2. Verify slug is available: npm run check-slug -- "slug-from-brief"
  3. Read template: briefs/_TEMPLATE-industry-page.md
  4. Check taxonomy: strategy/industry-taxonomy.md for correct industryType values
  5. Fetch sitemap: firecrawl_map(url: "https://adwave.com") for internal links
  6. Write draft: Prose-first, 2,000-3,000 words
  7. Generate images: 4 minimum using nano-banana
  8. ⛔ QC CHECKPOINT: Before publishing, verify:

- [ ] Word count ≥ 2,000 (verified via wc -w) - [ ] 4+ images uploaded with asset IDs - [ ] 4+ internal links included (verified against sitemap) - [ ] AI content scrubbed (zero emdashes, zero flagged words) - [ ] industryType and subindustryType set correctly - ⛔ DO NOT PROCEED UNTIL ALL BOXES CHECKED

  1. Publish to Contentful: Resource with resourceType: "Industries"
  2. Update tracking: Mark complete in calendar with word count and image count

Industry Page Section Structure

1. Introduction (~150-200 words)
2. ## Why TV advertising works for [industry] (prose, NOT bullets)
3. ## Real results from [industry] TV ads (narrative, NOT bullet list)
4. ## Targeting strategies for [industry]
   - H3: Geographic targeting
   - H3: Demographic targeting
   - H3: Interest-based targeting
5. ## Budget considerations for [industry]
6. ## Creating effective [industry] TV commercials
7. ## How it works for [industry] (narrative walkthrough)
8. ## Measuring success for [industry]
9. ## Common mistakes to avoid (prose explanations, NOT bullet list)
10. ## Common questions answered (250-350 words, 4-5 FAQs)
11. ## Getting started (pricing + CTA)

Valid industryType Values (19 total)

Healthcare, Home Services, Automotive, Professional Services, Food & Beverage, Retail, Beauty & Wellness, Fitness & Recreation, Education & Enrichment, Events & Entertainment, Real Estate, Pet Services, Travel & Hospitality, E-commerce, Creators & Influencers, Community & Nonprofit, Financial, Legal, Political

---

Required Section: Common Questions Answered (FAQ)

Every article must include a "Common questions answered" section. This is required for all content types, not just stat snapshots.

Why FAQs Are Required

  1. Featured snippets: FAQ format targets "People Also Ask" and featured snippet opportunities
  2. Long-tail traffic: Captures search queries phrased as questions
  3. Reader value: Addresses natural follow-up questions readers have after the main content
  4. Completeness: Signals comprehensive coverage to both readers and search engines

FAQ Format

## Common questions answered

### [Question 1]?

[2-4 sentences of prose answering the question completely. Write it as you would explain it to a colleague, not as bullet points.]

### [Question 2]?

[Direct prose answer with context and explanation.]

### [Question 3]?

[Direct prose answer.]

(Continue for 4-6 questions depending on content type)

FAQ Guidelines by Content Type

Content TypeMin QuestionsWord CountNotes
Stat Snapshots5-6400-500Technical/methodology questions
Industry Pages4-5250-350Industry-specific concerns
Platform Guides4-5250-350Platform capabilities, costs, access
How-To Guides3-4200-300Common stumbling blocks
Comparison Posts3-4200-300"When to use which" questions
Case Studies3-4150-250Applicability/transferability questions
Thought Leadership3-4200-300Future/implications questions

Writing FAQ Answers

FAQ Placement

Place the FAQ section near the end of the article, typically:

---

Workflow 3: Regular Blog Posts

Regular blog posts include guides, case studies, comparisons, and thought leadership.

Regular Post Workflow

  1. Find next article: calendar/editorial-calendar.md (look for 🔲 status)
  2. Read the brief: briefs/YYYY-MM-DD-slug.md
  3. Verify slug is available: npm run check-slug -- "slug-from-brief" ⚠️ REQUIRED
  4. Check playbook: strategy/content-playbooks.md for content type outline
  5. Fetch sitemap: firecrawl_map(url: "https://adwave.com") for internal links
  6. Write draft: Prose-first, follow brief outline
  7. Generate images: 4+ minimum using nano-banana
  8. ⛔ QC CHECKPOINT: Before publishing, verify:

- [ ] Word count meets target for content type (see table above) - [ ] 4+ images uploaded with asset IDs - [ ] 4+ internal links included (verified against sitemap) - [ ] AI content scrubbed (zero emdashes, zero flagged words) - [ ] FAQ section included (see requirements below) - ⛔ DO NOT PROCEED UNTIL ALL BOXES CHECKED

  1. Publish to Contentful: See publishing workflow below
  2. Update tracking: Mark complete in calendar with word count and image count

---

Internal Linking Requirements

Content TypeMinimum LinksPriority Sources
Stat Snapshots8-12/resources/ pages, industry pages
Industry Pages4+/industries/, /how-it-works/, /resources/
Regular Posts4+/resources/ pages (prioritize variety)

⛔ MANDATORY: Verify EVERY Link Against Sitemap

You MUST fetch and verify links before writing ANY content:

# Step 1: ALWAYS fetch sitemap first
firecrawl_map(url: "https://adwave.com")

# Step 2: Search results for EXACT URL you want to use
# Step 3: If not found, DO NOT USE THAT LINK

Common mistakes that cause broken links:

NEVER guess or assume a link exists. ALWAYS verify against the sitemap you just fetched.

Link Selection Priority

  1. First: /resources/ pages matching article topic
  2. Second: /industries/ pages when discussing verticals (verify full path!)
  3. Third: Core pages (/how-it-works/, /pricing/, /faq/) only when directly relevant

---

⛔ CRITICAL: Image Generation Requirements

ALL content types require minimum 4 images (1 hero + 3 body).

⛔ MANDATORY: Read Image Guidelines BEFORE Generating

The .cursor/rules/adwave-images.mdc file is NOT auto-applied. You MUST read it before generating any images, or read the summary below.

Brand Color Palette (MANDATORY - NO EXCEPTIONS)

ColorHex CodeUsage
Navy#222239Primary text, main doodles, outlines, solid tape
Teal#57b4adAccents, highlights, secondary elements, patterned tape
Lime#d7df27Bright accents, emphasis, celebratory elements (stars, sparkles)
Cream/Off-White-Background color only

⛔ FORBIDDEN COLORS: coral, orange, red, purple, pink, golden yellow, or any color not listed above.

In ALL prompts, ALWAYS specify colors with hex codes:

"navy (#222239)", "teal (#57b4ad)", "lime (#d7df27)"

Hero Image Style: "Digital Scrapbook" (MANDATORY)

Every hero image MUST include ALL of these elements:

  1. Textured Background: Off-white cardstock or recycled paper texture (NEVER flat white)
  2. "Taped Down" Elements: Everything attached with washi tape strips in solid navy or patterned teal
  3. Hand-Drawn Overlays: Imperfect marker-style arrows, circles, stars, underlines
  4. Subtle Drop Shadows: Elements look like paper resting on the background
  5. Brand Colors Only: Navy, teal, lime, cream - nothing else

Hero Image Recipes by Content Type

TypeCentral ElementsHand-Drawn Doodles
Platform GuidesSchematic wireframes, device cutoutsTechnical annotations, gears, data flow arrows
Case StudiesPhoto of smiling person (taped)Celebratory circles around stats, stars, confetti
Comparison PostsVertical split with tape, two iconsVS in center, checkmarks vs X marks
Vertical PlaybooksAspirational industry photoIndustry-specific tools (keys, stethoscopes, etc.)
Statistics/DataChart cutouts, bold numbers (NO people)Magnifying glasses, precise arrows
How-To Guides3-4 sticky notes/index cards in a rowCurved arrows showing progression
Thought LeadershipMetaphorical objects (lightbulbs, networks)Swirling lines, sparkles, question marks

Body Image Style: "Editorial Clean" for Charts

Charts and data visualizations use a different style:

Image Generation Prompt Template

[DESCRIBE SCENE]. Digital scrapbook style on textured off-white cardstock 
background. Elements taped down with washi tape in navy (#222239) and 
teal (#57b4ad) patterns. Hand-drawn marker overlays including [arrows/
circles/stars]. Colors ONLY: navy (#222239), teal (#57b4ad), lime (#d7df27), 
cream background. Subtle drop shadows. 16:9 format. No text except [specific 
text if needed].

⛔ Image QC Checklist (MANDATORY Before Upload)

Run this checklist for EVERY generated image:

⛔ If ANY checkbox fails, regenerate the image. DO NOT PROCEED with wrong colors.

Image Placeholder Format (REQUIRED)

Standard markdown images !alt DO NOT WORK. Use this format:

<!-- IMAGE: unique-id -->
**Placement:** [Where in article]
**Type:** [Chart | Diagram | Concept]
**Description:** [Alt text for accessibility]
**Filename:** exact-filename.png
<!-- /IMAGE -->

Image Generation Workflow

  1. Generate images using nano-banana MCP (generate_image, continue_editing)
  2. Copy to article folder: drafts/images/YYYY-MM-DD-slug/
  3. Upload all images: npm run upload-images -- "drafts/images/SLUG/" "Title"
  4. Add placeholders to draft with exact filenames from asset-ids.json

---

Table Handling

⚠️ Markdown tables CANNOT be used directly in Contentful RichText.

Tables must be created as separate table entries in Contentful, then embedded.

Table Workflow

  1. Create table entry in Contentful (Content Type: table)
  2. Publish the table entry
  3. In markdown, use placeholder format:
<!-- TABLE: table-id -->
**Title:** Table Name
**Entry ID:** CONTENTFUL_TABLE_ENTRY_ID
<!-- /TABLE -->
  1. The markdown-to-richtext script embeds the table automatically

---

Publishing Workflow (Quick Reference)

# 1. ⚠️ VERIFY SLUG IS AVAILABLE (MANDATORY - DO NOT SKIP)
npm run check-slug -- "your-slug-here"
# If slug is taken, STOP and resolve before proceeding

# 2. Upload images
npm run upload-images -- "drafts/images/SLUG/" "Article Title"

# 3. Convert to RichText (strip npm log prefix)
npm run markdown-to-richtext -- "drafts/SLUG.md" "drafts/images/SLUG/asset-ids.json" > /tmp/richtext-raw.json
tail -n +4 /tmp/richtext-raw.json > /tmp/richtext.json

# 4. Create tables (if any) via Contentful MCP
#    For each <!-- TABLE: id --> block:
#      a. create_entry contentTypeId="table", fields={title, tableMarkdown}, then publish_entry
#      b. sed 's/__TABLE_PLACEHOLDER_<id>__/<ENTRY_ID>/g' /tmp/richtext.json > /tmp/final-richtext.json
#    Verify:  grep -c TABLE_PLACEHOLDER /tmp/final-richtext.json   # must be 0
#    If no tables: cp /tmp/richtext.json /tmp/final-richtext.json

# 5. Create entry via Contentful MCP (create_entry)
# 6. Update body (npm run update-entry-body -- "ENTRY_ID" /tmp/final-richtext.json)
#    NOTE: update-entry-body auto-publishes — no separate publish_entry needed.

Full details: strategy/publishing-guide.md

---

AI Content Scrubbing (MANDATORY)

Every draft must be scrubbed before publishing.

Emdash Removal (CRITICAL)

NEVER use emdashes (—). Replace with commas, parentheses, colons, or periods.

Words to Remove/Replace

AI TelltaleReplace With
Delveexplore, dig into, look at
Landscapemarket, space, industry
Leverageuse, take advantage of
Robuststrong, solid
Seamlesssmooth, easy
Utilizeuse
Myriadmany, lots of
Embarkstart, begin
Comprehensive(be specific)
It's important to note(just state it)
In conclusion(conclude naturally)

Scrubbing Workflow

  1. Search for emdashes (—) and replace ALL
  2. Search for AI telltale words and replace
  3. Remove hedging phrases
  4. Read aloud for natural flow
  5. Check sentence variety

---

Contentful Field Reference

FieldTypeRequiredNotes
titleSymbolYesArticle title
subtitleSymbolNoSupporting headline
slugSymbolYesURL slug (no leading /)
shortDescriptionSymbolNoCard/preview text
headerImageAsset LinkNoHero image
resourceDateDateYesYYYY-MM-DD
resourceTypeSymbolYesCase Study, Guides, Industries, Insights, News, Using Adwave
industryTypeSymbolIndustries onlySee valid values above
subindustryTypeSymbolIndustries onlySpecific niche
bodyContentRichTextYesArticle body
seoDescriptionSymbolYesMeta description

---

Critical Rules (Quick Reference)

Never Mention These Competitors

MNTN, Vibe/Vibe.co, Creatify, tvScientific, Simpli.fi, or any other CTV ad platform

OK to Mention (Streaming Platforms)

Roku, Hulu, Amazon Fire TV, Peacock, Tubi, Pluto TV, NBC, ESPN, CBS, ABC, Fox

Adwave Accuracy

Voice/Tone

---

File Structure Reference

content-writing/
├── .cursor/rules/                    # AUTO-APPLIED rules (don't need to read)
│   ├── adwave-product.mdc           # Adwave facts & pricing
│   ├── adwave-voice.mdc             # Tone, style, AI scrubbing
│   ├── adwave-formatting.mdc        # Structure, headings, lists
│   ├── adwave-seo.mdc               # SEO requirements
│   ├── adwave-quality.mdc           # Quality checklist
│   ├── adwave-images.mdc            # Image styles (source of truth)
│   └── adwave-competitor-content.mdc # What NOT to mention
├── briefs/                           # Article briefs
│   ├── _TEMPLATE-industry-page.md    # Industry page template
│   └── YYYY-MM-DD-slug.md            # Individual briefs
├── calendar/
│   ├── editorial-calendar.md         # ⭐ MAIN calendar (schedule + all briefs)
│   └── stat-snapshot-calendar.md     # Stat snapshot schedule (separate content type)
├── keywords/                          # Keyword research (converted from xlsx)
│   ├── already-targeted.md           # ⛔ CHECK BEFORE WRITING (158 keywords)
│   ├── phase1-smb-broad.md           # Phase 1: SMB advertising keywords (1,051)
│   ├── phase3-tv-industry.md         # Phase 3: TV + industry keywords (261)
│   └── phase4-industry-no-tv.md      # Phase 4: Industry no TV (247)
├── drafts/
│   └── stat-snapshots/               # Stat snapshot drafts
├── strategy/
│   ├── agent-context.md              # THIS FILE - entry point
│   ├── publishing-guide.md           # Full publishing workflow
│   ├── content-playbooks.md          # Content type outlines
│   ├── prose-first-writing-guide.md  # Prose vs lists guidance
│   ├── stat-snapshot-writing-guidelines.md   # Stat snapshot sections
│   ├── stat-snapshot-qc-checklist.md         # ⛔ MANDATORY pre-publish QC
│   ├── social-media-guide.md         # Social content + images + workflow
│   ├── social-media-distribution-guide.md    # Social scheduling
│   ├── industry-taxonomy.md          # Industry/subindustry values
│   └── documentation-gaps.md         # Known gaps (living doc)
└── scripts/                          # Publishing & maintenance scripts
    ├── append-faq-to-entry.ts       # Add FAQ section to existing entry
    ├── check-slug.ts                # Verify slug availability
    ├── comprehensive-stats-audit.ts # Audit all stats posts
    ├── delete-entry.ts              # Delete Contentful entry
    ├── embed-images-in-entry.ts     # Add images to entry
    ├── fetch-post-content.ts        # Fetch entry content
    ├── fix-all-stats-richtext.ts    # Fix RichText for all stats posts
    ├── fix-entry-richtext.ts        # Fix RichText for single entry
    ├── fix-stats-posts.ts           # Remove/fix stats groups
    ├── markdown-to-richtext.ts      # Convert MD to Contentful RichText
    ├── update-entry-body.ts         # Update bodyContent field
    ├── update-entry-bodycontent.ts  # Update entry with RichText
    └── upload-images.ts             # Upload images to Contentful

---

MCP Tools Available

Contentful (user-contentful-*)

Nano-Banana (user-nano-banana-*)

Firecrawl (user-firecrawl-mcp-*)

---

Quick Commands

# Check what's next
grep "🔲" calendar/editorial-calendar.md

# Read a brief
cat briefs/YYYY-MM-DD-slug.md

# Check if slug is available
npm run check-slug -- "your-slug-here"

# Create image folder
mkdir -p drafts/images/YYYY-MM-DD-slug/

# Upload images
npm run upload-images -- "drafts/images/SLUG/" "Title"

# Convert markdown
npm run markdown-to-richtext -- "drafts/SLUG.md" "drafts/images/SLUG/asset-ids.json"

# Update entry body
npm run update-entry-body -- "ENTRY_ID" /tmp/final-richtext.json

# Verify word count
wc -w drafts/stat-snapshots/YYYY-MM-DD-slug.md

---

When Starting a New Context

Tell the AI:

"Read strategy/agent-context.md and follow the workflow to [specific task]"

This file contains everything needed to get started. The .cursor/rules/ files provide additional context automatically.

For specific content types, also reference:

---

Changelog

DateChange
2025-12-29Scripts cleanup: Consolidated and documented remaining scripts. Deleted 26+ one-off, debug, and redundant scripts. Updated file structure reference with remaining utility scripts.
2025-12-29Stats audit cleanup: Removed obsolete audit JSON files. Documented posts that should NOT have statisticGroups in calendars.
2025-12-19Image QC Addition: Added comprehensive image generation section with brand colors, hero recipes, Editorial Clean chart style, and mandatory QC checklist. Clarified that adwave-images.mdc is NOT auto-applied.
2025-12-19Guidelines consolidation: Added clear 3-layer documentation hierarchy, updated file structure to reflect consolidated social media guide, referenced .cursor/rules as auto-applied
2025-12-17Added mandatory QC checkpoint (step 9) to stat snapshot workflow; created stat-snapshot-qc-checklist.md for pre-publish verification
2025-12-16Major rewrite: Added content type workflows (stat-snapshots, industry pages), prose-first emphasis, updated word counts by type, added stat snapshot calendar reference, reorganized for clarity as single source of truth
2025-12-08Added mandatory image text review step to prevent typos in AI-generated images

Version history