541 lines
26 KiB
Markdown
541 lines
26 KiB
Markdown
# Fully Autonomous Marketing Team — Complete System Analysis
|
|
|
|
**Source:** "I Built a Fully Autonomous Marketing Team with Claude Code & Claude Skills" by Andy (AndyNoCode)
|
|
**Video:** https://www.youtube.com/watch?v=iVbsl60t0oA
|
|
**Demo Brand:** Cold Brew Coffee Co.
|
|
**Creator's Account:** proxa_official (Instagram), Dark Eve (YouTube)
|
|
|
|
---
|
|
|
|
## 1. Complete Folder/File Structure
|
|
|
|
```
|
|
Cold Brew Coffee Co/
|
|
├── .claude/ # Claude Code configuration
|
|
├── assets/ # Creative references / mood board
|
|
│ ├── coffee_can.png.jpeg # Branded cold brew can with water droplets
|
|
│ ├── coffee_glass.png.jpeg # Iced coffee in glass
|
|
│ └── morning_cafe.png.jpeg # Warm cafe lifestyle scene
|
|
├── knowledge/ # Brand brain — 3 files
|
|
│ ├── brand_identity.md # 128 lines — personality, tone, voice, emoji/hashtag strategy
|
|
│ ├── platform_guidelines.md # 142 lines — per-platform specs, formatting, caption rules
|
|
│ └── product_campaign.md # 199 lines — product details, features, campaign direction
|
|
├── node_modules/ # NPM dependencies
|
|
│ └── @tavily/ # Tavily AI SDK (v0.7.2)
|
|
├── outputs/ # All generated content
|
|
│ ├── market_research_2025/ # Research agent test output
|
|
│ │ ├── cold_brew_market_research_2025.html
|
|
│ │ └── cold_brew_market_research_2025.md
|
|
│ ├── remotion_test_video/ # Video agent test output
|
|
│ │ └── cold_brew_ad.mp4 # 15s test video, 2MB
|
|
│ ├── test_playwright_ad/ # Static ad agent test output
|
|
│ │ └── ads/
|
|
│ │ ├── coffee_can.png
|
|
│ │ ├── lifestyle_morning.png
|
|
│ │ ├── styles.css
|
|
│ │ └── instagram_ad.png # 1080x1080 final ad
|
|
│ └── test_job_payload_1_20260315/ # Full pipeline run output
|
|
│ ├── ads/
|
|
│ │ ├── ad_layout.json
|
|
│ │ ├── ad.html
|
|
│ │ ├── styles.css
|
|
│ │ └── instagram_ad.png # 1080x1080, 949.5KB
|
|
│ ├── copy/
|
|
│ │ ├── instagram_caption.txt
|
|
│ │ ├── threads_post.txt
|
|
│ │ ├── youtube_metadata.json
|
|
│ │ └── copy_output.json
|
|
│ ├── video/
|
|
│ │ ├── scene_plan.json
|
|
│ │ └── video_ad.mp4 # 20s, 600 frames, 2.15MB
|
|
│ ├── interactive_report.html # Campaign Intelligence Dashboard
|
|
│ ├── media_urls.json # Supabase public URLs
|
|
│ ├── Publish test_job_payload_1 2026-03-15.md # Publishing manifest
|
|
│ ├── research_brief.md
|
|
│ └── research_results.json
|
|
├── pipeline/
|
|
│ └── publish_now.js # Node.js publishing script
|
|
├── remotion-ad/ # Remotion video project
|
|
│ ├── public/
|
|
│ ├── src/ # Video compositions, SVG components
|
|
│ ├── .gitignore
|
|
│ ├── entry1.mjs
|
|
│ ├── package.json
|
|
│ └── package-lock.json
|
|
├── skills/ # All 5 agent skills
|
|
│ ├── ad-creative-designer/
|
|
│ │ └── SKILL.md # 191 lines (later extended to 331 lines with Steps 7-9)
|
|
│ ├── copywriter-agent/
|
|
│ │ └── SKILL.md # 261 lines
|
|
│ ├── distribution-agent/
|
|
│ │ └── SKILL.md # 352 lines
|
|
│ ├── marketing-research-agent/
|
|
│ │ └── SKILL.md # 146 lines
|
|
│ └── video-ad-specialist/
|
|
│ └── SKILL.md # 167 lines
|
|
├── .env # Real API keys (gitignored)
|
|
├── .env.example # Template showing required keys
|
|
├── .gitignore # Excludes .env and node_modules/
|
|
├── CLAUDE.md # Project source of truth for Claude Code
|
|
├── package.json # 18 lines, NPM project config
|
|
├── package-lock.json
|
|
├── render_ad_test.js # 36 lines, Remotion render test script
|
|
├── tavily_results.json # Cached Tavily research results
|
|
├── tavily-search.js # Tavily search script
|
|
└── Ultimate Claude Skills & Plugins Prompt.md # 601 lines — skill creation framework
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Every Agent and What It Does
|
|
|
|
### Agent 1: Marketing Research Agent
|
|
**Skill file:** `skills/marketing-research-agent/SKILL.md` (146 lines)
|
|
**Pipeline position:** First stage — feeds all downstream agents
|
|
**Trigger phrases:** "research a market", "generate campaign insights", "find ad hooks", "start the pipeline"
|
|
|
|
**What it does:**
|
|
1. Collects niche/topic, optional audience, and campaign goal
|
|
2. Runs **5 targeted Tavily queries** covering: trends, competitors, pain points, ad hooks, viral content
|
|
3. Synthesizes findings across 5 categories
|
|
4. Outputs machine-readable JSON with: `content_topics`, `marketing_angles`, `keywords`, `video_concepts`, `ad_hooks`
|
|
5. Provides plain-language handoff summary pointing to next agent
|
|
|
|
**Key design:** The `video_concepts` objects map directly to the Video Ad Specialist's input format. Output is structured data, not just text — downstream agents consume it programmatically.
|
|
|
|
**Output files:**
|
|
- `research_results.json` — structured JSON for other agents
|
|
- `research_brief.md` — human-readable markdown report
|
|
- `interactive_report.html` — Campaign Intelligence Dashboard with charts, competitor analysis, keyword lists
|
|
|
|
### Agent 2: Video Ad Specialist
|
|
**Skill file:** `skills/video-ad-specialist/SKILL.md` (167 lines)
|
|
**Pipeline position:** Third stage (after research)
|
|
**Category:** `creative-production` (v1.0.0)
|
|
**Trigger phrases:** "create a video ad", "generate ad scenes", "build a video campaign", "make a Remotion video"
|
|
|
|
**What it does:**
|
|
1. Gathers inputs (product, goal, platform, length)
|
|
2. **Reads knowledge files first** (CRITICAL rule) — brand_identity.md, product_campaign.md, platform_guidelines.md
|
|
3. Generates creative brief with ad strategy (types: `product_showcase`, `problem_solution`, `testimonial`, `limited_offer`, `lifestyle`, `meme_style`)
|
|
4. Creates scene-by-scene breakdown with platform-specific pacing
|
|
5. Outputs scene JSON in Remotion-ready structure
|
|
6. Wraps around the **Remotion Best Practices** official skill — this skill handles the brand, Remotion handles the craft
|
|
|
|
**Platform-specific pacing:**
|
|
- Instagram Reels: Hook ~2s, Product ~5s, Benefit ~3s, CTA ~2s = 10-12s total
|
|
- YouTube Shorts: Similar with slightly longer holds
|
|
|
|
**Audit checklist enforced:**
|
|
- Hook starts with motion at frame 0 (not static)
|
|
- Hook copy ≤6 words
|
|
- CTA scene exists, 2-3s minimum
|
|
- Logo + CTA visible in final scene
|
|
- No scene holds static >1.5s (except CTA)
|
|
- Ratio variants via props, not hardcoded px
|
|
- Text overlay: 5 words max
|
|
|
|
**Output files:**
|
|
- `scene_plan.json` — scene structure for Remotion
|
|
- `video_ad.mp4` — auto-rendered (no manual Remotion Studio step)
|
|
|
|
### Agent 3: Ad Creative Designer
|
|
**Skill file:** `skills/ad-creative-designer/SKILL.md` (191→331 lines after extension)
|
|
**Pipeline position:** Second stage (after research)
|
|
**Trigger phrases:** "create an ad", "design a social ad", "generate ad layout", "make an image creative", "build a static ad"
|
|
|
|
**What it does (9-step workflow):**
|
|
1. **Gather Inputs** — product, campaign goal, platform, image assets, layout type
|
|
2. **Select Ad Layout Type** — three types:
|
|
- **Product Focus:** headline top, product image center, CTA bottom
|
|
- **Split Layout:** image left, copy right (or reversed)
|
|
- **Lifestyle:** full-bleed background, text overlay
|
|
3. Steps 3-6: Generate design JSON with layout, typography, spacing, colors
|
|
4. **Step 7 — HTML Rendering:** Layout-specific HTML templates, CSS with typography scale (72px headline, 36px subtext, 12px CTA), 1080x1080 container, pulls brand colors from brand_identity.md
|
|
5. **Step 8 — Playwright Screenshot:** Headless Chromium, `file://` path, networkidle wait, exact 1080x1080 clip
|
|
6. **Step 9 — Output Storage:** `outputs/TASKNAME_DATE/ads/`, task not complete until all 3 files exist
|
|
|
|
**Three-step workflow: Generate (NanoBanana MCP) → Design (HTML/CSS) → Capture (Playwright)**
|
|
|
|
**Copy constraints:**
|
|
- Headline: 3-4 words
|
|
- CTA: must start with action verb
|
|
- Instagram Stories safe zone: no text in top/bottom 15%
|
|
|
|
**Output files:**
|
|
- `ad_layout.json` — design spec
|
|
- `ad.html` + `styles.css` — rendered ad layout
|
|
- `instagram_ad.png` — 1080x1080 pixel-accurate screenshot
|
|
|
|
### Agent 4: Copywriter Agent
|
|
**Skill file:** `skills/copywriter-agent/SKILL.md` (261 lines)
|
|
**Pipeline position:** Fourth stage (after creative agents)
|
|
**Trigger phrases:** Related to writing captions, descriptions, platform-specific copy
|
|
|
|
**What it does:**
|
|
- Handles all marketing copy: captions, descriptions, platform-specific writing
|
|
- Knows brand voice from knowledge folder
|
|
- Knows platform formats from guidelines
|
|
- Generates separate files per platform
|
|
- YouTube metadata includes: title, description, tags (as JSON)
|
|
|
|
**Output structure:** `outputs/{task_name}_{date}/copy/`
|
|
|
|
**Output files:**
|
|
- `instagram_caption.txt` — Hook + value/vibe + CTA + hashtags
|
|
- `threads_post.txt` — Witty, conversational, 500 chars max
|
|
- `youtube_metadata.json` — title, description, tags
|
|
- `copy_output.json` — consolidated copy data
|
|
|
|
### Agent 5: Distribution Agent
|
|
**Skill file:** `skills/distribution-agent/SKILL.md` (352 lines)
|
|
**Pipeline position:** Final stage — consumes outputs from Research + Copywriter agents
|
|
|
|
**6-step workflow:**
|
|
1. **Gather inputs** — locates media files, research JSON, and copy outputs in campaign folder
|
|
2. **Upload to Supabase** — all media → `campaign-uploads` bucket with unique filenames (`{task_name}/{date}_{filename}`), saves `media_urls.json` map
|
|
3. **Assemble metadata** — pulls captions/titles/tags from copy outputs, validates against brand + platform guidelines
|
|
4. **Scheduling advisory** — recommends posting windows per platform, cross-referenced with research audience data
|
|
5. **Write Publish MD** — generates `Publish <task_name>-<date>.md` with full metadata, URLs, schedule, and checklist
|
|
6. **Execute publishing (gate-protected)** — only fires when user explicitly names the Publish MD file; Instagram uses two-step container→publish flow; YouTube uses OAuth; Threads logs manual note (no public API)
|
|
|
|
**Safety:** No posting without explicit user approval. Gate-protected publishing.
|
|
|
|
**Output files:**
|
|
- `media_urls.json` — Supabase public URLs
|
|
- `Publish <task_name> <date>.md` — publishing manifest with URLs, copy, metadata, scheduling
|
|
- Published content via `pipeline/publish_now.js`
|
|
|
|
---
|
|
|
|
## 3. All External Tools and How They Connect
|
|
|
|
### Core Development Tools
|
|
| Tool | Purpose | Details |
|
|
|------|---------|---------|
|
|
| **Claude Code** | IDE agent orchestration | v2.1.76, Sonnet 4.6 / Claude Pro |
|
|
| **Antigravity** | VS Code-based IDE | "Open Agent Manager" feature, multi-model support |
|
|
| **Claude.ai** | Planning/brainstorming | Used to draft skill descriptions before building in Claude Code |
|
|
|
|
### Content Generation Tools
|
|
| Tool | Purpose | How Connected |
|
|
|------|---------|---------------|
|
|
| **Remotion** | Programmatic video rendering | Official Claude skill (remotion-best-practices) + custom video-ad-specialist skill wrapping it. React-based. Uses `useCurrentFrame`, `interpolate`, `spring`, `<Series.Sequence>`. Font: `@remotion/google-fonts/Inter` |
|
|
| **NanoBanana MCP** | AI image generation | Called by ad-creative-designer skill to generate product/lifestyle images using brand knowledge as reference |
|
|
| **Playwright** | HTML→PNG screenshot | Node.js library, headless Chromium. Captures HTML ad layouts at exact 1080x1080 pixels with networkidle wait |
|
|
| **Tavily AI** | Web search/research API | `@tavily/core` v0.7.2. 1,000 free credits/month. Marketing-research-agent runs 5 targeted queries per execution |
|
|
|
|
### Publishing/Storage Tools
|
|
| Tool | Purpose | Configuration |
|
|
|------|---------|---------------|
|
|
| **Supabase Storage** | Media file hosting | Public bucket: `campaign-uploads`. Files must be at publicly accessible URLs for Instagram API. Service role key (not anon key) for server-side uploads |
|
|
| **YouTube Data API** | Video upload | OAuth 2.0 required for publishing (API key alone = read-only) |
|
|
| **Instagram Graph API** | Image/video posting | Two-step flow: create container → publish. Requires `instagram_business_basic` + `instagram_business_content_publish` permissions. Tokens expire every 60 days |
|
|
| **Threads API** | Text post publishing | Uses `THREADS_ACCESS_TOKEN`. No public upload API at time of video |
|
|
|
|
### Optional/Mentioned Tools
|
|
| Tool | Purpose |
|
|
|------|---------|
|
|
| **BullMQ + Redis** | Automated queuing and scheduled execution (optional extension) |
|
|
| **Rasterize.io** | Mentioned as having limitations with transparent backgrounds (workaround: CSS round-frame approach) |
|
|
| **Google Antigravity AI Chat** | Used for individual agent testing to save Claude Code tokens |
|
|
|
|
---
|
|
|
|
## 4. Environment Variables Required
|
|
|
|
```bash
|
|
# .env.example
|
|
|
|
# Tavily AI -- Web Research
|
|
TAVILY_API_KEY=tvly-YOUR_API_KEY
|
|
|
|
# YouTube Data API
|
|
YOUTUBE_API_KEY=YOUR_YOUTUBE_API_KEY # Read-only operations
|
|
YOUTUBE_CLIENT_ID=YOUR_YOUTUBE_CLIENT_ID # OAuth 2.0 (required for uploads)
|
|
YOUTUBE_CLIENT_SECRET=YOUR_YOUTUBE_CLIENT_SECRET # OAuth 2.0
|
|
YOUTUBE_REFRESH_TOKEN=YOUR_YOUTUBE_REFRESH_TOKEN # Long-lived token
|
|
|
|
# Instagram Graph API
|
|
INSTAGRAM_ACCOUNT_ID=YOUR_INSTAGRAM_PROFESSIONAL_ACCOUNT_ID # Numeric Professional Account ID
|
|
INSTAGRAM_ACCESS_TOKEN=YOUR_INSTAGRAM_USER_ACCESS_TOKEN # Expires every 60 days!
|
|
|
|
# Threads API
|
|
THREADS_ACCESS_TOKEN=YOUR_THREADS_ACCESS_TOKEN
|
|
|
|
# Supabase -- Media Storage
|
|
SUPABASE_URL=YOUR_SUPABASE_PROJECT_URL # e.g., https://xxx.supabase.co
|
|
SUPABASE_SERVICE_ROLE_KEY=YOUR_SUPABASE_SERVICE_ROLE_KEY # Server-side only! Bypasses RLS
|
|
```
|
|
|
|
---
|
|
|
|
## 5. End-to-End Workflow
|
|
|
|
### Phase 1: Setup (One-Time)
|
|
1. Create project folder with `assets/`, `knowledge/`, `skills/` structure
|
|
2. Populate `assets/` with brand images (mood board)
|
|
3. Write 3 knowledge files: `brand_identity.md`, `platform_guidelines.md`, `product_campaign.md`
|
|
4. Write `CLAUDE.md` — declares system architecture, agents, responsibilities, folder structure
|
|
5. Create the "Ultimate Claude Skills & Plugins Prompt.md" (601-line skill creation framework)
|
|
6. Install dependencies: `npm install @tavily/core`, set up Playwright, set up Remotion project
|
|
7. Configure Supabase: create `campaign-uploads` public bucket
|
|
8. Set up API credentials in `.env`
|
|
|
|
### Phase 2: Skill Creation (One-Time per Agent)
|
|
For each of the 5 agents:
|
|
1. **Plan in Claude.ai** — use Sonnet 4.6 to brainstorm skill details via interactive Q&A
|
|
2. **Draft key details** — purpose, inputs, outputs, workflow, trigger phrases
|
|
3. **Build in Claude Code** — prompt: "Help me create an agent skill. I will give you the key details. Use @'Ultimate Claude Skills & Plugins Prompt.md' to create it."
|
|
4. **Paste key details** — Claude reads the framework doc + key details, generates `SKILL.md`
|
|
5. **Test individually** — run each agent alone (optionally in Google Antigravity to save tokens)
|
|
6. **Iterate** — refine skill files based on test results
|
|
|
|
### Phase 3: Pipeline Execution (Per Campaign)
|
|
```
|
|
Single Job Payload (JSON) → Claude Code
|
|
│
|
|
▼
|
|
┌─────────────────────────┐
|
|
│ 1. RESEARCH AGENT │ ← Tavily API (5 web queries)
|
|
│ Outputs: │
|
|
│ - research_results.json (machine-readable)
|
|
│ - research_brief.md
|
|
│ - interactive_report.html (dashboard)
|
|
└──────────┬──────────────┘
|
|
│ JSON consumed by ↓
|
|
┌──────────┴──────────────┐
|
|
│ 2. AD CREATIVE DESIGNER│ ← NanoBanana MCP (image gen)
|
|
│ Outputs: │ ← Playwright (HTML→PNG)
|
|
│ - ad_layout.json │
|
|
│ - ad.html + styles.css
|
|
│ - instagram_ad.png │
|
|
└──────────┬──────────────┘
|
|
│
|
|
┌──────────┴──────────────┐
|
|
│ 3. VIDEO AD SPECIALIST │ ← Remotion (video rendering)
|
|
│ Outputs: │
|
|
│ - scene_plan.json │
|
|
│ - video_ad.mp4 │ (auto-rendered, no manual step)
|
|
└──────────┬──────────────┘
|
|
│
|
|
┌──────────┴──────────────┐
|
|
│ 4. COPYWRITER AGENT │
|
|
│ Outputs: │
|
|
│ - instagram_caption.txt
|
|
│ - threads_post.txt │
|
|
│ - youtube_metadata.json
|
|
└──────────┬──────────────┘
|
|
│
|
|
┌──────────┴──────────────┐
|
|
│ 5. DISTRIBUTION AGENT │ ← Supabase (media upload)
|
|
│ Steps: │ ← YouTube API (video publish)
|
|
│ - Upload to Supabase│ ← Instagram API (image publish)
|
|
│ - Assemble metadata │ ← Threads API (text publish)
|
|
│ - Schedule advisory │
|
|
│ - Write Publish MD │
|
|
│ - Execute (gated) │
|
|
└─────────────────────────┘
|
|
```
|
|
|
|
### Phase 4: Publishing (Human-Gated)
|
|
1. Review outputs in `outputs/<task_name>_<date>/` folder
|
|
2. Check Supabase — files visible in `campaign-uploads` bucket
|
|
3. Review `Publish <task_name> <date>.md` — contains all URLs, copy, metadata, schedule
|
|
4. Approve with explicit confirmation prompt
|
|
5. `pipeline/publish_now.js` executes API calls to YouTube, Instagram, Threads
|
|
|
|
---
|
|
|
|
## 6. Knowledge File Contents
|
|
|
|
### brand_identity.md (128 lines)
|
|
- **Brand personality:** Bold, witty, unapologetically premium
|
|
- **Core traits:** Playful & witty, Approachable & casual, Premium without pretension, Lightly humorous
|
|
- **Tone & Voice table:**
|
|
- Register: Casual — write like a human, not a press release
|
|
- Energy: Upbeat, punchy, forward-moving
|
|
- Humor: Light and occasional; never forced
|
|
- Confidence: Speak with conviction; avoid hedging
|
|
- Length: Short sentences. Short paragraphs. White space is your friend.
|
|
- **Example good copy:** "Your 5AM just got a serious upgrade."
|
|
- **Emoji usage, hashtag strategy, CTA patterns**
|
|
|
|
### platform_guidelines.md (142 lines)
|
|
- **Platform overview table:** Instagram, Threads, YouTube
|
|
- **Instagram specs:** Feed 1080x1080 (1:1), Story 1080x1920 (9:16), Reel Cover 1080x1920
|
|
- **Instagram captions:** 1-3 sentences, structure: Hook + Value/Vibe + CTA + line break + Hashtags
|
|
- **Approved hashtags:** #ColdBrewCoffee #ColdBrew #MorningGoal #BrewDifferent #CoffeeCulture
|
|
- **Threads specs:** Text only (images optional), 500 char max, witty/casual, no hard CTA required
|
|
- **YouTube specs:** Long & short video, informative/energetic/premium tone, tags in description
|
|
|
|
### product_campaign.md (199 lines)
|
|
- **Product:** Cold Brew Coffee, ready-to-drink format
|
|
- **Target audience:** Busy professionals, coffee enthusiasts, morning routine seekers
|
|
- **Brand positioning:** Premium coffee experience, accessible at home
|
|
- **Product features table** with descriptions
|
|
- **Campaign creative direction, visual asset references**
|
|
|
|
---
|
|
|
|
## 7. CLAUDE.md Contents
|
|
|
|
```markdown
|
|
# Project Overview
|
|
|
|
This project implements an "AI-powered Social Media Content Automation System"
|
|
built with Claude Code inside the Antigravity IDE.
|
|
|
|
The system uses specialized AI agents to generate, render, and distribute
|
|
marketing content for a demo brand.
|
|
|
|
The demo brand used in this project is "Cold Brew Coffee Co."
|
|
|
|
# System Architecture
|
|
|
|
The system consists of agents:
|
|
|
|
1. "Video Ad Agent"
|
|
2. "Image Ad Agent"
|
|
3. "Distribution Agent"
|
|
(Later expanded to include Research Agent and Copywriter Agent)
|
|
|
|
Each agent uses a combination of "custom skills, knowledge files, and APIs"
|
|
to perform its tasks.
|
|
|
|
# Agents and Responsibilities
|
|
|
|
## 1. Video Ad Agent
|
|
Purpose: Generate short-form video advertisements using "Remotion".
|
|
Skills Used:
|
|
- Remotion Best Practices (official skill)
|
|
- Video Ad Specialist (custom skill)
|
|
|
|
(Additional agents documented similarly)
|
|
```
|
|
|
|
Note: The CLAUDE.md starts with 3 agents declared and is updated as more are built throughout the video.
|
|
|
|
---
|
|
|
|
## 8. Ultimate Claude Skills & Plugins Prompt.md (601 lines)
|
|
|
|
This is the meta-framework used to create all 5 agent skills. Key sections:
|
|
|
|
### Skill folder structure:
|
|
```
|
|
your-skill-name/
|
|
├── SKILL.md # REQUIRED. The brain of the skill.
|
|
├── scripts/ # Optional. Executable Python/Bash code.
|
|
├── references/ # Optional. Docs Claude loads when needed.
|
|
└── assets/ # Optional. Templates, fonts, icons.
|
|
```
|
|
|
|
### Three-level progressive disclosure:
|
|
| Level | What | When Loaded | Token Cost |
|
|
|-------|------|-------------|------------|
|
|
| 1 | YAML frontmatter (name + description) | Always, every conversation | ~100 words |
|
|
| 2 | SKILL.md body (full instructions) | When Claude decides skill is relevant | ~500 lines ideal |
|
|
| 3 | Bundled files in scripts/references/assets/ | Only when explicitly needed | Unlimited |
|
|
|
|
### YAML frontmatter rules:
|
|
- No underscores in names (kebab-case only)
|
|
- Cannot start with `claude` or `anthropic` (reserved)
|
|
- Description must include WHAT + WHEN + trigger phrases
|
|
- No XML angle brackets `< >` in frontmatter (security)
|
|
- Max 1024 characters for description
|
|
- Be "pushy" — Claude tends to under-trigger
|
|
|
|
### Description formula:
|
|
`[What it does] + [When to use it] + [Specific trigger phrases] + [File types if relevant]`
|
|
|
|
### Required sections in SKILL.md body:
|
|
- When to Use This Skill
|
|
- CRITICAL: Before Generating — Read Knowledge Files
|
|
- Step-by-step workflow
|
|
- Troubleshooting
|
|
- Quality Checklist
|
|
|
|
### Cheat sheet rules:
|
|
- File MUST be named `SKILL.md` (not `SKILL.MD` or `skill.md`)
|
|
- Test three things: Triggering + Functionality + Performance
|
|
- Use progressive disclosure (short SKILL.md + references/ for deep docs)
|
|
|
|
---
|
|
|
|
## 9. Job Payload Format (Pipeline Input)
|
|
|
|
The pipeline is triggered by a JSON job payload containing:
|
|
```json
|
|
{
|
|
"task_name": "test_job_payload_1",
|
|
"task_date": "2026-03-15",
|
|
"purpose": "Full pipeline execution test",
|
|
"pipeline_execution_rules": {
|
|
"execution_order": ["research", "static_ad", "video_ad", "copywriting", "Distribution"]
|
|
},
|
|
"platform_targets": ["Instagram", "YouTube"],
|
|
"output_folder": "outputs/test_job_payload_1_20260315",
|
|
"safety_flags": {
|
|
"dry_run": true,
|
|
"simulate_uploads": true,
|
|
"publish_immediately": false
|
|
},
|
|
"completion_checklist": [
|
|
"Research outputs saved: research_results.json, research_brief.md, interactive_report.html",
|
|
"Static ad outputs saved: ad_layout.json, ad.html, styles.css, instagram_ad.png",
|
|
"Video ad outputs saved: scene_plan.json, video_ad.mp4",
|
|
"Copy outputs saved: instagram_caption.txt, threads_post.txt, youtube_metadata.json",
|
|
"Distribution outputs saved: media_urls.json, Publish MD"
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Supabase Configuration
|
|
|
|
- **Project:** "marketing system" (FREE tier)
|
|
- **Region:** Southeast Asia (Singapore), `ap-southeast-1`, `t4g.nano`
|
|
- **URL:** `https://zpthrcqdcmueifnqyvgh.supabase.co`
|
|
- **Storage bucket:** `campaign-uploads` (PUBLIC)
|
|
- No file size restriction (default 50MB)
|
|
- Any MIME type allowed
|
|
- Public = allows YouTube/Instagram APIs to reach uploaded files
|
|
- **Auth:** Service role key (not anon key) — no user session in server-side pipeline
|
|
- **File naming:** `{task_name}_{date}_{filename}_{timestamp}.{ext}`
|
|
|
|
---
|
|
|
|
## 11. Pipeline Execution Metrics
|
|
|
|
| Phase | Duration |
|
|
|-------|----------|
|
|
| Skill creation (each) | ~47s - 1m 29s |
|
|
| Pipeline planning | 2m 25s |
|
|
| Full pipeline execution | 8m 41s |
|
|
| Publishing to all platforms | 1m 4s |
|
|
|
|
---
|
|
|
|
## 12. Published Output Examples
|
|
|
|
- **YouTube:** `https://www.youtube.com/watch?v=5dQerc75vC4` — "Upgrade Your Morning with Cold Brew Coffee | Cold Brew Coffee Co."
|
|
- **Instagram:** Post ID 18895081516880196 on @proxa_official
|
|
- **Threads:** Post ID 17951637362078664
|
|
|
|
---
|
|
|
|
## 13. Partially Visible / Flagged Items
|
|
|
|
1. **Steps 3-6 of ad-creative-designer** — not fully visible in frames; appear to handle JSON layout generation, color/typography selection, and element positioning
|
|
2. **platform_guidelines.md YouTube section** — the YouTube-specific formatting rules were cut off after the Threads section
|
|
3. **CLAUDE.md full contents** — only the top ~30 lines and system architecture section were visible; the complete file likely has more agent documentation
|
|
4. **NanoBanana MCP configuration** — referenced as the image generation tool but setup/API details not shown
|
|
5. **pipeline/publish_now.js** — the actual Node.js publishing script contents were not shown, only its execution
|
|
6. **Threads API setup** — mentioned as having "no public API" in some frames but was successfully published to in the final demo (ID: 17951637362078664)
|
|
7. **24-page PDF document** — "Agent Skills Key Details and Description" was shown briefly; only pages 1-2 and 8 were readable. Contains detailed specs for all skills
|
|
8. **Google Antigravity AI Chat** — used for individual agent testing to save Claude Code tokens; appears to be an alternative AI IDE/chat tool
|
|
9. **Remotion Best Practices** — referenced as an "official" / "globally installed" Claude skill but its contents were not shown
|
|
10. **BullMQ + Redis integration** — mentioned as optional extension for automated queuing but not implemented in the demo
|