Merge pull request #179 from coreyhaines31/development
Release: Composio integration layer + lead-magnets skill + headless CMS guides
This commit is contained in:
@@ -22,6 +22,7 @@ marketingskills/
|
||||
│ └── SKILL.md # Required skill file
|
||||
├── tools/
|
||||
│ ├── clis/ # Zero-dependency Node.js CLI tools (51 tools)
|
||||
│ ├── composio/ # Composio integration layer (quick start + toolkit mapping)
|
||||
│ ├── integrations/ # API integration guides per tool
|
||||
│ └── REGISTRY.md # Tool index with capabilities
|
||||
├── CONTRIBUTING.md
|
||||
@@ -167,7 +168,8 @@ This repository includes a tools registry for agent-compatible marketing tools.
|
||||
|
||||
- **Tool discovery**: Read `tools/REGISTRY.md` to see available tools and their capabilities
|
||||
- **Integration details**: See `tools/integrations/{tool}.md` for API endpoints, auth, and common operations
|
||||
- **MCP-enabled tools**: ga4, stripe, mailchimp, google-ads, resend, zapier, zoominfo, clay, supermetrics, coupler, outreach, crossbeam
|
||||
- **MCP-enabled tools**: ga4, stripe, mailchimp, google-ads, resend, zapier, zoominfo, clay, supermetrics, coupler, outreach, crossbeam, composio
|
||||
- **Composio** (integration layer): Adds MCP access to OAuth-heavy tools without native MCP servers (HubSpot, Salesforce, Meta Ads, LinkedIn Ads, Google Sheets, Slack, etc.). See `tools/integrations/composio.md`
|
||||
|
||||
### Registry Structure
|
||||
|
||||
@@ -189,6 +191,8 @@ Skills reference relevant tools for implementation. For example:
|
||||
- `email-sequence` skill → customer-io, mailchimp, resend guides
|
||||
- `paid-ads` skill → google-ads, meta-ads, linkedin-ads guides
|
||||
|
||||
For tools without native MCP servers (HubSpot, Salesforce, Meta Ads, LinkedIn Ads, Google Sheets, Slack, Notion), Composio provides MCP access via a single server. See `tools/integrations/composio.md` for setup and `tools/composio/marketing-tools.md` for the full toolkit mapping.
|
||||
|
||||
## Checking for Updates
|
||||
|
||||
When using any skill from this repository:
|
||||
|
||||
@@ -348,6 +348,12 @@ Visual or structured representation of how content interconnects.
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- **[Headless CMS Guide](references/headless-cms.md)**: CMS selection, content modeling for marketing, editorial workflows, platform comparison (Sanity, Contentful, Strapi)
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **copywriting**: For writing individual content pieces
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
# Headless CMS Guide
|
||||
|
||||
Reference for choosing, modeling, and implementing a headless CMS for marketing content.
|
||||
|
||||
## When to Use This Reference
|
||||
|
||||
Use this when selecting a CMS for a new project, designing content models for marketing sites, setting up editorial workflows, or connecting CMS content to programmatic pages.
|
||||
|
||||
---
|
||||
|
||||
## Headless vs Traditional CMS
|
||||
|
||||
A headless CMS separates content management from presentation. Content is stored in a structured backend and delivered via API to any frontend.
|
||||
|
||||
### When Headless Makes Sense
|
||||
|
||||
- Multiple frontends consume the same content (web, mobile, email)
|
||||
- Developers want full control over the frontend stack
|
||||
- Content needs to be reused across channels
|
||||
- You're building with a modern framework (Next.js, Remix, Astro)
|
||||
- Marketing needs structured, reusable content blocks
|
||||
|
||||
### When Traditional Works Better
|
||||
|
||||
- Small team with no dedicated developers
|
||||
- Simple blog or brochure site
|
||||
- WYSIWYG editing is a hard requirement
|
||||
- Budget is tight and WordPress/Webflow does the job
|
||||
|
||||
### Decision Checklist
|
||||
|
||||
| Factor | Headless | Traditional |
|
||||
|--------|----------|-------------|
|
||||
| Multi-channel delivery | Yes | Limited |
|
||||
| Developer control | Full | Constrained |
|
||||
| Non-technical editing | Requires setup | Built-in |
|
||||
| Time to launch | Longer | Faster |
|
||||
| Content reuse | Native | Manual |
|
||||
| Hosting flexibility | Any frontend | Platform-dependent |
|
||||
|
||||
---
|
||||
|
||||
## Content Modeling for Marketing
|
||||
|
||||
### Core Principles
|
||||
|
||||
1. **Think in types, not pages.** A "Landing Page" is a content type with fields — not an HTML file. This lets you reuse components across pages.
|
||||
2. **Separate content from presentation.** Store the headline text, not the styled headline. Presentation belongs in the frontend.
|
||||
3. **Design for reuse.** If testimonials appear on 5 pages, create a Testimonial type and reference it — don't duplicate.
|
||||
4. **Keep models flat.** Deeply nested structures are hard to query and maintain. Prefer references over nesting.
|
||||
|
||||
### Common Marketing Content Types
|
||||
|
||||
| Type | Key Fields | Notes |
|
||||
|------|-----------|-------|
|
||||
| **Landing Page** | title, slug, hero, sections[], seo | Modular sections for flexibility |
|
||||
| **Blog Post** | title, slug, body, author, category, tags, publishedAt, seo | Rich text or Portable Text body |
|
||||
| **Case Study** | title, customer, challenge, solution, results, metrics[], logo | Link to related products/features |
|
||||
| **Testimonial** | quote, author, role, company, avatar, rating | Reference from landing pages |
|
||||
| **FAQ** | question, answer, category | Group by category for programmatic pages |
|
||||
| **Author** | name, bio, avatar, social links | Reference from blog posts |
|
||||
| **CTA Block** | heading, body, buttonText, buttonUrl, variant | Reusable across pages |
|
||||
|
||||
### SEO Fields Checklist
|
||||
|
||||
Every page-level content type needs:
|
||||
|
||||
- `metaTitle` — 50-60 characters
|
||||
- `metaDescription` — 150-160 characters
|
||||
- `ogImage` — 1200x630px social preview
|
||||
- `slug` — URL path segment
|
||||
- `canonicalUrl` — optional override
|
||||
- `noIndex` — boolean for excluding from search
|
||||
- `structuredData` — optional JSON-LD override
|
||||
|
||||
---
|
||||
|
||||
## Editorial Workflows
|
||||
|
||||
### Draft → Review → Publish Cycle
|
||||
|
||||
1. **Draft** — Author creates or edits content
|
||||
2. **Review** — Editor reviews for accuracy, brand voice, SEO
|
||||
3. **Approve** — Stakeholder signs off
|
||||
4. **Schedule** — Set publish date/time
|
||||
5. **Publish** — Content goes live via API
|
||||
|
||||
### Preview APIs
|
||||
|
||||
All major headless CMS platforms support draft previews:
|
||||
|
||||
- **Sanity**: Real-time preview with `useLiveQuery` or Presentation tool
|
||||
- **Contentful**: Preview API (`preview.contentful.com`) with separate access token
|
||||
- **Strapi**: Draft & Publish system with `status=draft` query parameter (v5; replaces v4's `publicationState`)
|
||||
|
||||
Set up a preview route in your frontend (e.g., `/api/preview`) that authenticates and renders draft content.
|
||||
|
||||
### Roles and Permissions
|
||||
|
||||
| Role | Can Create | Can Edit | Can Publish | Can Delete |
|
||||
|------|:----------:|:--------:|:-----------:|:----------:|
|
||||
| Author | Yes | Own | No | Own drafts |
|
||||
| Editor | Yes | All | Yes | Drafts |
|
||||
| Admin | Yes | All | Yes | All |
|
||||
|
||||
Exact permission models vary by platform. Sanity uses role-based access. Contentful has space-level roles. Strapi has granular RBAC.
|
||||
|
||||
---
|
||||
|
||||
## Platform Comparison
|
||||
|
||||
| Feature | Sanity | Contentful | Strapi |
|
||||
|---------|--------|------------|--------|
|
||||
| Hosting | Cloud (managed) | Cloud (managed) | Self-hosted or Cloud |
|
||||
| Query Language | GROQ | REST / GraphQL | REST / GraphQL |
|
||||
| Free Tier | Generous | Limited | Open source (free) |
|
||||
| Real-time Collab | Yes (built-in) | Limited | No |
|
||||
| Best For | Developer flexibility | Enterprise multi-locale | Budget / self-hosted |
|
||||
| Content Modeling | Schema-as-code | Web UI | Web UI or code |
|
||||
| Media Handling | Built-in DAM | Built-in | Plugin-based |
|
||||
|
||||
### Sanity
|
||||
|
||||
**Strengths**: GROQ query language is powerful and flexible. Schema defined in code (version-controlled). Real-time collaborative editing. Portable Text for rich content. Generous free tier.
|
||||
|
||||
**Considerations**: Steeper learning curve for non-developers. Studio customization requires React knowledge. Vendor lock-in on GROQ queries.
|
||||
|
||||
**Marketing fit**: Best when developers and marketers collaborate closely. Strong for content-heavy sites with complex models.
|
||||
|
||||
### Contentful
|
||||
|
||||
**Strengths**: Mature enterprise platform. Excellent multi-locale support. Strong ecosystem of integrations. Composable content with Studio. Well-documented APIs.
|
||||
|
||||
**Considerations**: Pricing scales with content types and locales. Two separate APIs (Delivery and Management). Rate limits can be tight on lower plans.
|
||||
|
||||
**Marketing fit**: Best for enterprises with multi-market content needs. Good when you need established vendor reliability.
|
||||
|
||||
### Strapi
|
||||
|
||||
**Strengths**: Open source, self-hosted option. Full control over data. No per-seat pricing. Customizable admin panel. Plugin ecosystem. REST by default, GraphQL via plugin.
|
||||
|
||||
**Considerations**: Self-hosting means you handle infrastructure. Smaller ecosystem than Sanity/Contentful. V5 migration can be significant from V4.
|
||||
|
||||
**Marketing fit**: Best for teams with DevOps capability who want full control and no vendor lock-in. Good for budget-conscious projects.
|
||||
|
||||
### Others Worth Knowing
|
||||
|
||||
- **Hygraph** — GraphQL-native, strong for federation and multi-source content
|
||||
- **Keystatic** — Git-based, good for developer-content hybrid workflows
|
||||
- **Payload** — TypeScript-first, self-hosted, code-configured like Sanity
|
||||
- **Builder.io** — Visual editor with headless backend, good for non-technical marketers
|
||||
- **Prismic** — Slice-based content modeling, strong Next.js integration
|
||||
|
||||
---
|
||||
|
||||
## Integration with Marketing Skills
|
||||
|
||||
### Programmatic SEO
|
||||
|
||||
Use CMS as the data source for programmatic pages. Store structured data (FAQs, comparisons, city pages) as content types and generate pages from queries. See **programmatic-seo** skill.
|
||||
|
||||
### Copywriting
|
||||
|
||||
CMS content models enforce consistent structure. Define fields that match your copy frameworks (headline, subheadline, social proof, CTA). See **copywriting** skill.
|
||||
|
||||
### Site Architecture
|
||||
|
||||
URL structure, navigation hierarchy, and internal linking all depend on how content is organized in the CMS. Plan your content model and site architecture together. See **site-architecture** skill.
|
||||
|
||||
### Email Sequences
|
||||
|
||||
Pull CMS content into email templates for consistent messaging across web and email. Case studies, testimonials, and blog posts can feed email nurture sequences. See **email-sequence** skill.
|
||||
|
||||
---
|
||||
|
||||
## Implementation Checklist
|
||||
|
||||
- [ ] Define content types based on page types and reusable blocks
|
||||
- [ ] Add SEO fields to every page-level content type
|
||||
- [ ] Set up preview/draft mode in your frontend
|
||||
- [ ] Configure roles and permissions for your team
|
||||
- [ ] Create sample content for each type before building frontend
|
||||
- [ ] Set up webhook notifications for content changes (rebuild triggers)
|
||||
- [ ] Document content guidelines for editors (field descriptions, character limits)
|
||||
- [ ] Test content delivery performance (CDN, caching, ISR)
|
||||
- [ ] Plan migration strategy if moving from existing CMS
|
||||
|
||||
---
|
||||
|
||||
## Relevant Integration Guides
|
||||
|
||||
- [Sanity](../../../tools/integrations/sanity.md) — GROQ queries, mutations, CLI
|
||||
- [Contentful](../../../tools/integrations/contentful.md) — Delivery/Management APIs, publishing
|
||||
- [Strapi](../../../tools/integrations/strapi.md) — REST CRUD, filters, document API
|
||||
@@ -301,6 +301,7 @@ For implementation, see the [tools registry](../../tools/REGISTRY.md). Key email
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **lead-magnets**: For planning lead magnets that feed into nurture sequences
|
||||
- **churn-prevention**: For cancel flows, save offers, and dunning strategy (email supports this)
|
||||
- **onboarding-cro**: For in-app onboarding (email supports this)
|
||||
- **copywriting**: For landing pages emails link to
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: free-tool-strategy
|
||||
description: When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or brand awareness. Also use when the user mentions "engineering as marketing," "free tool," "marketing tool," "calculator," "generator," "interactive tool," "lead gen tool," "build a tool for leads," "free resource," "ROI calculator," "grader tool," "audit tool," "should I build a free tool," or "tools for lead gen." Use this whenever someone wants to build something useful and give it away to attract leads or earn links. For content-based lead generation, see content-strategy.
|
||||
description: When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or brand awareness. Also use when the user mentions "engineering as marketing," "free tool," "marketing tool," "calculator," "generator," "interactive tool," "lead gen tool," "build a tool for leads," "free resource," "ROI calculator," "grader tool," "audit tool," "should I build a free tool," or "tools for lead gen." Use this whenever someone wants to build something useful and give it away to attract leads or earn links. For downloadable content lead magnets (ebooks, checklists, templates), see lead-magnets.
|
||||
metadata:
|
||||
version: 1.1.0
|
||||
---
|
||||
@@ -172,6 +172,7 @@ Rate each factor 1-5:
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **lead-magnets**: For downloadable content lead magnets (ebooks, checklists, templates)
|
||||
- **page-cro**: For optimizing the tool's landing page
|
||||
- **seo-audit**: For SEO-optimizing the tool
|
||||
- **analytics-tracking**: For measuring tool usage
|
||||
|
||||
@@ -0,0 +1,310 @@
|
||||
---
|
||||
name: lead-magnets
|
||||
description: When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation. Also use when the user mentions "lead magnet," "gated content," "content upgrade," "downloadable," "ebook," "cheat sheet," "checklist," "template download," "opt-in," "freebie," "PDF download," "resource library," "content offer," "email capture content," "Notion template," "spreadsheet template," or "what should I give away for emails." Use this for planning what to create and how to distribute it. For interactive tools as lead magnets, see free-tool-strategy. For writing the actual content, see copywriting. For the email sequence after capture, see email-sequence.
|
||||
metadata:
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# Lead Magnets
|
||||
|
||||
You are an expert in lead magnet strategy. Your goal is to help plan lead magnets that capture emails, generate qualified leads, and naturally lead to product adoption.
|
||||
|
||||
## Before Planning
|
||||
|
||||
**Check for product marketing context first:**
|
||||
If `.agents/product-marketing-context.md` exists (or `.claude/product-marketing-context.md` in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
||||
|
||||
Gather this context (ask if not provided):
|
||||
|
||||
### 1. Business Context
|
||||
- What does the company do?
|
||||
- Who is the ideal customer?
|
||||
- What problems does your product solve?
|
||||
|
||||
### 2. Current Lead Generation
|
||||
- How do you currently capture leads?
|
||||
- What lead magnets or offers do you have?
|
||||
- What's your current conversion rate on email capture?
|
||||
|
||||
### 3. Content Assets
|
||||
- What existing content could be repurposed? (blog posts, guides, data)
|
||||
- What expertise can you package?
|
||||
- What templates or tools do you use internally?
|
||||
|
||||
### 4. Goals
|
||||
- Primary goal: email list growth, lead quality, product education?
|
||||
- Target audience stage: awareness, consideration, or decision?
|
||||
- Timeline and resource constraints?
|
||||
|
||||
---
|
||||
|
||||
## Lead Magnet Principles
|
||||
|
||||
### 1. Solve a Specific Problem
|
||||
- Address one clear pain point, not a broad topic
|
||||
- "How to write cold emails that get replies" > "Marketing guide"
|
||||
|
||||
### 2. Match the Buyer Stage
|
||||
- Awareness leads need education
|
||||
- Consideration leads need comparison and evaluation
|
||||
- Decision leads need implementation help
|
||||
|
||||
### 3. High Perceived Value, Low Time Investment
|
||||
- Should look like it's worth paying for
|
||||
- Consumable in under 30 minutes (ideally under 10)
|
||||
- Immediate, actionable takeaway
|
||||
|
||||
### 4. Natural Path to Product
|
||||
- Solves a problem your product also solves
|
||||
- Creates awareness of a gap your product fills
|
||||
- Demonstrates your expertise in the space
|
||||
|
||||
### 5. Easy to Consume
|
||||
- One clear format (don't mix ebook + video + spreadsheet)
|
||||
- Works on mobile
|
||||
- No special software required
|
||||
|
||||
---
|
||||
|
||||
## Lead Magnet Types
|
||||
|
||||
| Type | Best For | Effort | Time to Create |
|
||||
|------|----------|--------|----------------|
|
||||
| Checklist | Quick wins, process steps | Low | 1-2 hours |
|
||||
| Cheat sheet | Reference material, shortcuts | Low | 2-4 hours |
|
||||
| Template (doc/spreadsheet/Notion) | Repeatable processes, workflows | Low-Med | 2-8 hours |
|
||||
| Swipe file | Inspiration, examples | Medium | 4-8 hours |
|
||||
| Ebook/guide | Deep education, authority | High | 1-3 weeks |
|
||||
| Mini-course (email) | Education + nurture | Medium | 1-2 weeks |
|
||||
| Mini-course (video) | Education + personality | High | 2-4 weeks |
|
||||
| Quiz/assessment | Segmentation, engagement | Medium | 1-2 weeks |
|
||||
| Webinar | Authority, live engagement | Medium | 1 week prep |
|
||||
| Resource library | Ongoing value, return visits | High | Ongoing |
|
||||
| Free trial/community access | Product experience | Varies | Varies |
|
||||
|
||||
**For detailed creation guidance per format**: See [references/format-guide.md](references/format-guide.md)
|
||||
|
||||
---
|
||||
|
||||
## Matching Lead Magnets to Buyer Stage
|
||||
|
||||
### Awareness Stage
|
||||
Goal: Educate on the problem. Attract people who don't know you yet.
|
||||
|
||||
| Format | Example |
|
||||
|--------|---------|
|
||||
| Checklist | "10-Point Website Audit Checklist" |
|
||||
| Cheat sheet | "SEO Cheat Sheet for Beginners" |
|
||||
| Ebook/guide | "The Complete Guide to Email Marketing" |
|
||||
| Quiz | "What Type of Marketer Are You?" |
|
||||
|
||||
### Consideration Stage
|
||||
Goal: Help evaluate solutions. Build trust and demonstrate expertise.
|
||||
|
||||
| Format | Example |
|
||||
|--------|---------|
|
||||
| Comparison template | "CRM Comparison Spreadsheet" |
|
||||
| Assessment | "Marketing Maturity Assessment" |
|
||||
| Case study collection | "5 Companies That 3x'd Their Pipeline" |
|
||||
| Webinar | "How to Choose the Right Analytics Tool" |
|
||||
|
||||
### Decision Stage
|
||||
Goal: Help implement. Remove friction to purchase.
|
||||
|
||||
| Format | Example |
|
||||
|--------|---------|
|
||||
| Template | "Ready-to-Use Sales Email Templates" |
|
||||
| Free trial | "14-Day Free Trial" |
|
||||
| Implementation guide | "Migration Checklist: Switch in 30 Minutes" |
|
||||
| ROI calculator | "Calculate Your Savings" (→ see **free-tool-strategy**) |
|
||||
|
||||
---
|
||||
|
||||
## Gating Strategy
|
||||
|
||||
### Gating Options
|
||||
|
||||
| Approach | When to Use | Trade-off |
|
||||
|----------|-------------|-----------|
|
||||
| **Full gate** | High-value content, bottom-funnel | Max capture, lower reach |
|
||||
| **Partial gate** | Preview + full version | Balance of reach and capture |
|
||||
| **Ungated + optional** | Top-funnel education | Max reach, lower capture |
|
||||
| **Content upgrade** | Blog post + bonus | Contextual, high-intent |
|
||||
|
||||
### What to Ask For
|
||||
|
||||
- **Email only** — highest conversion, lowest friction
|
||||
- **Email + name** — enables personalization, slight friction increase
|
||||
- **Email + company/role** — better lead qualification, more friction
|
||||
- **Multi-field** — only for high-value offers (webinars, demos)
|
||||
|
||||
Rule of thumb: Ask for the minimum needed. Every extra field reduces conversion by 5-10%.
|
||||
|
||||
### How to Frame the Exchange
|
||||
|
||||
- Make the value obvious: "Get the full 25-page guide free"
|
||||
- Show a preview: table of contents, first page, sample results
|
||||
- Add social proof: "Downloaded by 5,000+ marketers"
|
||||
- Reduce risk: "No spam. Unsubscribe anytime."
|
||||
|
||||
**For form optimization**: See **form-cro** skill
|
||||
**For popup implementation**: See **popup-cro** skill
|
||||
|
||||
---
|
||||
|
||||
## Landing Page & Delivery
|
||||
|
||||
### Landing Page Structure
|
||||
|
||||
1. **Headline** — Clear benefit: what they'll get and why it matters
|
||||
2. **Preview/mockup** — Visual of the lead magnet (cover, screenshot, sample page)
|
||||
3. **What's inside** — 3-5 bullet points of key takeaways
|
||||
4. **Social proof** — Download count, testimonials, logos
|
||||
5. **Form** — Minimal fields, clear CTA button
|
||||
6. **FAQ** — Address hesitations (Is it really free? What format?)
|
||||
|
||||
**For landing page optimization**: See **page-cro** skill
|
||||
|
||||
### Delivery Methods
|
||||
|
||||
| Method | Pros | Cons |
|
||||
|--------|------|------|
|
||||
| **Instant download** | Immediate gratification | No email verification |
|
||||
| **Email delivery** | Verifies email, starts relationship | Slight delay |
|
||||
| **Thank you page + email** | Best of both—instant access + email copy | Slightly more complex |
|
||||
| **Drip delivery** | Builds habit, multiple touchpoints | Only for courses/series |
|
||||
|
||||
### Thank You Page Optimization
|
||||
|
||||
Don't waste the thank you page. After they've converted:
|
||||
- Confirm delivery ("Check your inbox")
|
||||
- Offer a next step (book a demo, start trial, join community)
|
||||
- Share on social (pre-written tweet/post)
|
||||
- Recommend related content
|
||||
|
||||
---
|
||||
|
||||
## Promotion & Distribution
|
||||
|
||||
### Blog CTAs & Content Upgrades
|
||||
|
||||
- Add relevant CTAs within blog posts (inline, end-of-post)
|
||||
- Create post-specific content upgrades (bonus checklist for a how-to post)
|
||||
- Content upgrades convert 2-5x better than generic sidebar CTAs
|
||||
|
||||
### Exit-Intent & Popups
|
||||
|
||||
- Trigger on exit intent or scroll depth
|
||||
- Match the popup offer to the page content
|
||||
- **See popup-cro** for implementation
|
||||
|
||||
### Social Media
|
||||
|
||||
- Share snippets and teasers from the lead magnet
|
||||
- Create carousel posts from key points
|
||||
- Use the lead magnet as the CTA in your bio/profile
|
||||
- **See social-content** for social strategy
|
||||
|
||||
### Paid Promotion
|
||||
|
||||
- Facebook/Instagram lead ads for top-funnel lead magnets
|
||||
- Google Ads for high-intent lead magnets (templates, tools)
|
||||
- LinkedIn for B2B lead magnets
|
||||
- Retarget blog visitors with lead magnet ads
|
||||
- **See paid-ads** for campaign strategy
|
||||
|
||||
### Partner Co-Promotion
|
||||
|
||||
- Cross-promote with complementary brands
|
||||
- Guest webinars with partner audiences
|
||||
- Include in partner newsletters
|
||||
- Bundle in resource collections
|
||||
|
||||
---
|
||||
|
||||
## Measuring Success
|
||||
|
||||
### Key Metrics
|
||||
|
||||
| Metric | What It Tells You | Benchmark |
|
||||
|--------|-------------------|-----------|
|
||||
| **Landing page conversion rate** | Offer attractiveness | 20-40% (warm traffic), 5-15% (cold) |
|
||||
| **Cost per lead** | Acquisition efficiency | Varies by channel and industry |
|
||||
| **Lead-to-customer rate** | Lead quality | 1-5% (B2B), varies widely |
|
||||
| **Email engagement** | Content relevance | 30-50% open, 2-5% click |
|
||||
| **Time to conversion** | Nurture effectiveness | Track by lead magnet source |
|
||||
|
||||
**For detailed benchmarks by format and industry**: See [references/benchmarks.md](references/benchmarks.md)
|
||||
|
||||
### A/B Testing Ideas
|
||||
|
||||
- **Headline**: Benefit-focused vs. curiosity-driven
|
||||
- **Format**: Checklist vs. guide on same topic
|
||||
- **Gate level**: Full gate vs. partial preview
|
||||
- **Form fields**: Email-only vs. email + name
|
||||
- **CTA copy**: "Download Free Guide" vs. "Get Your Copy"
|
||||
- **Delivery**: Instant download vs. email delivery
|
||||
|
||||
### Lead Quality Signals
|
||||
|
||||
Good lead magnet attracted quality leads if:
|
||||
- Higher-than-average email engagement
|
||||
- Leads progress to trial/demo at expected rates
|
||||
- Low unsubscribe rate after delivery
|
||||
- Leads match ICP demographics
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
When creating a lead magnet strategy, provide:
|
||||
|
||||
### 1. Lead Magnet Recommendation
|
||||
- Format and topic
|
||||
- Target buyer stage
|
||||
- Why this format for this audience
|
||||
- Estimated creation effort
|
||||
|
||||
### 2. Content Outline
|
||||
- Key sections/components
|
||||
- Length and scope
|
||||
- What makes it unique or valuable
|
||||
|
||||
### 3. Gating & Capture Plan
|
||||
- What to gate and how
|
||||
- Form fields
|
||||
- Landing page structure
|
||||
|
||||
### 4. Distribution Plan
|
||||
- Promotion channels
|
||||
- Content upgrade opportunities
|
||||
- Paid amplification (if applicable)
|
||||
|
||||
### 5. Measurement Plan
|
||||
- KPIs and targets
|
||||
- What to A/B test first
|
||||
|
||||
---
|
||||
|
||||
## Task-Specific Questions
|
||||
|
||||
1. What existing content or expertise could you turn into a lead magnet?
|
||||
2. Where does your audience spend time online?
|
||||
3. What's the most common question prospects ask before buying?
|
||||
4. Do you have an email nurture sequence set up for new leads?
|
||||
5. What's your budget for design and promotion?
|
||||
|
||||
---
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **free-tool-strategy**: For interactive tools as lead magnets (calculators, graders, quizzes)
|
||||
- **copywriting**: For writing the lead magnet content itself
|
||||
- **email-sequence**: For nurture sequences after lead capture
|
||||
- **page-cro**: For optimizing lead magnet landing pages
|
||||
- **popup-cro**: For popup-based lead capture
|
||||
- **form-cro**: For optimizing capture forms
|
||||
- **content-strategy**: For content planning and topic selection
|
||||
- **analytics-tracking**: For measuring lead magnet performance
|
||||
- **paid-ads**: For paid promotion of lead magnets
|
||||
- **social-content**: For social media promotion
|
||||
@@ -0,0 +1,129 @@
|
||||
# Lead Magnet Benchmarks
|
||||
|
||||
Reference data for planning and evaluating lead magnet performance.
|
||||
|
||||
---
|
||||
|
||||
## Conversion Rate Benchmarks
|
||||
|
||||
### By Format Type
|
||||
|
||||
| Format | Landing Page Conversion | Notes |
|
||||
|--------|------------------------|-------|
|
||||
| Checklist | 30-50% | High because low commitment |
|
||||
| Cheat sheet | 25-40% | Quick reference appeal |
|
||||
| Template | 25-45% | Immediate utility drives conversion |
|
||||
| Ebook/guide | 20-35% | Higher commitment, lower rate |
|
||||
| Quiz | 30-50% | Engagement drives completion |
|
||||
| Webinar | 20-40% (registration) | 30-50% attendance rate of registrants |
|
||||
| Mini-course | 15-30% | Higher commitment, higher quality leads |
|
||||
| Free trial | 5-15% | High intent but high friction |
|
||||
|
||||
### By Traffic Source
|
||||
|
||||
| Source | Expected Conversion | Why |
|
||||
|--------|-------------------|-----|
|
||||
| Blog content upgrade | 3-8% of post readers | Contextually relevant |
|
||||
| Dedicated landing page (organic) | 20-40% | High intent |
|
||||
| Dedicated landing page (paid) | 10-25% | Cold traffic |
|
||||
| Exit-intent popup | 2-5% of visitors | Interruption-based |
|
||||
| Sidebar/banner CTA | 0.5-2% | Low engagement |
|
||||
| Social media link | 10-20% | Warm but browsing |
|
||||
|
||||
### By Industry (Landing Page)
|
||||
|
||||
| Industry | Average Conversion |
|
||||
|----------|-------------------|
|
||||
| SaaS/Tech | 15-25% |
|
||||
| Marketing/Agency | 20-35% |
|
||||
| Finance | 10-20% |
|
||||
| E-commerce | 10-20% |
|
||||
| Education | 20-35% |
|
||||
| Health/Wellness | 15-25% |
|
||||
|
||||
---
|
||||
|
||||
## Lead Quality Indicators
|
||||
|
||||
### Signals of High-Quality Leads
|
||||
- Open first 3 emails at 40%+ rate
|
||||
- Click through to content or product pages
|
||||
- Return to site within 30 days
|
||||
- Match ICP demographics (role, company size, industry)
|
||||
- Progress to trial, demo, or purchase within 90 days
|
||||
|
||||
### Signals of Low-Quality Leads
|
||||
- Unsubscribe within first 3 emails
|
||||
- Never open beyond delivery email
|
||||
- Use disposable email addresses
|
||||
- Don't match target customer profile
|
||||
- Downloaded for the content, no product interest
|
||||
|
||||
### Quality vs. Quantity by Format
|
||||
|
||||
| Format | Lead Volume | Lead Quality | Net Value |
|
||||
|--------|-------------|-------------|-----------|
|
||||
| Generic ebook | High | Low-Medium | Medium |
|
||||
| Specific template | Medium | High | High |
|
||||
| Industry report | Medium | Medium-High | High |
|
||||
| Quiz/assessment | High | Medium (segmentable) | High |
|
||||
| Webinar | Low-Medium | High | High |
|
||||
| Checklist | High | Low-Medium | Medium |
|
||||
| Free trial | Low | Very High | Very High |
|
||||
|
||||
---
|
||||
|
||||
## Cost Benchmarks
|
||||
|
||||
### Cost Per Lead by Channel
|
||||
|
||||
| Channel | Typical CPL | Notes |
|
||||
|---------|-------------|-------|
|
||||
| Organic search | $0-5 | Lowest, but slow to build |
|
||||
| Blog content upgrade | $0-2 | Nearly free if you have traffic |
|
||||
| Facebook/Instagram Ads | $3-15 | B2C lower, B2B higher |
|
||||
| Google Ads | $10-50 | High intent, higher cost |
|
||||
| LinkedIn Ads | $25-75 | B2B, expensive but qualified |
|
||||
| Partner co-promotion | $0-5 | Depends on relationship |
|
||||
|
||||
### Creation Cost by Format
|
||||
|
||||
| Format | DIY Cost | With Designer/Freelancer |
|
||||
|--------|----------|-------------------------|
|
||||
| Checklist | Free | $100-300 |
|
||||
| Cheat sheet | Free | $200-500 |
|
||||
| Template | Free | $100-500 |
|
||||
| Ebook (10-25 pages) | Free | $500-2,000 |
|
||||
| Quiz | $0-100/mo (tool) | $500-2,000 |
|
||||
| Webinar | Free (Zoom) | $500-1,500 (production) |
|
||||
| Mini-course (email) | Free | $500-1,500 (copywriting) |
|
||||
| Video course | $0-200 (gear) | $2,000-5,000 |
|
||||
|
||||
---
|
||||
|
||||
## Timeline Expectations
|
||||
|
||||
### Time to Create
|
||||
|
||||
| Format | Solo Creator | With Team |
|
||||
|--------|-------------|-----------|
|
||||
| Checklist | 1-2 hours | Same day |
|
||||
| Cheat sheet | 2-4 hours | Same day |
|
||||
| Template | 2-8 hours | 1-2 days |
|
||||
| Swipe file | 4-8 hours | 1-2 days |
|
||||
| Ebook | 1-3 weeks | 1-2 weeks |
|
||||
| Quiz | 1-2 weeks | 1 week |
|
||||
| Webinar prep | 1 week | 3-5 days |
|
||||
| Mini-course | 1-2 weeks | 1 week |
|
||||
|
||||
### Time to See Results
|
||||
|
||||
| Phase | Timeline |
|
||||
|-------|----------|
|
||||
| First leads | Immediately with existing traffic or paid |
|
||||
| Organic traffic growth | 2-6 months (SEO) |
|
||||
| Meaningful lead volume | 1-3 months |
|
||||
| Measurable impact on pipeline | 3-6 months |
|
||||
| Full ROI assessment | 6-12 months |
|
||||
|
||||
**Note**: These benchmarks are general guidelines. Your actual results depend on audience, niche, traffic volume, and offer quality. Start measuring from day one and build your own benchmarks.
|
||||
@@ -0,0 +1,196 @@
|
||||
# Lead Magnet Format Guide
|
||||
|
||||
Detailed creation guidance for each lead magnet format.
|
||||
|
||||
## Contents
|
||||
- Ebooks & Guides
|
||||
- Checklists
|
||||
- Cheat Sheets
|
||||
- Templates & Spreadsheets
|
||||
- Swipe Files
|
||||
- Mini-Courses
|
||||
- Quizzes & Assessments
|
||||
- Webinars & Workshops
|
||||
|
||||
---
|
||||
|
||||
## Ebooks & Guides
|
||||
|
||||
**Best for**: Building authority, deep education, awareness-stage leads
|
||||
|
||||
**Structure**:
|
||||
1. Title page with professional design
|
||||
2. Table of contents
|
||||
3. Introduction — frame the problem, set expectations
|
||||
4. 3-7 chapters — one key concept per chapter
|
||||
5. Summary — recap key takeaways
|
||||
6. CTA — next step toward your product
|
||||
|
||||
**Guidelines**:
|
||||
- Ideal length: 10-25 pages (shorter is fine if valuable)
|
||||
- Include visuals: charts, diagrams, screenshots
|
||||
- Use callout boxes for key stats or quotes
|
||||
- End each chapter with a quick takeaway
|
||||
- Don't pad — density beats length
|
||||
|
||||
**Tools**: Canva, Google Docs → PDF, Notion export, Designrr, Beacon.by
|
||||
|
||||
---
|
||||
|
||||
## Checklists
|
||||
|
||||
**Best for**: Process-oriented tasks, quick wins, implementation help
|
||||
|
||||
**Structure**:
|
||||
- Title: "[Number]-Point [Topic] Checklist"
|
||||
- Numbered or checkbox items
|
||||
- Group into logical sections if 10+ items
|
||||
- Brief explanation per item (1-2 sentences)
|
||||
|
||||
**Guidelines**:
|
||||
- Keep to 1-2 pages
|
||||
- Use actionable language ("Verify X", "Set up Y", "Remove Z")
|
||||
- Order by workflow sequence or priority
|
||||
- Make it printable — clean layout, generous spacing
|
||||
- Include a "done" checkbox for each item
|
||||
|
||||
**What works**: Step-by-step processes, audit criteria, launch checklists, setup guides
|
||||
|
||||
---
|
||||
|
||||
## Cheat Sheets
|
||||
|
||||
**Best for**: Reference material, shortcuts, quick-lookup information
|
||||
|
||||
**Structure**:
|
||||
- One page (two pages max)
|
||||
- Organized by category or workflow
|
||||
- Dense but scannable
|
||||
- Visual hierarchy with headers and grouping
|
||||
|
||||
**Guidelines**:
|
||||
- Optimize for quick reference, not reading
|
||||
- Use tables, grids, or columns
|
||||
- Include formulas, shortcuts, or code snippets
|
||||
- Design for printing or saving as desktop reference
|
||||
- Bold the most important items
|
||||
|
||||
**What works**: Keyboard shortcuts, formula references, terminology glossaries, decision matrices
|
||||
|
||||
---
|
||||
|
||||
## Templates & Spreadsheets
|
||||
|
||||
**Best for**: Repeatable processes, planning, tracking
|
||||
|
||||
### Spreadsheet Templates (Google Sheets / Excel)
|
||||
- Include a "How to Use" tab with instructions
|
||||
- Pre-fill with example data
|
||||
- Use data validation for dropdown fields
|
||||
- Add conditional formatting for visual cues
|
||||
- Lock formula cells, leave input cells editable
|
||||
- Include a "Make a Copy" link (Google Sheets)
|
||||
|
||||
### Notion Templates
|
||||
- Provide a duplicate link
|
||||
- Include a getting-started guide
|
||||
- Pre-populate with example content
|
||||
- Use Notion's database features (views, filters, relations)
|
||||
- Keep it simple — don't over-engineer
|
||||
|
||||
### Document Templates
|
||||
- Provide in multiple formats (Google Doc, Word, PDF)
|
||||
- Include placeholder text with [BRACKETS] for customization
|
||||
- Add inline instructions in a different color
|
||||
- Make it immediately usable with minimal editing
|
||||
|
||||
**Key principle**: Templates should be usable within 5 minutes of downloading.
|
||||
|
||||
---
|
||||
|
||||
## Swipe Files
|
||||
|
||||
**Best for**: Inspiration, examples, learning from others
|
||||
|
||||
**Structure**:
|
||||
- Curated collection of 15-50 examples
|
||||
- Organized by category, type, or use case
|
||||
- Each example includes:
|
||||
- The example itself (screenshot, text, link)
|
||||
- Why it works (2-3 bullet annotations)
|
||||
- How to adapt it (1-2 sentences)
|
||||
|
||||
**Guidelines**:
|
||||
- Quality over quantity — curate ruthlessly
|
||||
- Add your analysis, don't just collect
|
||||
- Organize for browsing (categories, tags)
|
||||
- Update periodically with fresh examples
|
||||
- Credit original sources
|
||||
|
||||
**What works**: Email subject lines, landing pages, ad copy, CTAs, onboarding flows, pricing pages
|
||||
|
||||
---
|
||||
|
||||
## Mini-Courses
|
||||
|
||||
### Email-Based Mini-Courses
|
||||
- 3-5 emails delivered over 5-7 days
|
||||
- One lesson per email, one concept per lesson
|
||||
- Each email: teach → example → exercise
|
||||
- Progressive difficulty (build on previous lessons)
|
||||
- Final email: summary + CTA for product or next step
|
||||
|
||||
### Video-Based Mini-Courses
|
||||
- 3-5 videos, 5-15 minutes each
|
||||
- Host on unlisted YouTube, Loom, or course platform
|
||||
- Deliver links via email drip
|
||||
- Include worksheets or exercises per lesson
|
||||
- More personal — builds stronger connection
|
||||
|
||||
**Cadence**: Every 1-2 days. Don't stretch too thin or compress too tight.
|
||||
|
||||
**Key principle**: Each lesson should deliver standalone value. If someone only watches lesson 2, they should still learn something useful.
|
||||
|
||||
---
|
||||
|
||||
## Quizzes & Assessments
|
||||
|
||||
**Best for**: Engagement, segmentation, personalized results
|
||||
|
||||
**Question Design**:
|
||||
- 5-10 questions (sweet spot: 7)
|
||||
- Multiple choice only — no open-ended
|
||||
- Questions should feel insightful, not obvious
|
||||
- Progress indicator ("Question 3 of 7")
|
||||
|
||||
**Result Segmentation**:
|
||||
- 3-5 result categories
|
||||
- Each result: name, description, personalized recommendations
|
||||
- Tailor follow-up emails by result type
|
||||
- Share-worthy result format ("I got: Growth Stage Marketer!")
|
||||
|
||||
**Implementation**: Gate results behind email capture. The quiz itself is ungated — the personalized results require an email.
|
||||
|
||||
**For building interactive quizzes**: See **free-tool-strategy** skill for technical implementation guidance.
|
||||
|
||||
---
|
||||
|
||||
## Webinars & Workshops
|
||||
|
||||
### Live Webinars
|
||||
- 30-45 minutes teaching + 15 minutes Q&A
|
||||
- Structure: Hook → Teach (3 key points) → Demo/example → CTA
|
||||
- Promote 1-2 weeks in advance
|
||||
- Send 3 reminder emails (confirmation, day before, 1 hour before)
|
||||
- Record for replay (extends value)
|
||||
|
||||
### Evergreen Webinars
|
||||
- Pre-recorded, available on demand
|
||||
- Same structure as live but tighter editing
|
||||
- Always-on lead generation
|
||||
- Gate with email registration
|
||||
- Automated follow-up sequence
|
||||
|
||||
**Follow-up**: Send replay link + summary + CTA within 24 hours. Continue with nurture sequence.
|
||||
|
||||
**Key principle**: Teach something genuinely useful. A webinar that's just a sales pitch will damage trust.
|
||||
@@ -447,6 +447,7 @@ Ideas to A/B test with expected outcomes
|
||||
|
||||
## Related Skills
|
||||
|
||||
- **lead-magnets**: For planning lead magnets to promote via popups
|
||||
- **form-cro**: For optimizing the form inside the popup
|
||||
- **page-cro**: For the page context around popups
|
||||
- **email-sequence**: For what happens after popup conversion
|
||||
|
||||
+18
-1
@@ -82,6 +82,10 @@ Quick reference for AI agents to discover tool capabilities and integration meth
|
||||
| shopify | Commerce | ✓ | - | ✓ | ✓ | [shopify.md](integrations/shopify.md) |
|
||||
| wordpress | CMS | ✓ | - | ✓ | ✓ | [wordpress.md](integrations/wordpress.md) |
|
||||
| webflow | CMS | ✓ | - | ✓ | ✓ | [webflow.md](integrations/webflow.md) |
|
||||
| sanity | Headless CMS | ✓ | - | ✓ | ✓ | [sanity.md](integrations/sanity.md) |
|
||||
| contentful | Headless CMS | ✓ | - | ✓ | ✓ | [contentful.md](integrations/contentful.md) |
|
||||
| strapi | Headless CMS | ✓ | - | ✓ | ✓ | [strapi.md](integrations/strapi.md) |
|
||||
| composio | Integration Layer | ✓ | ✓ | ✓ | ✓ | [composio.md](integrations/composio.md) |
|
||||
|
||||
---
|
||||
|
||||
@@ -386,8 +390,11 @@ E-commerce platforms and content management systems.
|
||||
| **shopify** | E-commerce, product sales | ✓ |
|
||||
| **wordpress** | Blogs, content sites | ✓ |
|
||||
| **webflow** | Design-focused marketing sites | ✓ |
|
||||
| **sanity** | Headless CMS, structured content | ✓ |
|
||||
| **contentful** | Enterprise headless CMS, multi-locale | ✓ |
|
||||
| **strapi** | Open-source headless CMS, self-hosted | ✓ |
|
||||
|
||||
**Agent recommendation**: Shopify for e-commerce. Webflow for marketing sites. WordPress for blogs.
|
||||
**Agent recommendation**: Shopify for e-commerce. Webflow for marketing sites. WordPress for blogs. For headless CMS: Sanity for developer-flexible content, Contentful for enterprise multi-locale, Strapi for self-hosted/budget-conscious. See [headless CMS guide](../skills/content-strategy/references/headless-cms.md) for selection criteria.
|
||||
|
||||
---
|
||||
|
||||
@@ -422,6 +429,16 @@ These tools have Model Context Protocol servers available, enabling direct agent
|
||||
|
||||
To use MCP tools, ensure the appropriate MCP server is configured in your environment.
|
||||
|
||||
### Composio Integration
|
||||
|
||||
[Composio](integrations/composio.md) provides managed OAuth and pre-built connectors for 500+ tools via a single MCP server. It adds MCP access to tools that don't have native MCP servers, including HubSpot, Salesforce, Meta Ads, LinkedIn Ads, Google Sheets, Slack, Notion, and more.
|
||||
|
||||
- **Setup**: `npx @composio/mcp@latest setup`
|
||||
- **Quick start**: See [tools/composio/README.md](composio/README.md)
|
||||
- **Marketing tool mapping**: See [tools/composio/marketing-tools.md](composio/marketing-tools.md)
|
||||
|
||||
Use Composio when you need MCP access to OAuth-heavy tools. Prefer native MCP servers (GA4, Stripe, Mailchimp, etc.) when available — they have deeper coverage.
|
||||
|
||||
---
|
||||
|
||||
## Quick Start by Use Case
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# Composio Quick Start
|
||||
|
||||
Get MCP access to 500+ marketing tools through a single integration.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Node.js 18+
|
||||
- Claude Code installed
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npx @composio/mcp@latest setup
|
||||
```
|
||||
|
||||
Verify by running `/mcp` in Claude Code — `composio` should appear in the server list.
|
||||
|
||||
## Connect a Tool
|
||||
|
||||
When you ask the agent to use a Composio-backed tool for the first time, it will provide a Connect Link. Open the link in your browser, authorize the app, and you're set. The connection persists across sessions.
|
||||
|
||||
```
|
||||
You: "Get my top HubSpot contacts"
|
||||
Agent: "Please connect HubSpot first: https://app.composio.dev/connect/..."
|
||||
# Click the link → authorize → return to Claude Code
|
||||
Agent: "Here are your top contacts: ..."
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Pull CRM contacts
|
||||
|
||||
```
|
||||
"Show me my 10 most recent HubSpot contacts with their deal stages"
|
||||
```
|
||||
|
||||
### Get ad performance
|
||||
|
||||
```
|
||||
"What's my Meta Ads spend and ROAS for the last 7 days?"
|
||||
```
|
||||
|
||||
### Write to a spreadsheet
|
||||
|
||||
```
|
||||
"Add a row to my 'Campaign Tracker' Google Sheet with today's LinkedIn Ads metrics"
|
||||
```
|
||||
|
||||
### Cross-tool workflow
|
||||
|
||||
```
|
||||
"Find Salesforce leads from this week and post a summary in Slack #new-leads"
|
||||
```
|
||||
|
||||
## Available Marketing Tools
|
||||
|
||||
See [marketing-tools.md](marketing-tools.md) for the full list of Composio toolkits mapped to marketing use cases.
|
||||
|
||||
Key tools with new MCP access (no native MCP server in this repo):
|
||||
- **HubSpot** — contacts, deals, companies, lists
|
||||
- **Salesforce** — SOQL queries, leads, opportunities
|
||||
- **Meta Ads** — campaigns, ad sets, insights
|
||||
- **LinkedIn Ads** — campaigns, analytics
|
||||
- **Google Sheets** — read, write, create spreadsheets
|
||||
- **Slack** — messages, channels
|
||||
- **Notion** — pages, databases
|
||||
- **Klaviyo** — profiles, lists, campaigns
|
||||
- **ActiveCampaign** — contacts, automations
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Tool not found" error
|
||||
|
||||
The tool may not be connected yet. Ask the agent to connect it, or run:
|
||||
|
||||
```bash
|
||||
npx composio apps list
|
||||
```
|
||||
|
||||
### Expired authentication
|
||||
|
||||
OAuth tokens expire. If a tool stops working, re-authenticate:
|
||||
|
||||
```bash
|
||||
npx composio connections list # Find the connection
|
||||
npx composio connections remove {id} # Remove it
|
||||
# Then ask the agent to use the tool again to trigger re-auth
|
||||
```
|
||||
|
||||
### Rate limit errors
|
||||
|
||||
Composio has its own rate limits (free: 20K calls/mo, 10 req/sec). If you hit them:
|
||||
- Reduce request frequency
|
||||
- Upgrade your Composio plan
|
||||
- Use native CLI tools for high-volume operations
|
||||
|
||||
### MCP server not appearing
|
||||
|
||||
Re-run the setup command:
|
||||
|
||||
```bash
|
||||
npx @composio/mcp@latest setup
|
||||
```
|
||||
|
||||
Then restart Claude Code.
|
||||
@@ -0,0 +1,91 @@
|
||||
# Composio Marketing Tools
|
||||
|
||||
Detailed mapping of Composio toolkits to marketing use cases. Organized by the same categories as [REGISTRY.md](../REGISTRY.md).
|
||||
|
||||
## CRM
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `HUBSPOT` | OAuth 2.0 | Get/create contacts, list deals by stage, get company info, manage lists, search contacts by property | Deep |
|
||||
| `SALESFORCE` | OAuth 2.0 | Run SOQL queries, get/create leads, list opportunities, get account details, update records | Deep |
|
||||
|
||||
## Email & SMS
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `ACTIVECAMPAIGN` | API Key | Get contacts, list automations, add contacts to lists, get campaign stats | Medium |
|
||||
| `KLAVIYO` | API Key | Get profiles, list segments, get campaign metrics, add to lists | Medium |
|
||||
| `MAILCHIMP` | OAuth 2.0 | Get audiences, list campaigns, get campaign reports, add subscribers | Deep |
|
||||
| `GMAIL` | OAuth 2.0 | Send emails, search inbox, read messages, manage labels | Deep |
|
||||
|
||||
## Advertising
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `FACEBOOKADS` | OAuth 2.0 | Get campaign insights, list ad sets, get ad performance, read audience data | Medium |
|
||||
| `LINKEDIN` | OAuth 2.0 | Get campaign analytics, list campaigns, get company page stats | Medium |
|
||||
| `GOOGLEADS` | OAuth 2.0 | Get campaign performance, list ad groups, keyword stats | Medium |
|
||||
|
||||
## Productivity & Collaboration
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `GOOGLESHEETS` | OAuth 2.0 | Read/write cells, create sheets, format ranges, append rows | Deep |
|
||||
| `SLACK` | OAuth 2.0 | Send messages, read channels, upload files, search messages | Deep |
|
||||
| `NOTION` | OAuth 2.0 | Read/create pages, query databases, update blocks, search | Deep |
|
||||
| `AIRTABLE` | OAuth 2.0 | List/create/update records, query views, manage tables | Deep |
|
||||
|
||||
## Commerce
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `SHOPIFY` | OAuth 2.0 | Get products, list orders, get customer data, inventory levels | Deep |
|
||||
|
||||
## Analytics
|
||||
|
||||
| Composio Toolkit | Auth | Key Marketing Actions | Depth |
|
||||
|-----------------|------|----------------------|-------|
|
||||
| `GOOGLEANALYTICS` | OAuth 2.0 | Run reports, get real-time data, list properties | Medium |
|
||||
|
||||
## Coverage Depth Guide
|
||||
|
||||
- **Deep** — 20+ actions, covers most common operations, suitable for daily use
|
||||
- **Medium** — 5-20 actions, covers core read operations and some writes
|
||||
- **Shallow** — Under 5 actions, basic read-only access
|
||||
|
||||
## Coverage vs. Native Tools
|
||||
|
||||
This table shows where Composio adds value compared to what's already in the MarketingSkills registry:
|
||||
|
||||
| Tool | Native MCP | Native CLI | Composio MCP | Recommendation |
|
||||
|------|:----------:|:----------:|:------------:|----------------|
|
||||
| HubSpot | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Salesforce | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Meta Ads | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| LinkedIn Ads | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Google Sheets | - | - | ✓ | **Use Composio** — only MCP option |
|
||||
| Slack | - | - | ✓ | **Use Composio** — only MCP option |
|
||||
| Notion | - | - | ✓ | **Use Composio** — only MCP option |
|
||||
| Airtable | - | - | ✓ | **Use Composio** — only MCP option |
|
||||
| ActiveCampaign | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Klaviyo | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Shopify | - | ✓ | ✓ | **Use Composio** — adds MCP access |
|
||||
| Gmail | - | - | ✓ | **Use Composio** — only MCP option |
|
||||
| GA4 | ✓ | ✓ | ✓ | **Use native** — deeper coverage |
|
||||
| Stripe | ✓ | ✓ | ✓ | **Use native** — deeper coverage |
|
||||
| Mailchimp | ✓ | ✓ | ✓ | **Use native** — deeper coverage |
|
||||
| Google Ads | ✓ | ✓ | ✓ | **Use native** — deeper coverage |
|
||||
|
||||
## Toolkit Reference
|
||||
|
||||
Each Composio toolkit name maps to its `TOOL_NAME` identifier used in the Composio platform. When searching for available actions, use these exact names:
|
||||
|
||||
```bash
|
||||
# List all actions for a toolkit
|
||||
npx composio actions list --app HUBSPOT
|
||||
|
||||
# Search for specific actions
|
||||
npx composio actions list --app FACEBOOKADS --search "insights"
|
||||
```
|
||||
|
||||
For the full integration guide including setup, pricing, and limitations, see [composio.md](../integrations/composio.md).
|
||||
@@ -0,0 +1,190 @@
|
||||
# Composio
|
||||
|
||||
Managed OAuth and pre-built tool connectors for 500+ apps via a single MCP server. Provides agent-native access to marketing tools that lack native MCP support.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST API for managing connections and triggering actions |
|
||||
| MCP | ✓ | Single MCP server exposes all connected tools |
|
||||
| CLI | ✓ | `npx composio` for managing apps, connections, and actions |
|
||||
| SDK | ✓ | TypeScript and Python SDKs |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: OAuth 2.0 (per-tool, managed by Composio) or API Key
|
||||
- **Setup**: `npx @composio/mcp@latest setup` to install, then authenticate each tool via Connect Link in browser
|
||||
- **API Key** (optional): `COMPOSIO_API_KEY` env var for advanced/team usage
|
||||
|
||||
Composio handles OAuth token management, refresh, and storage for all connected tools. Individual tool auth types are listed in the Marketing Tools table below.
|
||||
|
||||
## When to Use Composio vs. Native Tools
|
||||
|
||||
Composio is an **alternative integration method**, not a replacement. Use this decision guide:
|
||||
|
||||
| Scenario | Use |
|
||||
|----------|-----|
|
||||
| Tool has native MCP server (GA4, Stripe, Mailchimp) | Native MCP server |
|
||||
| Tool has CLI but no MCP (Meta Ads, LinkedIn Ads, HubSpot) | Composio for MCP access |
|
||||
| OAuth-heavy tool with no CLI (Google Sheets, Slack, Notion) | Composio |
|
||||
| Need deep, customized integration | Native API + CLI |
|
||||
| Need quick read/write access across many tools | Composio |
|
||||
| Tool not covered by Composio | Native API guide |
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Install the MCP server
|
||||
|
||||
```bash
|
||||
npx @composio/mcp@latest setup
|
||||
```
|
||||
|
||||
This adds the Composio MCP server to your Claude Code configuration.
|
||||
|
||||
### 2. Verify installation
|
||||
|
||||
In Claude Code, run `/mcp` to confirm `composio` appears in your MCP server list.
|
||||
|
||||
### 3. Authenticate a tool
|
||||
|
||||
When you first use a Composio-backed tool, you'll receive a Connect Link. Open it in your browser to complete OAuth. The connection persists across sessions.
|
||||
|
||||
```
|
||||
# Example: connect HubSpot
|
||||
> "Pull my top 10 HubSpot contacts"
|
||||
# Agent will prompt: "Please authenticate HubSpot: [Connect Link]"
|
||||
# Click link → authorize → done
|
||||
```
|
||||
|
||||
### 4. API key (optional)
|
||||
|
||||
For advanced usage or team setups, set your Composio API key:
|
||||
|
||||
```bash
|
||||
export COMPOSIO_API_KEY=your_key_here
|
||||
```
|
||||
|
||||
## Marketing Tools Available via Composio
|
||||
|
||||
### New MCP Coverage
|
||||
|
||||
These tools have API guides in this repo but **no native MCP server**. Composio adds MCP access:
|
||||
|
||||
| Tool | Composio Toolkit | Auth Type | Coverage Depth |
|
||||
|------|-----------------|-----------|----------------|
|
||||
| HubSpot | `HUBSPOT` | OAuth 2.0 | Deep (contacts, deals, companies, lists, email) |
|
||||
| Salesforce | `SALESFORCE` | OAuth 2.0 | Deep (SOQL, objects, leads, opportunities) |
|
||||
| Meta Ads | `FACEBOOKADS` | OAuth 2.0 | Medium (campaigns, ad sets, insights) |
|
||||
| LinkedIn Ads | `LINKEDIN` | OAuth 2.0 | Medium (campaigns, analytics, company pages) |
|
||||
| Google Sheets | `GOOGLESHEETS` | OAuth 2.0 | Deep (read, write, create, format) |
|
||||
| Slack | `SLACK` | OAuth 2.0 | Deep (messages, channels, files) |
|
||||
| Notion | `NOTION` | OAuth 2.0 | Deep (pages, databases, blocks) |
|
||||
| Airtable | `AIRTABLE` | OAuth 2.0 | Deep (records, tables, views) |
|
||||
| ActiveCampaign | `ACTIVECAMPAIGN` | API Key | Medium (contacts, lists, automations) |
|
||||
| Klaviyo | `KLAVIYO` | API Key | Medium (profiles, lists, campaigns) |
|
||||
| Shopify | `SHOPIFY` | OAuth 2.0 | Deep (products, orders, customers) |
|
||||
| Gmail | `GMAIL` | OAuth 2.0 | Deep (read, send, labels, search) |
|
||||
|
||||
### Alternative to Existing Tools
|
||||
|
||||
These tools **already have native MCP or CLI** in this repo. Composio provides an alternative path:
|
||||
|
||||
| Tool | Native Integration | Composio Toolkit | When to Use Composio |
|
||||
|------|-------------------|-----------------|---------------------|
|
||||
| Mailchimp | MCP ✓, CLI ✓ | `MAILCHIMP` | If native MCP setup fails |
|
||||
| Google Ads | MCP ✓, CLI ✓ | `GOOGLEADS` | If OAuth is simpler via Composio |
|
||||
| Stripe | MCP ✓, CLI ✓ | `STRIPE` | Prefer native (deeper coverage) |
|
||||
| GA4 | MCP ✓, CLI ✓ | `GOOGLEANALYTICS` | Prefer native (deeper coverage) |
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List available tools
|
||||
|
||||
```bash
|
||||
# Via Composio CLI
|
||||
npx composio apps list
|
||||
```
|
||||
|
||||
### Check connection status
|
||||
|
||||
```bash
|
||||
npx composio connections list
|
||||
```
|
||||
|
||||
### Trigger an action programmatically
|
||||
|
||||
```bash
|
||||
POST https://backend.composio.dev/api/v1/actions/{action_id}/execute
|
||||
|
||||
{
|
||||
"connectedAccountId": "account_xxx",
|
||||
"input": {
|
||||
"query": "contact email = user@example.com"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Disconnect a tool
|
||||
|
||||
```bash
|
||||
npx composio connections remove {connection_id}
|
||||
```
|
||||
|
||||
## Example Workflows
|
||||
|
||||
### Pull CRM data into a spreadsheet
|
||||
|
||||
```
|
||||
> "Get my top 20 HubSpot contacts by last activity and add them to a Google Sheet"
|
||||
```
|
||||
Agent uses Composio's `HUBSPOT` to fetch contacts and `GOOGLESHEETS` to write rows.
|
||||
|
||||
### Cross-platform ad reporting
|
||||
|
||||
```
|
||||
> "Compare my Meta Ads and LinkedIn Ads spend this month"
|
||||
```
|
||||
Agent uses `FACEBOOKADS` and `LINKEDIN` toolkits to pull campaign data.
|
||||
|
||||
### Notify team about new leads
|
||||
|
||||
```
|
||||
> "Get my Salesforce leads from today and post a summary in Slack #sales"
|
||||
```
|
||||
Agent uses `SALESFORCE` to read leads and `SLACK` to post messages.
|
||||
|
||||
## Limitations
|
||||
|
||||
- **Coverage depth varies** — some toolkits expose hundreds of actions (HubSpot, Google Sheets), others only a handful
|
||||
- **No customization** — you can't modify Composio's action schemas or add custom endpoints
|
||||
- **Vendor dependency** — if Composio's servers are down, all connected tools are unavailable
|
||||
- **Rate limits apply** — Composio enforces its own rate limits on top of each tool's native limits
|
||||
- **OAuth tokens** — managed by Composio; you don't control token refresh or storage
|
||||
- **Action naming** — Composio action names may differ from native API terminology
|
||||
|
||||
## Pricing
|
||||
|
||||
| Plan | Monthly Price | API Calls | Notes |
|
||||
|------|--------------|-----------|-------|
|
||||
| Free | $0 | 20,000 | Good for exploration and personal use |
|
||||
| Growth | $29 | 200,000 | For regular use across multiple tools |
|
||||
| Business | $229 | 2,000,000 | For teams and heavy automation |
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Free tier: 20,000 calls/month, 10 req/sec
|
||||
- Growth tier: 200,000 calls/month, 50 req/sec
|
||||
- Business tier: 2,000,000 calls/month, 100 req/sec
|
||||
|
||||
## See Also
|
||||
|
||||
- [Quick start guide](../composio/README.md) — install, connect, and use in 5 minutes
|
||||
- [Marketing tools mapping](../composio/marketing-tools.md) — detailed toolkit-to-category reference
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- analytics-tracking (cross-platform data via Composio connectors)
|
||||
- email-sequence (ActiveCampaign, Klaviyo access)
|
||||
- paid-ads (Meta Ads, LinkedIn Ads MCP access)
|
||||
- referral-program (Shopify integration)
|
||||
@@ -0,0 +1,160 @@
|
||||
# Contentful
|
||||
|
||||
Enterprise headless CMS with multi-locale support, two-API architecture, and composable content.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | Content Delivery API (read), Content Management API (write) |
|
||||
| MCP | - | No official MCP server |
|
||||
| CLI | ✓ | `contentful-cli` for spaces, content types, migrations |
|
||||
| SDK | ✓ | `contentful` (delivery), `contentful-management` (management) |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Delivery API (CDA)**: `Authorization: Bearer {delivery_token}`
|
||||
- Base URL: `https://cdn.contentful.com`
|
||||
- Read-only, CDN-cached
|
||||
- **Preview API (CPA)**: `Authorization: Bearer {preview_token}`
|
||||
- Base URL: `https://preview.contentful.com`
|
||||
- Read-only, returns draft content
|
||||
- **Management API (CMA)**: `Authorization: Bearer {management_token}`
|
||||
- Base URL: `https://api.contentful.com`
|
||||
- Read/write, not cached
|
||||
- **Tokens**: Create in Settings → API keys (delivery) or Settings → CMA tokens (management)
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Get entries (Delivery API)
|
||||
|
||||
```bash
|
||||
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&limit=10
|
||||
|
||||
Authorization: Bearer {delivery_token}
|
||||
```
|
||||
|
||||
### Get single entry
|
||||
|
||||
```bash
|
||||
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
||||
|
||||
Authorization: Bearer {delivery_token}
|
||||
```
|
||||
|
||||
### Search and filter
|
||||
|
||||
```bash
|
||||
# By field value
|
||||
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&fields.slug=my-post
|
||||
|
||||
# Full-text search
|
||||
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?query=marketing+strategy
|
||||
|
||||
# By date range
|
||||
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&fields.publishDate[gte]=2024-01-01
|
||||
```
|
||||
|
||||
### Create entry (Management API)
|
||||
|
||||
CMA uses PUT with a client-generated `entry_id`. To auto-generate, use POST without an ID in the path.
|
||||
|
||||
```bash
|
||||
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
||||
Content-Type: application/vnd.contentful.management.v1+json
|
||||
X-Contentful-Content-Type: blogPost
|
||||
Authorization: Bearer {management_token}
|
||||
|
||||
{
|
||||
"fields": {
|
||||
"title": {"en-US": "New Post"},
|
||||
"slug": {"en-US": "new-post"},
|
||||
"body": {"en-US": "Post content here"}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update entry
|
||||
|
||||
```bash
|
||||
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
||||
Content-Type: application/vnd.contentful.management.v1+json
|
||||
X-Contentful-Version: {current_version}
|
||||
Authorization: Bearer {management_token}
|
||||
|
||||
{
|
||||
"fields": {
|
||||
"title": {"en-US": "Updated Title"}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Publish entry
|
||||
|
||||
```bash
|
||||
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}/published
|
||||
X-Contentful-Version: {current_version}
|
||||
Authorization: Bearer {management_token}
|
||||
```
|
||||
|
||||
### Unpublish entry
|
||||
|
||||
```bash
|
||||
DELETE https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}/published
|
||||
X-Contentful-Version: {current_version}
|
||||
Authorization: Bearer {management_token}
|
||||
```
|
||||
|
||||
## CLI Commands
|
||||
|
||||
```bash
|
||||
# Login
|
||||
contentful login
|
||||
|
||||
# List spaces
|
||||
contentful space list
|
||||
|
||||
# Export space content
|
||||
contentful space export --space-id {space_id}
|
||||
|
||||
# Import content
|
||||
contentful space import --space-id {space_id} --content-file export.json
|
||||
|
||||
# Create migration
|
||||
contentful space migration --space-id {space_id} migration.js
|
||||
|
||||
# List content types
|
||||
contentful content-type list --space-id {space_id}
|
||||
```
|
||||
|
||||
## Key Objects
|
||||
|
||||
- **Space** — Top-level container for content (one per project)
|
||||
- **Environment** — Isolated content branch (`master`, `staging`, etc.)
|
||||
- **Content Type** — Schema definition with fields and validations
|
||||
- **Entry** — Content item of a specific content type
|
||||
- **Asset** — Media file (image, video, document)
|
||||
- **Locale** — Language/region variant (e.g., `en-US`, `de-DE`)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Multi-locale marketing content (global sites)
|
||||
- Enterprise content operations with approval workflows
|
||||
- Composable content architecture
|
||||
- Teams needing established vendor support and SLAs
|
||||
- Content reuse across multiple channels
|
||||
|
||||
## Rate Limits
|
||||
|
||||
Rate limits are plan-dependent. Check `X-Contentful-RateLimit-Second-Limit` response header for your actual limits.
|
||||
|
||||
- Delivery API (CDA): Varies by plan (typically high throughput)
|
||||
- Preview API (CPA): Lower than CDA (varies by plan)
|
||||
- Management API (CMA): ~10 requests per second (default)
|
||||
- See [Contentful technical limits](https://www.contentful.com/developers/docs/technical-limits/) for current values
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- content-strategy (CMS selection, content modeling)
|
||||
- programmatic-seo (CMS as data source for generated pages)
|
||||
- site-architecture (multi-locale URL structure)
|
||||
@@ -0,0 +1,148 @@
|
||||
# Sanity
|
||||
|
||||
Headless CMS with real-time collaboration, GROQ query language, and schema-as-code.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | GROQ queries, Mutations API, Assets API |
|
||||
| MCP | - | No official MCP server |
|
||||
| CLI | ✓ | `sanity` CLI for studio, datasets, deployment |
|
||||
| SDK | ✓ | `@sanity/client`, `next-sanity`, `@sanity/image-url` |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Token (Bearer)
|
||||
- **Header**: `Authorization: Bearer skXXXXXX`
|
||||
- **Tokens**: Create in Sanity Manage → API → Tokens
|
||||
- **Permissions**: Read-only or Read+Write per token
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### Query documents (GROQ)
|
||||
|
||||
URL-encode the `query` parameter value in practice.
|
||||
|
||||
```bash
|
||||
GET https://{projectId}.api.sanity.io/v2024-01-01/data/query/{dataset}?query=*[_type == "post"]{title, slug, publishedAt}
|
||||
```
|
||||
|
||||
### Query with parameters
|
||||
|
||||
```bash
|
||||
GET https://{projectId}.api.sanity.io/v2024-01-01/data/query/{dataset}?query=*[_type == "post" && slug.current == $slug][0]&$slug="my-post"
|
||||
```
|
||||
|
||||
### Get document by ID
|
||||
|
||||
```bash
|
||||
GET https://{projectId}.api.sanity.io/v2024-01-01/data/doc/{dataset}/{documentId}
|
||||
```
|
||||
|
||||
### Create document (Mutations API)
|
||||
|
||||
```bash
|
||||
POST https://{projectId}.api.sanity.io/v2024-01-01/data/mutate/{dataset}
|
||||
|
||||
{
|
||||
"mutations": [
|
||||
{
|
||||
"create": {
|
||||
"_type": "post",
|
||||
"title": "New Post",
|
||||
"slug": {"_type": "slug", "current": "new-post"},
|
||||
"body": [{"_type": "block", "children": [{"_type": "span", "text": "Hello"}]}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Use `createOrReplace` instead if you want to upsert (requires `_id` field).
|
||||
|
||||
### Delete document
|
||||
|
||||
```bash
|
||||
POST https://{projectId}.api.sanity.io/v2024-01-01/data/mutate/{dataset}
|
||||
|
||||
{
|
||||
"mutations": [
|
||||
{"delete": {"id": "document-id"}}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Patch document
|
||||
|
||||
```bash
|
||||
POST https://{projectId}.api.sanity.io/v2024-01-01/data/mutate/{dataset}
|
||||
|
||||
{
|
||||
"mutations": [
|
||||
{
|
||||
"patch": {
|
||||
"id": "document-id",
|
||||
"set": {"title": "Updated Title"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## CLI Commands
|
||||
|
||||
```bash
|
||||
# Create a new Sanity project
|
||||
sanity init
|
||||
|
||||
# Start the studio locally
|
||||
sanity dev
|
||||
|
||||
# Deploy studio to Sanity hosting
|
||||
sanity deploy
|
||||
|
||||
# Export dataset
|
||||
sanity dataset export production ./backup.tar.gz
|
||||
|
||||
# Import dataset
|
||||
sanity dataset import ./data.ndjson production
|
||||
|
||||
# List datasets
|
||||
sanity dataset list
|
||||
|
||||
# Run a GROQ query
|
||||
sanity documents query '*[_type == "post"][0..9]{title, slug}'
|
||||
```
|
||||
|
||||
## Key Objects
|
||||
|
||||
- **Document** — Top-level content item with `_id`, `_type`, `_rev`
|
||||
- **Asset** — Images and files stored in Sanity CDN
|
||||
- **Reference** — Link between documents (`{_type: "reference", _ref: "doc-id"}`)
|
||||
- **Portable Text** — Rich text as structured array of blocks
|
||||
- **Dataset** — Isolated content database (e.g., `production`, `staging`)
|
||||
- **Slug** — URL-friendly identifier (`{_type: "slug", current: "my-slug"}`)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Structured content for marketing sites and blogs
|
||||
- Multi-channel content delivery (web, mobile, email)
|
||||
- Real-time collaborative editing workflows
|
||||
- Content-heavy sites with complex models
|
||||
- Next.js or React-based frontends
|
||||
|
||||
## Rate Limits
|
||||
|
||||
Rate limits vary by plan. Documented defaults:
|
||||
|
||||
- CDN API (queries): High throughput, globally distributed (no hard per-second cap published)
|
||||
- API (without CDN): Rate-limited per project (varies by plan)
|
||||
- Mutations: Rate-limited per project (varies by plan)
|
||||
- See [Sanity technical limits](https://www.sanity.io/docs/technical-limits) for current values
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- content-strategy (CMS selection, content modeling)
|
||||
- programmatic-seo (CMS as data source for generated pages)
|
||||
- site-architecture (URL structure from CMS slugs)
|
||||
@@ -0,0 +1,167 @@
|
||||
# Strapi
|
||||
|
||||
Open-source headless CMS with self-hosted option, REST and GraphQL APIs, and customizable admin panel. Targets Strapi 5.
|
||||
|
||||
## Capabilities
|
||||
|
||||
| Integration | Available | Notes |
|
||||
|-------------|-----------|-------|
|
||||
| API | ✓ | REST (default), GraphQL (plugin) |
|
||||
| MCP | - | No official MCP server |
|
||||
| CLI | ✓ | `strapi` CLI for project setup, content types, plugins |
|
||||
| SDK | ✓ | `@strapi/sdk-js`, `@strapi/blocks-react-renderer` |
|
||||
|
||||
## Authentication
|
||||
|
||||
- **Type**: API Token or Users & Permissions JWT
|
||||
- **Header**: `Authorization: Bearer {api_token}`
|
||||
- **Tokens**: Create in Settings → API Tokens (full access, read-only, or custom)
|
||||
- **JWT**: `POST /api/auth/local` with identifier + password returns JWT
|
||||
|
||||
## Common Agent Operations
|
||||
|
||||
### List documents
|
||||
|
||||
```bash
|
||||
GET http://localhost:1337/api/articles?populate=*
|
||||
|
||||
Authorization: Bearer {api_token}
|
||||
```
|
||||
|
||||
### Get single document
|
||||
|
||||
```bash
|
||||
GET http://localhost:1337/api/articles/{documentId}?populate=*
|
||||
|
||||
Authorization: Bearer {api_token}
|
||||
```
|
||||
|
||||
### Filter and sort
|
||||
|
||||
```bash
|
||||
# Filter by field
|
||||
GET http://localhost:1337/api/articles?filters[slug][$eq]=my-post
|
||||
|
||||
# Multiple filters
|
||||
GET http://localhost:1337/api/articles?filters[category][name][$eq]=Marketing&filters[publishedAt][$notNull]=true
|
||||
|
||||
# Sort
|
||||
GET http://localhost:1337/api/articles?sort=publishedAt:desc
|
||||
|
||||
# Pagination
|
||||
GET http://localhost:1337/api/articles?pagination[page]=1&pagination[pageSize]=10
|
||||
```
|
||||
|
||||
### Create document
|
||||
|
||||
```bash
|
||||
POST http://localhost:1337/api/articles
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {api_token}
|
||||
|
||||
{
|
||||
"data": {
|
||||
"title": "New Article",
|
||||
"slug": "new-article",
|
||||
"body": "Article content here",
|
||||
"category": "{category_documentId}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Update document
|
||||
|
||||
```bash
|
||||
PUT http://localhost:1337/api/articles/{documentId}
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {api_token}
|
||||
|
||||
{
|
||||
"data": {
|
||||
"title": "Updated Title"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Delete document
|
||||
|
||||
```bash
|
||||
DELETE http://localhost:1337/api/articles/{documentId}
|
||||
|
||||
Authorization: Bearer {api_token}
|
||||
```
|
||||
|
||||
### Get draft content
|
||||
|
||||
```bash
|
||||
# Strapi 5 uses status parameter (replaces v4 publicationState)
|
||||
GET http://localhost:1337/api/articles?status=draft
|
||||
|
||||
Authorization: Bearer {api_token}
|
||||
```
|
||||
|
||||
Publishing and unpublishing are managed through the Strapi admin panel or Document Service API (server-side). The public REST API does not expose dedicated publish/unpublish endpoints.
|
||||
|
||||
### Populate relations and components
|
||||
|
||||
```bash
|
||||
# Populate all relations
|
||||
GET http://localhost:1337/api/articles?populate=*
|
||||
|
||||
# Populate specific relations
|
||||
GET http://localhost:1337/api/articles?populate[0]=author&populate[1]=category
|
||||
|
||||
# Deep populate
|
||||
GET http://localhost:1337/api/articles?populate[author][populate]=avatar
|
||||
```
|
||||
|
||||
## CLI Commands
|
||||
|
||||
```bash
|
||||
# Create new Strapi project
|
||||
npx create-strapi@latest my-project
|
||||
|
||||
# Start development server
|
||||
strapi develop
|
||||
|
||||
# Build admin panel
|
||||
strapi build
|
||||
|
||||
# Generate content type
|
||||
strapi generate content-type
|
||||
|
||||
# Generate controller
|
||||
strapi generate controller
|
||||
|
||||
# Add GraphQL plugin
|
||||
npm install @strapi/plugin-graphql
|
||||
```
|
||||
|
||||
## Key Objects
|
||||
|
||||
- **Content Type** — Schema definition (collection type or single type)
|
||||
- **Document** — Content item identified by `documentId` (Strapi 5 pattern)
|
||||
- **Component** — Reusable field group (e.g., SEO fields, CTA block)
|
||||
- **Dynamic Zone** — Flexible content area accepting multiple component types
|
||||
- **Media** — Files managed through the Media Library
|
||||
- **Locale** — i18n locale for content translation (plugin-based)
|
||||
|
||||
## When to Use
|
||||
|
||||
- Self-hosted CMS with full data ownership
|
||||
- Budget-conscious projects (no per-seat pricing)
|
||||
- Custom admin panel or plugin requirements
|
||||
- Teams with DevOps capability
|
||||
- Projects needing both REST and GraphQL access
|
||||
|
||||
## Rate Limits
|
||||
|
||||
- Self-hosted: No built-in rate limits (configure via middleware or reverse proxy)
|
||||
- Strapi Cloud: Varies by plan
|
||||
- Recommended: Add rate limiting middleware for production APIs
|
||||
|
||||
## Relevant Skills
|
||||
|
||||
- content-strategy (CMS selection, content modeling)
|
||||
- programmatic-seo (CMS as data source for generated pages)
|
||||
- site-architecture (URL structure from CMS slugs)
|
||||
Reference in New Issue
Block a user