Compare commits

..

12 Commits

Author SHA1 Message Date
Corey Haines 0f39e12b76 Merge pull request #320 from coreyhaines31/development
Release v2.1.0: add sms skill + 5 SMS platform integrations
2026-05-21 16:46:11 -07:00
Corey Haines d36433703b feat: add sms skill + 5 SMS platform integration docs (#307)
New skill: skills/sms/
- SKILL.md (336 lines, under 500 limit): strategy, when SMS beats email,
  compliance overview, sequence types, copy guidelines, platform selection,
  measurement, common mistakes
- references/compliance.md: TCPA, A2P 10DLC, EU GDPR, CASL, Australia,
  opt-in disclosure templates, STOP/HELP response templates, audit checklist
- references/sequence-templates.md: full copy templates with character
  counts for welcome, abandoned cart, browse abandonment, post-purchase,
  win-back, promotional, transactional, re-engagement, replenishment, VIP
- references/platforms.md: platform deep-dives across Klaviyo SMS,
  Postscript, Attentive, Twilio, Plivo, AudienceTap, Brevo, SimpleTexting,
  Customer.io
- evals/evals.json: 6 evals covering getting started, abandoned cart,
  TCPA compliance, opt-out diagnosis, A2P throughput, emoji segment cost

New integration docs:
- tools/integrations/twilio.md
- tools/integrations/postscript.md
- tools/integrations/attentive.md
- tools/integrations/plivo.md
- tools/integrations/audiencetap.md

Registry + marketplace wiring:
- tools/REGISTRY.md: 5 new entries + new SMS / Messaging category section
- .claude-plugin/marketplace.json: bumped to 2.1.0, SMS added to plugin description
- VERSIONS.md: sms 1.0.0 + 2.1.0 changelog entry
- README.md: skill table re-sorted via sync-skills.js, sms added to ASCII flow

All 41 skills pass validation. sync-skills.js is idempotent on current state.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 16:44:47 -07:00
Corey Haines 114587831e Merge pull request #316 from coreyhaines31/development
Release v2.0.1: ai-seo Google guide alignment + image/video model refresh
2026-05-18 22:29:35 -07:00
Corey Haines 908500123b Merge pull request #315 from coreyhaines31/chore/sync-main-pre-v2.0.1
chore: sync development with vendor PRs landed on main
2026-05-18 22:28:29 -07:00
Corey Haines 0fd7bb5ad9 merge main into development (sync vendor PRs landed on main) before v2.0.1 release 2026-05-18 22:27:56 -07:00
Corey Haines 4b54b0dd6f chore(release): bump to v2.0.1 (#314)
Patch release rolling up two content updates that just landed:

- ai-seo (#313): aligned with Google's official AI features optimization
  guide — Google's stance, query fan-out, agentic experiences (UCP),
  what-not-to-do, Search Console expectations; reframed
  llms.txt/pricing.md/schema as "not required by Google but helpful for
  non-Google AI engines"; moved content-type tactics to
  references/content-types.md
- image (#311): refreshed model lineup to current May 2026 releases —
  Nano Banana family, Flux Pro 1.1 + Kontext, Ideogram 3.0, ChatGPT
  Images 2.0, Midjourney v7, Recraft V3, SD 3.5 / SDXL
- video (#311): refreshed model lineup — Sora 2 promoted from
  limited-availability caveat, Kling 2.5/3.0, added Seedance, Hailuo /
  MiniMax, Hunyuan Video / Wan 2, Pika 2.x; new "Quick picks" guide

No new skills, no breaking changes. Only the three affected SKILL.md
files bumped to 2.0.1; the other 37 stay at 2.0.0.

- marketplace.json: 2.0.0 → 2.0.1
- VERSIONS.md: ai-seo, image, video rows bumped; 2.0.1 changelog entry
  added
- skills/{ai-seo,image,video}/SKILL.md: metadata.version → 2.0.1

All 40 skills pass validation. sync-skills.js still no-op.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 22:26:38 -07:00
Corey Haines 8b0a54eef9 fix(ai-seo): align with Google's official AI features optimization guide (#313)
Source: https://developers.google.com/search/docs/fundamentals/ai-optimization-guide

The skill was framed as "optimize for AI systems," which mis-states Google's
explicit position: AI Overviews and AI Mode are powered by core Search ranking,
so SEO best practices ARE the optimization strategy. Don't write separate
content "for AI."

The structural patterns the skill recommends (FAQ schema, comparison tables,
40-60 word answer blocks, llms.txt, /pricing.md) still help non-Google AI
engines (ChatGPT, Claude, Perplexity, Copilot) materially. The skill now
calls out the platform split explicitly rather than implying universal
benefit.

Major changes:

- New section "Google's Official Stance vs. Multi-Platform Reality":
  Frames Google's "don't optimize for AI" position alongside the reality that
  other AI engines reward extractable structure. Quotes Google's own
  phrasing.

- New section "Query Fan-Out (Google AI Search)":
  Explains Google's documented behavior of generating concurrent related
  queries. Reframes content strategy from per-query targeting to topical
  cluster coverage.

- New section "Agentic Experiences":
  Browser agents accessing sites via visual rendering, DOM inspection, and
  accessibility tree. Semantic HTML, JS-free meaningful render, clean a11y
  tree. Mentions the emerging Universal Commerce Protocol (UCP).

- New section "What NOT to Do":
  Explicit Google guidance: don't write for AI, don't chunk content for AI,
  don't scale variations (scaled content abuse spam policy), don't pursue
  inauthentic mentions, don't block AI crawlers if you want citation.

- Machine-Readable Files section reframed:
  Now opens with Google's stance ("not required") + the reason to include
  them anyway (non-Google AI engines).

- Schema markup note reframed:
  Notes Google's position that structured data is "not required for
  generative AI search" but still recommended.

- Search Console expectations added:
  Sets correct expectation that no AI-specific Search Console reporting
  exists; standard SEO metrics + third-party tools are the measurement
  options.

- Moved "AI SEO for Different Content Types" to references/content-types.md:
  Kept SKILL.md under 500 lines. Added a local-business/ecom subsection
  (Merchant Center + Google Business Profile + Business Agent) per
  Google's emphasis.

All 40 skills still pass validation.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 22:24:17 -07:00
Corey Haines c08ae5ff3d fix: refresh image + video model lists to current releases (May 2026) (#311)
Video (skills/video/SKILL.md):
- Sora 2 promoted from "limited availability" caveat to a first-class model
- Kling updated to 2.5/3.0 from Kuaishou
- Added Seedance (ByteDance) as a fast, low-cost batch option
- Added Hailuo / MiniMax for character-consistency use case
- Pika updated to 2.x
- Added Hunyuan Video / Wan 2 (open-weight, self-hosted)
- New "Quick picks" guide for cinematic / batch / character-consistent /
  self-hosted / storyboard / image-to-video use cases
- Trigger phrases updated to include Sora, Seedance, Hailuo, MiniMax,
  Hunyuan, Wan

Image (skills/image/SKILL.md):
- Gemini Image labelled with Nano Banana / Nano Banana Pro family names
- Flux entry annotates Pro 1.1, Kontext, Dev, Schnell variants (Kontext for
  in-image editing)
- Ideogram bumped to 3.0
- GPT Image entry renamed to "ChatGPT Images 2.0 / GPT Image" reflecting the
  newer family
- Midjourney bumped to v7
- Added Recraft V3 for vector + brand illustration use case
- Stable Diffusion 3.5 / SDXL specifics noted
- Updated "When to Use Which" decision tree to match
- Trigger phrases updated to include Flux Kontext, ChatGPT Images, Nano
  Banana, Recraft

All 40 skills still pass validation.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 22:24:09 -07:00
Salvatore Apicella dc7fea85bf Update tool names for static ad images category (#269)
New model to generate images is released by OpenAI, it can be used to improve ad generation
2026-05-18 14:06:44 -07:00
Teo 4b37de5228 feat: add Exa AI-powered search tool (#266)
Adds Exa as an AI search integration for content research, competitor
discovery, link prospecting, news monitoring, and audience research.

- CLI (tools/clis/exa.js): zero-dep Node.js wrapper for /search,
  /findSimilar, and /contents with neural/auto/fast/deep search types,
  category + domain + text + date filtering, and composable content
  retrieval (text, highlights, summary) in a single request
- Integration guide (tools/integrations/exa.md): auth, endpoints,
  common agent operations, parameters, and linked skills
- Registry entry under new 'AI Search' category + MCP-enabled list
- Uses EXA_API_KEY env var with --dry-run support and masked credentials
2026-05-18 14:05:40 -07:00
Abhi Bavishi 75e8221af8 Add RankParse to SEO tools registry (#304)
RankParse is an agent-friendly SEO data API offering backlinks, domain
authority, tech stack, and on-page metadata at credit-based pricing.

- New integration guide: tools/integrations/rankparse.md
- New CLI wrapper: tools/clis/rankparse.js
- Registry entry under SEO category (API + MCP + CLI)
2026-05-18 14:05:36 -07:00
Berner Setterwall 148fe208ed feat: add cogny MCP gateway to tools registry (#275)
* feat: add cogny MCP gateway to tools registry

Adds Cogny as an integration-layer entry alongside Composio. Cogny is a
marketing-focused MCP gateway (Search Console, Bing Webmaster, Semrush,
LinkedIn / Reddit / TikTok Ads, Plausible, Fathom) with managed OAuth
and a per-channel MCP URL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(cogny): use federated app.cogny.com/mcp endpoint and claude.ai connector setup

Switches the setup instructions and examples from the per-channel
mcp.cogny.com URLs to the federated https://app.cogny.com/mcp endpoint,
using the Claude.ai custom-connector flow (Settings → Connectors → Add
custom connector). Drops the per-channel path columns and the vendor-
review framing since they aren't needed for the federated setup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 14:04:33 -07:00
25 changed files with 3103 additions and 76 deletions
+2 -2
View File
@@ -6,13 +6,13 @@
},
"metadata": {
"description": "Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, and growth",
"version": "2.0.0",
"version": "2.1.0",
"repository": "https://github.com/coreyhaines31/marketingskills"
},
"plugins": [
{
"name": "marketing-skills",
"description": "40 marketing skills for technical marketers and founders: CRO, copywriting, cold email, SEO, AI SEO, paid ads, ad creative, video production, image generation, co-marketing, churn prevention, pricing, referrals, revenue operations, sales enablement, customer research, site architecture, and more",
"description": "41 marketing skills for technical marketers and founders: CRO, copywriting, cold email, SEO, AI SEO, paid ads, SMS, ad creative, video production, image generation, co-marketing, churn prevention, pricing, referrals, revenue operations, sales enablement, customer research, site architecture, and more",
"source": "./"
}
]
+2
View File
@@ -37,6 +37,7 @@ Skills reference each other and build on shared context. The `product-marketing`
│schema │ │paywalls │ │social │ │ │ │community │ │competitors │ │ │
│content │ │ │ │video │ │ │ │lead-magnt│ │comp-profile │ │ │
│aso │ │ │ │image │ │ │ │co-mktg │ │directory │ │ │
│ │ │ │ │sms │ │ │ │ │ │ │ │ │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬──────┘ └────┬─────┘ └──────┬──────┘ └─────┬─────┘
│ │ │ │ │ │ │
└────────────┴─────┬──────┴──────────────┴─────────────┴──────────────┴──────────────┘
@@ -93,6 +94,7 @@ See each skill's **Related Skills** section for the full dependency map.
| [seo-audit](skills/seo-audit/) | When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO... |
| [signup](skills/signup/) | When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the... |
| [site-architecture](skills/site-architecture/) | When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal... |
| [sms](skills/sms/) | When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts,... |
| [social](skills/social/) | When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram,... |
| [video](skills/video/) | When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use... |
<!-- SKILLS:END -->
+18 -3
View File
@@ -6,7 +6,7 @@ Current versions of all skills. Agents can compare against local versions to che
|-------|---------|--------------|
| ab-testing | 2.0.0 | 2026-05-05 |
| ad-creative | 2.0.0 | 2026-05-05 |
| ai-seo | 2.0.0 | 2026-05-05 |
| ai-seo | 2.0.1 | 2026-05-18 |
| analytics | 2.0.0 | 2026-05-05 |
| aso | 2.0.0 | 2026-05-05 |
| churn-prevention | 2.0.0 | 2026-05-05 |
@@ -23,7 +23,7 @@ Current versions of all skills. Agents can compare against local versions to che
| directory-submissions | 2.0.0 | 2026-05-05 |
| emails | 2.0.0 | 2026-05-05 |
| free-tools | 2.0.0 | 2026-05-05 |
| image | 2.0.0 | 2026-05-05 |
| image | 2.0.1 | 2026-05-18 |
| launch | 2.0.0 | 2026-05-05 |
| lead-magnets | 2.0.0 | 2026-05-05 |
| marketing-ideas | 2.0.0 | 2026-05-05 |
@@ -42,11 +42,26 @@ Current versions of all skills. Agents can compare against local versions to che
| seo-audit | 2.0.0 | 2026-05-05 |
| signup | 2.0.0 | 2026-05-05 |
| site-architecture | 2.0.0 | 2026-05-05 |
| sms | 1.0.0 | 2026-05-21 |
| social | 2.0.0 | 2026-05-05 |
| video | 2.0.0 | 2026-05-05 |
| video | 2.0.1 | 2026-05-18 |
## Recent Changes
### 2.1.0 (2026-05-21)
- Added `sms` skill for SMS/MMS marketing — welcome flows, abandoned cart, post-purchase, win-back, promotional sends, and transactional/auth. Includes compliance reference (TCPA, A2P 10DLC, GDPR, CASL), sequence templates with character counts, and platform comparison (Klaviyo, Postscript, Attentive, Twilio, Brevo, SimpleTexting, Customer.io).
- Total skills: 41
### 2.0.1 (2026-05-18)
Content patch — no breaking changes, no new skills.
- **ai-seo** (2.0.0 → 2.0.1): aligned with Google's official AI features optimization guide. Added sections for Google's stance on AI optimization, query fan-out, agentic experiences (including UCP), explicit "what NOT to do" (scaled content abuse, etc.), and Search Console expectations. Reframed llms.txt / pricing.md / schema markup recommendations as "Google says not required, helpful for non-Google AI engines." Moved content-type tactics to `references/content-types.md` (added local/ecom Merchant Center + Business Profile guidance per Google).
- **image** (2.0.0 → 2.0.1): refreshed model lineup to current May 2026 releases — Nano Banana / Nano Banana Pro family naming, Flux Pro 1.1 + Kontext + Dev + Schnell variants, Ideogram 3.0, ChatGPT Images 2.0 / GPT Image, Midjourney v7, Recraft V3, SD 3.5 / SDXL. Updated decision tree and trigger phrases.
- **video** (2.0.0 → 2.0.1): refreshed model lineup — Sora 2 promoted from limited-availability caveat, Kling 2.5/3.0, added Seedance (ByteDance), Hailuo / MiniMax (character consistency), Hunyuan Video / Wan 2 (open-weight self-hosted), Pika 2.x. New "Quick picks" guide.
Total skills: 40 (unchanged).
### 2.0.0 (2026-05-05)
**Breaking changes** — Users must reinstall skills after this update.
@@ -8,7 +8,7 @@ Reference for using AI image generators, video generators, and code-based video
| Need | Tool Category | Best Fit |
|------|---------------|----------|
| Static ad images (banners, social) | Image generation | Nano Banana Pro, Flux, Ideogram |
| Static ad images (banners, social) | Image generation | ChatGPT Images 2.0, Nano Banana Pro, Flux, Ideogram |
| Ad images with text overlays | Image generation (text-capable) | Ideogram, Nano Banana Pro |
| Short video ads (6-30 sec) | Video generation | Veo, Kling, Runway, Sora, Seedance |
| Video ads with voiceover | Video gen + voice | Veo/Sora (native), or Runway + ElevenLabs |
+86 -44
View File
@@ -2,7 +2,7 @@
name: ai-seo
description: "When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers. Also use when the user mentions 'AI SEO,' 'AEO,' 'GEO,' 'LLMO,' 'answer engine optimization,' 'generative engine optimization,' 'LLM optimization,' 'AI Overviews,' 'optimize for ChatGPT,' 'optimize for Perplexity,' 'AI citations,' 'AI visibility,' 'zero-click search,' 'how do I show up in AI answers,' 'LLM mentions,' or 'optimize for Claude/Gemini.' Use this whenever someone wants their content to be cited or surfaced by AI assistants and AI search engines. For traditional technical and on-page SEO audits, see seo-audit. For structured data implementation, see schema."
metadata:
version: 2.0.0
version: 2.0.1
---
# AI SEO
@@ -66,6 +66,45 @@ In traditional search, you need to rank on page 1. In AI search, a well-structur
- Optimized content gets cited 3x more often than non-optimized
- Statistics and citations boost visibility by 40%+ across queries
### Google's Official Stance vs. Multi-Platform Reality
This is important to read once before doing anything else.
**Google's position** ([AI features optimization guide](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide)):
> "The best practices for SEO continue to be relevant because our generative AI features on Google Search are rooted in our core Search ranking and quality systems."
Google explicitly says:
- **No special markup or files are required** for AI Overviews or AI Mode
- **Don't chunk content for AI** — write for people, organize with normal headings and paragraphs
- **Don't write separate content for AI** — that risks "scaled content abuse" spam policy
- **Helpful, reliable, people-first content** wins — same E-E-A-T standards as regular Search
- **No AI-specific Search Console reporting** — use standard SEO metrics
**Other AI engines (ChatGPT, Claude, Perplexity, Copilot) behave differently:**
- They actively reward extractable structure — passages, FAQs, comparison tables, definition blocks
- They parse `llms.txt`, structured pricing pages, and machine-readable files when present
- They cite third-party sources (Reddit, Wikipedia, review sites) more heavily than top-ranked pages
**What this means for the work:**
- The structural patterns in this skill (4060 word answer blocks, FAQ schema, comparison tables) help **non-Google AI engines** materially. They also don't hurt Google — they're just normal good content organization.
- For Google AI Overviews / AI Mode specifically: optimize for people and core Search, full stop. Strong E-E-A-T, original information, semantic HTML, clean indexability.
- For ChatGPT/Claude/Perplexity: layer on the extractable structure + llms.txt + machine-readable files.
When in doubt, default to "write for people, organize for clarity" — that satisfies both camps.
### Query Fan-Out (Google AI Search)
Google's AI features don't just answer the one query a user typed — they generate **concurrent, related queries** under the hood and retrieve results for each.
Google's own example: a user asking "how to fix lawns" triggers fan-out queries about herbicides, chemical-free removal, weed prevention, etc. The AI synthesizes across all of them.
**Implications:**
- Single-page-per-keyword targeting is less effective. Cover the **full topical cluster** so you're retrievable for the fan-out variants too.
- Long-tail intent matters less than topical authority — Google's AI systems understand synonyms and semantic equivalence.
- A page that comprehensively answers a parent topic (with sub-questions covered) will be retrieved more often than narrow per-query pages.
**Action**: when planning content, brainstorm the 510 related queries the AI is likely to fan out to and make sure your content (or your site as a whole) covers them.
---
## AI Visibility Audit
@@ -228,6 +267,10 @@ AI systems don't just cite your website — they cite where you appear.
### Machine-Readable Files for AI Agents
> **Google's stance**: not required for AI Overviews or AI Mode. Their guide explicitly says you don't need new markup, AI files, or markdown to appear in generative AI search.
>
> **Why include them anyway**: non-Google AI engines (ChatGPT, Claude, Perplexity) and autonomous buying agents do reward extractable structure. The files below help with those engines without harming Google.
AI agents aren't just answering questions — they're becoming buyers. When an AI agent evaluates tools on behalf of a user, it needs structured, parseable information. If your pricing is locked in a JavaScript-rendered page or a "contact sales" wall, agents will skip you and recommend competitors whose information they can actually read.
Add these machine-readable files to your site root:
@@ -284,7 +327,32 @@ Structured data helps AI systems understand your content. Key schemas:
| Reviews | `Review`, `AggregateRating` | Trust signals |
| Organization | `Organization` | Entity recognition |
Content with proper schema shows 30-40% higher AI visibility. For implementation, use the **schema** skill.
Content with proper schema shows 30-40% higher AI visibility on non-Google AI engines. **Google's note**: structured data is "not required for generative AI search" but is recommended for overall SEO strategy. For implementation, use the **schema** skill.
---
## Agentic Experiences
Beyond AI search engines summarizing content, autonomous agents are starting to access sites directly — clicking, reading, comparing, even buying on behalf of users. Google's guide flags this as an emerging category to plan for.
**How agents access your site:**
- **Visual rendering** — they screenshot/read the page like a user would
- **DOM inspection** — they parse the page's HTML structure
- **Accessibility tree** — they rely on the same semantic information assistive tech uses (labels, roles, landmarks, headings)
**What to do:**
- **Render meaningful content without heavy JS gymnastics** — if the page is blank until 4 frameworks finish loading, agents see blank
- **Semantic HTML** — use `<main>`, `<nav>`, `<article>`, `<button>`, proper heading hierarchy, `alt` text on images
- **Clean accessibility tree** — every interactive element labelled; ARIA used correctly (or not at all when native HTML suffices)
- **Stable selectors / predictable layouts** — agents struggle with sites that re-render every interaction
- **Visible pricing, specs, contact info** — anything an agent would need to make a buying recommendation should be on a public, indexable page (this is where `/pricing.md` and similar files help)
**Emerging — Universal Commerce Protocol (UCP):**
Google references UCP as a forthcoming protocol that will give agents standardized hooks for commerce interactions (catalog discovery, pricing, checkout). Watch for adoption; for now, the structural recommendations above are the precursor.
For ecom and local business specifically, Google highlights:
- **Merchant Center feeds** + **Google Business Profile** for product/service visibility in AI Search
- **Business Agent** for conversational customer engagement (where applicable)
---
@@ -340,55 +408,29 @@ Monthly manual check:
3. Record: Are you cited? Who is? What page?
4. Log in a spreadsheet, track month-over-month
### Search Console expectations
Google's guide is explicit: **there is no AI-specific Search Console reporting**. AI Overviews and AI Mode use core Search ranking, so the standard Search Console reports (Performance, Coverage, Core Web Vitals) are still what you measure with for Google. The third-party tools above are the only way to see cross-platform AI citation behavior.
---
## AI SEO for Different Content Types
## What NOT to Do
### SaaS Product Pages
Google's guide calls these out explicitly — they hurt across both traditional Search and AI features.
**Goal:** Get cited in "What is [category]?" and "Best [category]" queries.
1. **Write separate content "for AI"**. Same content should serve people and AI. Writing variants targeted at AI systems risks the **scaled content abuse spam policy** — Google's words.
2. **Chunk pages into AI-bait fragments**. Google's guide is direct: *"Don't break your content into tiny pieces for AI to better understand it."* Use normal paragraph + heading structure.
3. **Generate at scale for ranking manipulation**. AI-generated content is fine *if* it meets Search Essentials and spam policies. Mass-producing thin variations does not.
4. **Pursue inauthentic mentions**. Don't fabricate citations or bulk-spam Reddit/Wikipedia for AI visibility. Real participation only.
5. **Block AI crawlers if you want citation**. Blocking GPTBot, PerplexityBot, ClaudeBot, Google-Extended means those engines literally cannot cite you. Block training-only crawlers (CCBot) if you must, not the search-and-cite ones.
6. **Hide your main content behind JS that doesn't render**. Both core Search and AI agents need to see your content; JS-only rendering loses both audiences.
7. **Skip E-E-A-T fundamentals**. Author identity, first-hand experience, expertise signals, transparent sourcing — Google's guide leans heavily on these for AI features.
**Optimize:**
- Clear product description in first paragraph (what it does, who it's for)
- Feature comparison tables (you vs. category, not just competitors)
- Specific metrics ("processes 10,000 transactions/sec" not "blazing fast")
- Customer count or social proof with numbers
- Pricing transparency (AI cites pages with visible pricing) — add a `/pricing.md` file so AI agents can parse your plans without rendering your page (see "Machine-Readable Files" above)
- FAQ section addressing common buyer questions
---
### Blog Content
## AI SEO by Content Type
**Goal:** Get cited as an authoritative source on topics in your space.
**Optimize:**
- One clear target query per post (match heading to query)
- Definition in first paragraph for "What is" queries
- Original data, research, or expert quotes
- "Last updated" date visible
- Author bio with relevant credentials
- Internal links to related product/feature pages
### Comparison/Alternative Pages
**Goal:** Get cited in "[X] vs [Y]" and "Best [X] alternatives" queries.
**Optimize:**
- Structured comparison tables (not just prose)
- Fair and balanced (AI penalizes obviously biased comparisons)
- Specific criteria with ratings or scores
- Updated pricing and feature data
- Cite the competitors skill for building these pages
### Documentation / Help Content
**Goal:** Get cited in "How to [X] with [your product]" queries.
**Optimize:**
- Step-by-step format with numbered lists
- Code examples where relevant
- HowTo schema markup
- Screenshots with descriptive alt text
- Clear prerequisites and expected outcomes
For tactical guidance on SaaS product pages, blog content, comparison/alternative pages, documentation, and local/ecom (Google's emphasis on Merchant Center + Business Profile), see [references/content-types.md](references/content-types.md).
---
+71
View File
@@ -0,0 +1,71 @@
# AI SEO by Content Type
Tactical guidance for optimizing specific content types for AI search citation. These tactics work for non-Google AI engines (ChatGPT, Claude, Perplexity, Copilot) and don't hurt Google AI Overviews / AI Mode.
For the cross-cutting strategy, see [SKILL.md](../SKILL.md).
---
## SaaS Product Pages
**Goal:** Get cited in "What is [category]?" and "Best [category]" queries.
**Optimize:**
- Clear product description in first paragraph (what it does, who it's for)
- Feature comparison tables (you vs. category, not just competitors)
- Specific metrics ("processes 10,000 transactions/sec" not "blazing fast")
- Customer count or social proof with numbers
- Pricing transparency (AI cites pages with visible pricing) — add a `/pricing.md` file so AI agents can parse your plans without rendering your page (see "Machine-Readable Files" in the main skill)
- FAQ section addressing common buyer questions
---
## Blog Content
**Goal:** Get cited as an authoritative source on topics in your space.
**Optimize:**
- One clear target query per post (match heading to query)
- Definition in first paragraph for "What is" queries
- Original data, research, or expert quotes
- "Last updated" date visible
- Author bio with relevant credentials
- Internal links to related product/feature pages
---
## Comparison / Alternative Pages
**Goal:** Get cited in "[X] vs [Y]" and "Best [X] alternatives" queries.
**Optimize:**
- Structured comparison tables (not just prose)
- Fair and balanced (AI penalizes obviously biased comparisons)
- Specific criteria with ratings or scores
- Updated pricing and feature data
- Cite the `competitors` skill for building these pages
---
## Documentation / Help Content
**Goal:** Get cited in "How to [X] with [your product]" queries.
**Optimize:**
- Step-by-step format with numbered lists
- Code examples where relevant
- HowTo schema markup
- Screenshots with descriptive alt text
- Clear prerequisites and expected outcomes
---
## Local Business / Ecom (Google emphasis)
Google's AI features pull from product feeds and business profiles for local + ecom queries. Optimize:
- **Merchant Center feeds** kept current with accurate inventory, pricing, attributes
- **Google Business Profile** complete with hours, services, photos, posts, Q&A answered
- **Reviews** — recent + sufficient volume; respond to reviews to signal active management
- **Service area schema** for local services
- **Business Agent** (where available) for conversational customer engagement
+22 -17
View File
@@ -1,8 +1,8 @@
---
name: image
description: "When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets. Also use when the user mentions 'AI image generation,' 'generate an image,' 'create a graphic,' 'product mockup,' 'hero image,' 'social media graphic,' 'banner image,' 'cover photo,' 'profile banner,' 'listing screenshot,' 'Flux,' 'Midjourney,' 'DALL-E,' 'GPT Image,' 'Ideogram,' 'Gemini image,' 'Canva,' 'Figma,' 'image optimization,' 'compress images,' 'WebP,' or 'OG image.' Use this for general-purpose marketing image creation and optimization. For paid ad image creative and platform-specific ad specs, see ad-creative. For video production, see video."
description: "When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets. Also use when the user mentions 'AI image generation,' 'generate an image,' 'create a graphic,' 'product mockup,' 'hero image,' 'social media graphic,' 'banner image,' 'cover photo,' 'profile banner,' 'listing screenshot,' 'Flux,' 'Flux Kontext,' 'Midjourney,' 'DALL-E,' 'GPT Image,' 'ChatGPT Images,' 'Ideogram,' 'Gemini image,' 'Nano Banana,' 'Recraft,' 'Stable Diffusion,' 'Canva,' 'Figma,' 'image optimization,' 'compress images,' 'WebP,' or 'OG image.' Use this for general-purpose marketing image creation and optimization. For paid ad image creative and platform-specific ad specs, see ad-creative. For video production, see video."
metadata:
version: 2.0.0
version: 2.0.1
---
# Image
@@ -55,36 +55,41 @@ Generate original images from text prompts. The fastest way to create unique mar
| Model | Best For | Text in Images | API | Cost |
|-------|----------|:-:|-----|------|
| **Gemini Image** (Google) | All-around, editing, text rendering | Good | [Gemini API](https://ai.google.dev/gemini-api/docs/image-generation) | Check [pricing](https://ai.google.dev/gemini-api/docs/pricing) |
| **Flux** (Black Forest Labs) | Photorealism, brand consistency, batch | Limited | [BFL API](https://docs.bfl.ai/), Replicate, fal.ai | Check [pricing](https://docs.bfl.ai/quick_start/pricing) |
| **Ideogram** | Typography, branded graphics | Best | [Ideogram API](https://developer.ideogram.ai/) | Check [pricing](https://about.ideogram.ai/api-pricing) |
| **GPT Image** (OpenAI) | General purpose, ChatGPT integration | Good | [OpenAI API](https://platform.openai.com/docs/guides/image-generation) | Check [pricing](https://platform.openai.com/docs/pricing) |
| **Midjourney** | Artistic, high-aesthetic | Poor | No official API | Subscription-based |
| **Stable Diffusion** | Self-hosted, customizable | Varies | Open source | Free (GPU costs) |
| **Gemini Image** (Google, "Nano Banana" / Nano Banana Pro) | All-around, editing, multi-image reference, text rendering | Good | [Gemini API](https://ai.google.dev/gemini-api/docs/image-generation) | Check [pricing](https://ai.google.dev/gemini-api/docs/pricing) |
| **Flux** (Black Forest Labs — Pro 1.1, Kontext, Dev, Schnell) | Photorealism, brand consistency, batch; Kontext for in-image editing | Limited | [BFL API](https://docs.bfl.ai/), Replicate, fal.ai | Check [pricing](https://docs.bfl.ai/quick_start/pricing) |
| **Ideogram 3.0** | Typography, branded graphics, accurate text rendering | Best | [Ideogram API](https://developer.ideogram.ai/) | Check [pricing](https://about.ideogram.ai/api-pricing) |
| **ChatGPT Images 2.0 / GPT Image** (OpenAI) | General purpose, ChatGPT integration, native editing | Good | [OpenAI API](https://platform.openai.com/docs/guides/image-generation) | Check [pricing](https://platform.openai.com/docs/pricing) |
| **Midjourney v7** | Artistic, high-aesthetic, art-directed visuals | Improved | No official API; Discord + Web | Subscription-based |
| **Recraft V3** | Vector + brand-consistent illustrations, design assets | Strong | [Recraft API](https://www.recraft.ai/docs) | Per-credit |
| **Stable Diffusion 3.5 / SDXL** | Self-hosted, customizable, fine-tunable | Varies | Open source | Free (GPU costs) |
**Note:** DALL-E 3 is deprecated. OpenAI's current image models are the GPT Image family (`gpt-image-1`, etc.).
**Note:** DALL-E 3 is fully deprecated. OpenAI's current image models are the GPT Image / ChatGPT Images family (`gpt-image-1` and later).
### When to Use Which
```
Need text/headlines in the image?
├── Yes → Ideogram (best), Gemini (good), GPT Image (decent)
├── Yes → Ideogram 3.0 (best), Gemini (good), GPT Image / ChatGPT Images (decent)
└── No ↓
Need product/brand consistency across images?
├── Yes → Flux (multi-image reference)
Need product/brand consistency across many images?
├── Yes → Flux (multi-image reference), Gemini Nano Banana Pro, Recraft V3
└── No ↓
Need to edit an existing image?
├── Yes → Gemini (native editing), Flux Flex
Need to edit an existing image (in-place)?
├── Yes → Gemini (native editing), Flux Kontext, ChatGPT Images
└── No ↓
Need highest visual quality?
├── Yes → Flux Pro, Midjourney
Need vector / illustrative brand assets?
├── Yes → Recraft V3 (best for vector + brand consistency), Midjourney (artistic)
└── No ↓
Need highest visual quality / art direction?
├── Yes → Flux Pro 1.1, Midjourney v7
└── No ↓
Need volume at low cost?
└── Flux Klein, Gemini Flash
└── Flux Schnell, Gemini Flash, Stable Diffusion (self-hosted)
```
### Prompting Basics
+338
View File
@@ -0,0 +1,338 @@
---
name: sms
description: When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends, or transactional/auth SMS. Also use when the user mentions "SMS marketing," "text message campaigns," "SMS sequence," "SMS automation," "abandoned cart text," "post-purchase SMS," "Klaviyo SMS," "Postscript," "Attentive," "Twilio," "A2P 10DLC," "TCPA," "SMS compliance," "short code," "toll-free SMS," "MMS campaign," "should I do SMS," or "SMS vs email." For email sequences, see emails. For SMS copy framing, see copywriting. For opt-in popups that capture phone numbers, see popups.
metadata:
version: 1.0.0
---
# SMS Marketing
You are an expert in SMS and MMS marketing for direct-to-consumer brands, mobile apps, and SaaS products with high-engagement use cases. Your goal is to help plan, build, and optimize SMS programs that drive measurable revenue or activation while staying fully compliant with TCPA and carrier rules.
## Before Starting
**Check for product marketing context first:**
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, 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 Type
- B2C ecom / DTC, B2B SaaS, mobile app, services, fintech
- Order volume or list size (SMS economics depend on scale)
- Geographic mix (US, EU, both — compliance differs dramatically)
### 2. Current State
- Existing SMS program (platform, list size, opt-in rate, opt-out rate, revenue/send)
- Email program (SMS works best as a layer on top, not a replacement)
- Phone number type: short code, toll-free, long code (10DLC)
### 3. Compliance Posture
- US: A2P 10DLC registration complete? (Required since 2022 — without it, your messages get filtered)
- Opt-in mechanism in use? (Checkbox, keyword opt-in, double opt-in)
- Privacy policy + terms include SMS disclosures?
### 4. Goal
- Drive revenue (promotional, cart recovery, post-purchase)
- Drive activation (welcome, onboarding, milestone nudges)
- Transactional (order updates, auth codes, alerts)
---
## When SMS Beats Email
SMS is not "another email." Use it where the channel's properties win:
| Use Case | SMS or Email? | Why |
|----------|---------------|-----|
| Abandoned cart recovery | **SMS first** | 98% open rate within 3 min vs 20% for email in 24h |
| Order/shipping updates | **SMS** | Customers want it now, on their phone |
| Flash sale / limited drop | **SMS** | Urgency channel; immediate read |
| Auth codes / 2FA | **SMS** (or app) | Latency-sensitive, must arrive in seconds |
| Welcome series | **Email primary, SMS layer** | Email carries the long-form content |
| Educational nurture | **Email** | Too much text for SMS, costs add up |
| Newsletter | **Email** | Wrong channel for SMS |
| Win-back lapsed customers | **Both** | SMS for the strong nudge, email for the offer detail |
| Post-purchase upsell | **SMS** | High open rate, ride the purchase momentum |
**General rule**: SMS earns the right to interrupt because of opt-in. Use it for messages that genuinely benefit from immediacy. If it could wait 24 hours, send it via email.
---
## Compliance — Read First
**Compliance is the foundation, not an afterthought.** A single TCPA class-action settlement runs $5M$40M. The basics:
### US — TCPA (Telephone Consumer Protection Act)
1. **Express written consent** required for marketing SMS. Implied consent doesn't count.
2. **Clear disclosure at opt-in** must include: program name, frequency expectation ("up to 4 msgs/month"), STOP/HELP instructions, "Msg & data rates may apply," link to terms.
3. **Honor STOP/UNSUBSCRIBE within seconds**, every time, no exceptions, on every keyword variant (STOP, END, CANCEL, UNSUBSCRIBE, QUIT).
4. **Honor HELP** with a response containing brand name + STOP info + support contact.
5. **Quiet hours**: no marketing sends before 8am or after 9pm in the recipient's local time. Carrier rules and state laws (e.g., Florida, Oklahoma, Washington) are stricter than federal — default to 9am8pm recipient-local.
6. **Keep written consent records** with timestamp, opt-in source, and exact disclosure text shown. Auditable.
### US — A2P 10DLC Registration (required since 2022)
Application-to-Person 10-digit long codes must be registered through The Campaign Registry (TCR) via your SMS platform. Without registration:
- Throughput is throttled (or zero)
- Carriers filter your messages
- You'll see "delivered" status but recipients won't get them
**Registration covers**: brand identity verification, campaign use case (marketing, account notification, OTP, etc.), sample messages, opt-in mechanism, opt-out language. Sample message text from registration must match what you actually send.
### EU/UK — GDPR-derived consent
- Explicit opt-in required (no pre-checked boxes)
- Right to withdraw consent must be as easy as giving it
- Data subject access requests apply to SMS records
- ePrivacy Directive layered on top of GDPR
### Canada — CASL
- Express consent + sender identification + unsubscribe in every message
- Implied consent allowed for existing business relationships within 24 months
- Penalties up to CAD $10M per violation
**For full compliance details, edge cases, opt-in copy templates, and STOP/HELP response templates**: see [references/compliance.md](references/compliance.md).
---
## Phone Number Types (US)
| Type | Throughput | Cost | Use Case | Trust |
|------|-----------|------|----------|-------|
| **Short code (5-6 digit)** | 100+ msg/sec | $500$1,000/mo + setup | High-volume marketing | Highest (carrier-vetted) |
| **Toll-free (1-8XX)** | ~3 msg/sec | $10$30/mo | Mid-volume, B2C support | Medium-high (carrier-verified) |
| **10DLC (regular long code)** | 1250 msg/sec | $2$10/mo | SMB, conversational, transactional | Medium (requires A2P 10DLC reg) |
**Rule of thumb**: list <10K = 10DLC. List 10K100K = toll-free. List 100K+ = short code.
---
## Core Principles
### 1. Every send has a real cost
SMS isn't free. At $0.0075$0.04 per send + carrier fees, a 100K send costs $750$4,000. This forces relevance — you can't "blast." Segment hard.
### 2. Opt-in is your most valuable asset
Opt-in rate from email → SMS is typically 525%. A high-quality SMS list of 10K beats a low-quality list of 100K. Optimize opt-in quality, not volume.
### 3. Each message must justify itself
The recipient gave you their phone number. Every send should pass: "would I be glad I got this text?" If no, don't send.
### 4. Brevity + clarity
160 GSM-7 characters = 1 SMS segment. 161+ chars = 2 segments (you're billed for 2). Emojis force UCS-2 encoding (70 chars per segment). Plan for segment count.
### 5. One CTA, one link
Short links are mandatory (`klvy.co`, `txt.attn.tv`, branded short domain). Track UTM params on every link.
### 6. Sender identity, every send
"From [Brand]:" or branded short code at the start of every message. Even on automated flows. Recipients can't see "from" address — they need it inline.
---
## SMS Sequence Types
### Welcome / Opt-In Confirmation (immediate)
Send 1: Confirmation + reward (immediate)
> From Acme: Thanks for joining! Here's 10% off: ACME10. Use at checkout: acme.co/sale. Reply STOP to opt out.
Optional Send 2 (24h later): Reminder + best-seller showcase
### Abandoned Cart (highest-ROI flow for ecom)
- Send 1 (30 min after abandon): "Forget something? Your cart's still here: [short link]"
- Send 2 (4 hours later): Soft urgency + social proof
- Send 3 (24 hours later, optional): Discount offer (only if margin allows)
**Note**: Discount on first message trains customers to abandon. Reserve discount for Send 2 or 3.
### Browse Abandonment
- Send 1 (1 hour after browse): Product + "Thinking it over?" + link
### Post-Purchase
- Send 1 (immediate): Order confirmation + delivery ETA (transactional, separate consent OK)
- Send 2 (after delivery + 2 days): "How are you liking [product]?" + review prompt + cross-sell
### Win-Back (lapsed)
- Send 1 (6090 days after last purchase): "We miss you" + curated picks
- Send 2 (14 days later): Discount offer
- Send 3 (final, 14 days later): Opt-out warning + last chance
### Promotional / Campaign Sends
- Flash sales, drops, launches, BFCM
- 12 sends max per campaign
- Stack against email send schedule to avoid same-day double-tap
### Transactional (separate compliance bucket)
- Order updates, shipping, delivery, auth codes, account alerts
- Generally OK without separate marketing consent if directly related to a transaction the user initiated
- Still subject to A2P 10DLC registration in US
**For full sequence templates with copy and timing**: see [references/sequence-templates.md](references/sequence-templates.md).
---
## SMS Copy Guidelines
### Structure
1. **Sender ID** ("From Acme:" or brand short code) — required
2. **Hook** — first 5 words decide if they read on
3. **Value** — what's in it for them, specifically
4. **CTA + short link** — single action, single URL
5. **Compliance footer** — "Reply STOP to opt out" (required on opt-in confirmation and at least quarterly thereafter; carrier-recommended on every promotional message)
### Length
- **160 chars (GSM-7)** = 1 segment. Aim here.
- **70 chars (UCS-2)** if you use emojis, accented characters, or curly quotes — you'll pay for more segments.
- **161306 chars** = 2 segments (concatenated SMS). Acceptable for richer messages, but you're paying double per send.
- **MMS** (image + up to 1,600 chars) = 35× the SMS cost. Use sparingly for high-impact moments.
### Voice
- Conversational, not corporate. SMS feels personal — write like you're texting a friend.
- No subject line, no formatting, no marketing-speak.
- Emojis are fine in moderation (one per message, situationally).
- ALL CAPS reads as shouting. Avoid except for explicit codes (e.g., "Use ACME10").
### Personalization
- First name token if available (boosts CTR ~20%)
- Recent product/category browse-based
- Location-based offers (where applicable)
- Don't fake intimacy ("Hey friend!") — it backfires
**For complete copy patterns by sequence type with character counts**: see [references/sequence-templates.md](references/sequence-templates.md).
---
## Platform Selection
| Platform | Best For | Native MCP | Cost Tier |
|----------|----------|:---:|-----------|
| **Klaviyo SMS** | DTC ecom already on Klaviyo email | ✓ | $$ |
| **Postscript** | DTC Shopify ecom, deep integration | - | $$ |
| **Attentive** | Mid-market+ ecom, full-service | - | $$$ |
| **Twilio** | Custom builds, transactional, devs | - | $ (raw API) |
| **Brevo SMS** | EU-focused, email + SMS combo | ✓ | $ |
| **SimpleTexting** | SMB, simple needs, ease of use | - | $ |
| **Customer.io** | Behavior-based automation + SMS | - | $$ |
**Quick picks**:
- Already on Klaviyo for email + DTC/ecom → **Klaviyo SMS** (no second platform to learn)
- Shopify ecom, want deeper SMS-specific features → **Postscript**
- Building custom SMS into a product → **Twilio**
- B2B SaaS doing transactional/auth → **Twilio** or **Customer.io**
**For platform deep-dives (features, pricing, integration paths, A2P registration)**: see [references/platforms.md](references/platforms.md).
---
## Measurement
### Key Metrics
| Metric | What it tells you | Healthy range (ecom DTC) |
|--------|-------------------|--------------------------|
| **Opt-in rate** | Top of funnel health | 525% of email subscribers |
| **CTR** | Message relevance | 815% (vs ~3% email) |
| **Conversion rate (per send)** | Revenue impact | 15% per promotional send |
| **Revenue per send (RPS)** | Channel economics | $0.20$2.00 |
| **Opt-out rate per send** | Audience fatigue | <2% per send, <0.5% for promotional |
| **Cost per send** | Channel cost discipline | $0.0075$0.04 |
| **List growth rate** | Audience momentum | 515%/month early, 13% steady-state |
### What to track in analytics
- UTM tag every link: `utm_source=sms&utm_medium=sms&utm_campaign=[campaign-name]`
- Conversion attribution: SMS-driven sessions, last-click revenue, assisted conversions
- LTV impact: SMS subscribers vs email-only subscribers (typically 1.53× LTV for SMS opt-ins)
### What to A/B test
- Send time (afternoon vs evening, local time)
- Copy length (short SMS vs MMS with image)
- Discount amount and trigger (immediate vs delayed)
- Personalization tokens (with first name vs without)
- CTA copy ("Shop now" vs "See it" vs "Last chance")
Cross-reference **ab-testing** skill for proper test design and **analytics** for attribution setup.
---
## Output Format
When the user asks for an SMS plan, return:
1. **Compliance check**: Are they registered for A2P 10DLC (if US)? Is the opt-in mechanism compliant? Flag blockers first.
2. **Strategy**: Which SMS flows to build first, ranked by ROI for their business model.
3. **Sequence designs**: For each priority flow, specify trigger, delay, copy with character counts, CTA, segmentation.
4. **Platform recommendation**: Based on stack, list size, and complexity.
5. **Measurement plan**: KPIs, benchmarks, A/B test queue.
6. **Compliance footer**: Required disclosures, STOP/HELP response templates.
Keep recommendations specific. Don't say "send an SMS at the right time" — say "send 30 min after cart abandon, 4 hours later if no purchase, 24 hours later with discount."
---
## Task-Specific Questions
1. Are you US, EU, or both? (Changes compliance approach entirely.)
2. Is A2P 10DLC registration complete (US)?
3. What platform are you on or considering?
4. Email list size and SMS opt-in rate (if any)?
5. What sequences do you already have running?
6. Are you DTC ecom, mobile app, B2B SaaS, services?
7. What's the primary goal: revenue, activation, retention, or transactional?
---
## Common Mistakes
1. **Skipping A2P 10DLC registration** — your messages get filtered into oblivion. Register first, send second.
2. **Treating SMS like email** — sending daily promotional blasts. Opt-out rates spike, list dies.
3. **Discount on first abandoned cart message** — trains customers to always abandon. Reserve for second or third send.
4. **Generic "From: [shortcode]"** — recipients need brand name in the message itself.
5. **Forgetting quiet hours** — sending at 6 AM local time gets opt-outs and TCPA complaints.
6. **No STOP/HELP handling** — non-negotiable. Every platform handles this; verify yours does.
7. **Emojis everywhere** — pushes you into UCS-2 encoding, halves segment size, doubles cost.
8. **Mismatching A2P sample messages and actual sends** — carriers flag and block.
9. **Not tracking conversions** — you can't justify channel ROI without attribution.
10. **No throttling on bulk sends** — burst sends trigger carrier filtering. Use platform throttling.
---
## Tool Integrations
For implementation, see the [tools registry](../../tools/REGISTRY.md). Key SMS tools:
| Tool | Best For | MCP | Guide |
|------|----------|:---:|-------|
| **Klaviyo** | E-commerce email + SMS combined | ✓ | [klaviyo.md](../../tools/integrations/klaviyo.md) |
| **Postscript** | Shopify DTC SMS, deepest Shopify integration | - | [postscript.md](../../tools/integrations/postscript.md) |
| **Attentive** | Mid-market+ DTC SMS, full-service | - | [attentive.md](../../tools/integrations/attentive.md) |
| **Twilio** | Raw API for custom builds, transactional, dev-first | - | [twilio.md](../../tools/integrations/twilio.md) |
| **Plivo** | Twilio alternative, lower per-send cost | - | [plivo.md](../../tools/integrations/plivo.md) |
| **AudienceTap** | AI-forward DTC, on-pack QR opt-in | - | [audiencetap.md](../../tools/integrations/audiencetap.md) |
| **Brevo** | EU email + SMS, SMB-friendly | ✓ | [brevo.md](../../tools/integrations/brevo.md) |
| **Customer.io** | Behavior-based SMS automation | - | [customer-io.md](../../tools/integrations/customer-io.md) |
---
## Related Skills
- **emails**: Sister channel — almost always run together. Email carries the long-form content; SMS carries the urgent nudges.
- **copywriting**: For SMS copy at scale and the longer-form pages/emails that SMS links to.
- **popups**: For phone number capture popups on-site.
- **churn-prevention**: For win-back flows that combine SMS + email.
- **onboarding**: For post-signup SMS milestone nudges.
- **analytics**: For attribution and RPS measurement.
- **ab-testing**: For SMS-specific test design.
- **lead-magnets**: For incentivizing opt-in (the "10% off for joining" offer).
+100
View File
@@ -0,0 +1,100 @@
{
"skill_name": "sms",
"evals": [
{
"id": 1,
"prompt": "We're a Shopify DTC brand doing $5M/year in skincare. We have 80K email subscribers but no SMS program yet. Where do we start?",
"expected_output": "Should check for product-marketing.md first. Should run Phase 0 compliance check: are they US-based, is A2P 10DLC registration started, is the opt-in mechanism planned. Should recommend Klaviyo SMS or Postscript given Shopify + DTC ecom (Klaviyo if already on Klaviyo email, Postscript for SMS-first depth). Should rank flows by ROI for skincare: (1) abandoned cart sequence first (highest-ROI flow), (2) post-purchase + replenishment (skincare has predictable cycles), (3) welcome opt-in flow with capture incentive, (4) win-back at 60-90 days. Should warn about treating SMS like email (frequency cap, relevance bar, real per-send cost ~$0.0075-$0.04). Should reference compliance.md for opt-in disclosure language and quiet hours.",
"assertions": [
"Checks for product-marketing.md",
"Runs compliance/A2P 10DLC readiness check",
"Recommends Klaviyo SMS or Postscript with rationale",
"Prioritizes abandoned cart as highest-ROI flow",
"Mentions replenishment for skincare specifically",
"Warns about treating SMS like email",
"References compliance.md or opt-in disclosure requirements",
"Mentions per-send cost economics"
],
"files": []
},
{
"id": 2,
"prompt": "Write me an abandoned cart SMS sequence. We sell custom apparel, average order $80.",
"expected_output": "Should output a 3-message sequence following references/sequence-templates.md pattern. Should specify timing: Send 1 at 30 min after abandon (no discount, gentle reminder), Send 2 at 4 hours (soft urgency, no discount), Send 3 at 24 hours (discount allowed). Should include actual SMS copy with character counts (target 160 GSM-7 for 1 segment). Each message must start with sender ID 'From [Brand]:', have a single CTA + short link, and the first message should include 'Reply STOP to opt out' compliance footer. Should warn against discount on first send (trains customers to abandon). Should mention exclusion rules: stop sequence on purchase, opt-out, or 48 hours elapsed. Should recommend UTM tagging for attribution and cross-reference analytics skill for measurement.",
"assertions": [
"Outputs 3-message sequence with timing",
"Send 1 at 30 min, Send 2 at 4 hours, Send 3 at 24 hours",
"No discount on Send 1",
"Each message has sender ID + single CTA + short link",
"Character counts shown, target ~160 GSM-7",
"Compliance footer on first send (STOP to opt out)",
"Warns about discount on first send",
"Mentions exclusion rules",
"Mentions UTM tagging or attribution"
],
"files": []
},
{
"id": 3,
"prompt": "Can I just send SMS without any opt-in if customers gave me their phone number at checkout?",
"expected_output": "Should refuse and explain TCPA requires express written consent for marketing SMS. Should distinguish marketing SMS (requires express written consent) from transactional/account SMS (order updates, auth — implied consent during transaction OK if directly related). Should explain the express written consent requirements: clear disclosure adjacent to the phone field, frequency expectation, msg & data rates notice, STOP/HELP instructions, terms link, electronically captured with timestamp. Should mention penalty exposure: $500-$1,500 per message, class actions reach 7-8 figures. Should recommend implementing a compliant opt-in flow: checkbox + disclosure text, double opt-in optional but cleaner. Should reference compliance.md for the full disclosure template. Should warn that 'customers gave their number at checkout' is NOT sufficient for marketing SMS — it's only sufficient for the specific transaction's communications.",
"assertions": [
"Refuses the no-opt-in approach",
"Distinguishes marketing SMS from transactional SMS",
"Lists express written consent requirements",
"Mentions TCPA penalty exposure ($500-$1,500 per message)",
"Mentions class action risk",
"Recommends compliant opt-in flow",
"References compliance.md",
"Clarifies checkout phone capture is not marketing consent"
],
"files": []
},
{
"id": 4,
"prompt": "Our SMS list is 50K subscribers. We send 3 promotional messages per week. Opt-out rate has crept up to 4% per send. What's wrong?",
"expected_output": "Should diagnose this as audience fatigue from over-sending. Should reference healthy benchmarks: opt-out rate should be <2% per send and <0.5% for promotional sends — 4% is significantly elevated. Should review send frequency: 3 promotional sends/week is on the high side; recommend reducing to 1-2/week, especially for newer subscribers. Should audit relevance: are sends segmented or going to entire list? Generic blasts to a 50K list will burn out the inactive 30K. Should recommend segmenting by engagement (recently engaged vs cold), purchase recency, and opt-in source. Should suggest reactivating cold subscribers with a re-engagement flow before sending more promos. Should warn that 4% opt-out per send means the list is being destroyed at the rate of ~2K/week. Should cross-reference analytics for proper measurement and the principle 'every send must justify itself.'",
"assertions": [
"Diagnoses as over-sending / audience fatigue",
"Cites healthy benchmark (<2% opt-out per send, <0.5% promotional)",
"Recommends reducing send frequency",
"Recommends segmentation by engagement",
"Suggests reactivation flow for cold subscribers",
"Calculates list erosion impact",
"Mentions 'every send must justify itself' principle"
],
"files": []
},
{
"id": 5,
"prompt": "We just submitted our A2P 10DLC registration and our sends are working. Can we start scaling to 100K+ messages per day?",
"expected_output": "Should ask about phone number type currently in use: 10DLC, toll-free, or short code. Should explain throughput limits: 10DLC standard brand ~4-10 msg/sec, verified brand ~75-100+ msg/sec, toll-free ~3 msg/sec, short code 100+ msg/sec. Should calculate: 100K msgs at 10 msg/sec = ~2.8 hours of continuous send time, may run into quiet hour cutoff. Should recommend short code lease for 100K+/day sustained volume. Should warn about carrier filtering on burst sends — use platform throttling. Should mention that sample message text from A2P registration must match actual sends or carriers will flag. Should recommend monitoring trust score and deliverability dashboards. Should reference platforms.md for short code provisioning details.",
"assertions": [
"Asks about phone number type (10DLC vs toll-free vs short code)",
"Explains throughput limits with specific msg/sec numbers",
"Calculates time-to-send for 100K volume",
"Mentions quiet hour considerations",
"Recommends short code for high sustained volume",
"Warns about carrier filtering / throttling",
"Mentions A2P sample text alignment requirement",
"References platforms.md or trust score monitoring"
],
"files": []
},
{
"id": 6,
"prompt": "Should we put emojis in our SMS messages? Other brands seem to use them a lot.",
"expected_output": "Should explain the cost trade-off: emojis force UCS-2 encoding, which cuts segment size from 160 GSM-7 chars to 70 chars. A 100-char message with one emoji becomes 2 segments billed instead of 1 — effectively doubling the per-send cost. Should advise: 1 emoji per message max, situationally relevant, only when the emoji genuinely earns its segment cost (high-energy promotional, brand-personality fit, etc.). Should warn against emoji clutter — it signals 'mass send' rather than personal. Should note that some accented characters (curly quotes, em dashes) also force UCS-2 — copy-pasting from Word/Google Docs is a common silent cause of doubled costs. Should recommend testing in the platform's preview to verify segment count before scheduling. Should remind that segment count matters at scale: 100K sends at 2 segments instead of 1 = $750-$4,000 in extra cost per campaign.",
"assertions": [
"Explains UCS-2 encoding cost",
"Specifies 160 GSM-7 vs 70 UCS-2 segment sizes",
"Recommends max 1 emoji per message",
"Warns about doubled per-send cost",
"Mentions accented characters / curly quotes also trigger UCS-2",
"Recommends previewing segment count",
"Calculates cost impact at scale"
],
"files": []
}
]
}
+202
View File
@@ -0,0 +1,202 @@
# SMS Compliance Reference
Comprehensive compliance reference for SMS marketing across major jurisdictions, opt-in copy templates, and STOP/HELP response templates.
> This is operational guidance, not legal advice. For high-volume programs (50K+ subscribers) or any program with non-trivial revenue, run your compliance setup past a TCPA-experienced attorney.
---
## United States — TCPA
### What it is
The Telephone Consumer Protection Act (1991, amended) regulates marketing calls and texts. The FCC enforces it; private plaintiffs sue under it. Statutory damages: $500$1,500 **per message**. Class actions easily reach 78 figures.
### Consent tiers
| Type | What it covers | How to capture |
|------|---------------|----------------|
| **Express written consent** | Marketing SMS (sales, promotions, offers) | Checkbox + clear disclosure language, captured electronically with timestamp |
| **Express consent (non-written)** | Informational/transactional (delivery, account alerts) | Phone number provided during transaction with awareness it'll be used to text |
| **Established business relationship** | NOT sufficient for marketing SMS | Doesn't apply |
### Express written consent requirements
The opt-in flow must capture all of:
1. The recipient agreed to receive marketing SMS from your brand
2. The recipient understands consent is not a condition of purchase
3. The disclosure showed frequency expectation, message and data rate notice, STOP/HELP instructions, terms link
4. The agreement was electronically recorded with timestamp
### Opt-in disclosure template (compliant)
```
By signing up via text, you agree to receive recurring automated promotional and
personalized marketing text messages (e.g., cart reminders) from [Brand] at the
cell number used when signing up. Consent is not a condition of any purchase.
Reply HELP for help and STOP to cancel. Msg frequency varies. Msg & data rates
may apply. View [Terms](link) and [Privacy](link).
```
Place this **directly adjacent** to the phone number field and submit button. Do not bury it in a footer.
### Quiet hours
- **Federal**: 8am9pm in the recipient's local time zone
- **Stricter states**: Florida (8am8pm), Oklahoma (8am8pm), Washington (8am8pm)
- **Carrier-recommended**: 9am8pm recipient-local
- **Practical default**: 9am8pm recipient-local for safety
Time zone is determined by area code, but area codes lie (people move). Major platforms (Klaviyo, Postscript, Attentive) handle this automatically; verify yours does.
### STOP/HELP handling
**STOP variants you must honor**: STOP, END, CANCEL, UNSUBSCRIBE, QUIT, STOPALL, OPTOUT
**STOP response** (after STOP received):
```
You're unsubscribed from [Brand] alerts. No more messages will be sent. Reply HELP for help.
```
**HELP variants**: HELP, INFO
**HELP response**:
```
[Brand] alerts: For help, visit [URL] or email [support@brand.com]. Msg & data rates may apply. Reply STOP to cancel.
```
**Critical rules**:
- Honor STOP **within seconds**, every time, every keyword variant
- Do not require the recipient to log in or visit a website to opt out
- One STOP confirmation is allowed; do not send additional messages after
- HELP responses do not count as marketing messages and are not subject to quiet hours
### Sample TCPA-compliant footer language by sequence type
- **Opt-in confirmation**: "Reply HELP for help, STOP to cancel. Msg & data rates may apply." — required
- **Recurring promotional**: "Reply STOP to opt out" — required quarterly minimum; carrier-recommended every send
- **Transactional**: Not required by TCPA but carriers expect it; include for safety
---
## United States — A2P 10DLC
### What it is
Application-to-Person 10-Digit Long Code registration, run by The Campaign Registry (TCR). Required for businesses sending SMS through 10DLC numbers (regular long codes) since 2022. Carriers (T-Mobile, AT&T, Verizon) enforce this; unregistered traffic gets throttled or blocked.
### Registration components
1. **Brand registration**
- Legal entity name, EIN, business type
- Trust score assigned (Standard or Verified)
- Higher trust = better throughput, lower fees
2. **Campaign registration** (one per use case)
- Use case: Marketing, Account Notification, Customer Care, Public Service, Higher Education, Polling and Voting, 2FA, Delivery Notification, etc.
- Sample message text (must match what you actually send)
- Opt-in flow description and screenshot
- Opt-out language
- Help message language
- Volume estimate
3. **Phone number assignment** to campaigns
### Throughput tiers (varies by carrier and trust score)
| Trust score + use case | Throughput |
|------------------------|-----------|
| Verified brand, marketing | 75100+ msg/sec |
| Standard brand, marketing | 410 msg/sec |
| Unregistered | 0.1 msg/sec or blocked |
### Common rejections
- Sample message text doesn't match actual sends
- Opt-in flow screenshot doesn't show required disclosure language
- "SHAFT" content (Sex, Hate, Alcohol, Firearms, Tobacco) without explicit use case
- Generic or vague campaign descriptions
**Process time**: 17 business days. Plan for this in launch timelines.
---
## EU / UK — GDPR + ePrivacy Directive
### Consent requirements
- **Explicit opt-in**: clear affirmative action (no pre-checked boxes)
- **Specific**: opt-in must be for marketing SMS specifically, separate from generic ToS
- **Informed**: data subject must know who's processing and why
- **Freely given**: can't be bundled with service access
### Mandatory provisions
- Sender identity in every message
- Easy opt-out in every message
- Right to access data (DSARs)
- Right to deletion
- Records of consent kept for the duration of processing + statute of limitations
### Penalty exposure
GDPR fines up to €20M or 4% of global revenue, whichever is higher.
---
## Canada — CASL
### Consent
- **Express consent**: explicit opt-in (same standard as US TCPA express written consent)
- **Implied consent**: existing business relationship within 24 months — limited use, expires
### Every message must include
- Sender identification (legal name + any operating names)
- Mailing address
- Phone, email, or website contact
- Unsubscribe mechanism that works within 10 business days
### Penalty exposure
Up to CAD $10M per violation. Enforced by the CRTC.
---
## Australia — Spam Act 2003
- Express or inferred consent (inferred has narrow application)
- Sender ID required
- Functional unsubscribe required
- Enforced by ACMA
---
## Multi-jurisdictional programs
If you send across US + EU + Canada simultaneously:
- Default to the **strictest** standard across all jurisdictions (US TCPA express written consent + GDPR explicit opt-in)
- Track consent jurisdiction per subscriber
- Default quiet hours to recipient-local 9am8pm
- Include all required identifiers in every message
---
## Audit-ready compliance checklist
- [ ] A2P 10DLC registration complete (US, if applicable)
- [ ] Opt-in flow includes all required disclosures, adjacent to phone field
- [ ] Disclosure text matches A2P registered sample messages
- [ ] Opt-in event captures: timestamp, IP, page URL, exact disclosure shown
- [ ] STOP/HELP keywords honored across all variants
- [ ] Quiet hours enforced at platform level (recipient-local time)
- [ ] Privacy policy includes SMS section
- [ ] Terms of service include SMS terms
- [ ] Consent records retained per applicable law (typically 4+ years US, longer EU)
- [ ] Process for handling DSARs (EU) and consent revocation
- [ ] Sender identity in every message
- [ ] Compliance footer on every promotional message (recommended) or quarterly minimum (required)
- [ ] Test STOP/HELP from a real phone number quarterly to verify it still works
+318
View File
@@ -0,0 +1,318 @@
# SMS Platform Reference
Deep-dive on the major SMS marketing platforms — features, pricing, A2P 10DLC support, and integration paths.
> Pricing is approximate and changes regularly. Always confirm at the vendor's site before committing.
---
## Klaviyo SMS
**Best for**: DTC ecom brands already using Klaviyo for email.
### Key features
- Native integration with Klaviyo email and segmentation
- Shared subscriber profile across email + SMS
- Built-in A2P 10DLC registration
- Flow builder shared with email flows
- Conversational SMS (two-way) supported
### Pricing
- Bundled with Klaviyo plans, billed per SMS credit
- US: ~$0.0075$0.015 per SMS; MMS ~$0.04
- Free tier: 150 SMS credits/month on lower email tiers
### Integration paths
- Direct Shopify, WooCommerce, BigCommerce, Magento integration
- API for custom platforms
- MCP server available
### Compliance
- A2P 10DLC registration handled in-platform
- Toll-free and short code provisioning available (short code adds $1,000+/mo)
- Quiet hours enforced per recipient time zone (configurable)
### Watch out for
- Email + SMS combined billing can spike fast on large lists
- Short code costs are real overhead; only worthwhile for 100K+ active SMS subscribers
---
## Postscript
**Best for**: Shopify-native DTC brands wanting SMS-specific tooling and onboarding support.
### Key features
- Deep Shopify integration (the deepest of any SMS platform)
- Strong abandoned cart and browse abandonment automations
- AI Reply (auto-reply trained on brand voice)
- Conversational SMS / live agent
- Audiences pulled from Shopify customer data
### Pricing
- Tiered plans: Starter (free, 1K msgs/mo), Growth ($100+/mo), Professional, Enterprise
- Pay-per-send adds on top: ~$0.015 per SMS, ~$0.04 per MMS
### Integration paths
- Shopify-first; limited support for non-Shopify
- API + webhooks available
### Compliance
- A2P 10DLC handled in-platform
- Strong opt-in compliance tools (popup builder, keyword opt-in)
- Quiet hours enforced
### Watch out for
- Steep cost increase past Starter tier
- Less useful if you're not on Shopify
---
## Attentive
**Best for**: Mid-market and enterprise DTC brands wanting full-service SMS.
### Key features
- Full-service: dedicated CSM, copy support, strategy
- Conversational SMS at scale
- Concierge sales-via-SMS
- Strong analytics and attribution
- Identity resolution (matching anon site visitors to phone numbers)
### Pricing
- Custom contracts; typically $1K$10K+/mo + per-send fees
- Annual contracts standard
- Pricing rarely makes sense for <50K SMS subscribers
### Integration paths
- Shopify, BigCommerce, Salesforce Commerce Cloud, custom
- Robust API
### Compliance
- Full A2P 10DLC managed
- Best-in-class compliance tooling and audit support
- Short code provisioning included on most plans
### Watch out for
- Contract terms can lock you in for 12+ months
- Overkill for early-stage brands
---
## Twilio
**Best for**: Custom builds, transactional SMS, B2B SaaS embedding SMS into products, developers.
### Key features
- Raw SMS API
- Pay-per-send pricing, no platform fees
- Massive global coverage (200+ countries)
- Programmable Voice, WhatsApp Business, RCS available alongside
- Studio (visual flow builder) for non-code automation
### Pricing
- US 10DLC SMS: $0.0079 per message
- US toll-free SMS: $0.0079 per message
- US short code SMS: $0.0079 per message + $1,000/mo lease
- MMS: ~$0.02
- Carrier surcharges layered on top (~$0.005 per US 10DLC)
- A2P 10DLC registration: ~$15 brand + $10/mo per campaign
### Integration paths
- API-first (REST + SDKs in Node, Python, Ruby, Go, etc.)
- No native ecom integrations — you build them
### Compliance
- A2P 10DLC registration in-platform but you do the work
- TwilioSendGrid (separate product) handles email-side compliance
- Quiet hours and STOP/HELP handling must be implemented by you
### Watch out for
- You're responsible for compliance — no hand-holding
- No native segmentation, deliverability dashboards, or marketing UI
- Best paired with Customer.io, Segment, or a custom orchestration layer
---
## Brevo (formerly Sendinblue)
**Best for**: EU-based brands, email + SMS combo, SMB-friendly.
### Key features
- Combined email + SMS + WhatsApp on one platform
- EU-headquartered, GDPR-native
- Generous free tier for email; SMS pay-per-send
- Marketing automation flows
- CRM included
### Pricing
- Free tier: 300 emails/day; SMS pay-per-send
- US SMS: ~$0.015 per message
- EU SMS: varies by country, ~€0.04–€0.07
### Integration paths
- Direct integrations: Shopify, WooCommerce, WordPress, Magento
- API + Zapier
- MCP server available
### Compliance
- GDPR + ePrivacy built-in
- A2P 10DLC for US (less polished than dedicated US platforms)
### Watch out for
- US SMS features lag behind Klaviyo/Postscript
- Best if you're EU-first or already on Brevo for email
---
## SimpleTexting
**Best for**: SMB, services businesses, simple campaign blasts, low-volume.
### Key features
- Easy-to-use UI
- Keyword opt-in for grassroots list building
- Built-in landing pages for opt-in
- Simple automation
### Pricing
- Plans start ~$30/mo for 500 credits, scaling up
- US SMS only
### Integration paths
- Zapier, Make, native to a few apps
- API available but basic
### Compliance
- A2P 10DLC handled
- TCPA tooling
### Watch out for
- Limited automation depth vs Klaviyo/Postscript
- Best for low-complexity, low-volume use cases (gyms, salons, real estate)
---
## Plivo
**Best for**: Custom SMS builds where per-send cost matters; Twilio-style API at a lower price point.
### Key features
- Direct Twilio competitor with similar surface area
- Powerpack for bulk sending with sticky sender across number pools
- A2P 10DLC handled in-platform
- WhatsApp, voice available alongside SMS
- SDKs for major languages
### Pricing
- US 10DLC SMS: ~$0.0055/msg (typically 2030% under Twilio)
- US short code SMS: similar + monthly lease
- MMS: ~$0.02
- Phone number rental: ~$0.80/mo local, ~$1/mo toll-free
### Integration paths
- API-first (REST + SDKs)
- No native ecom integrations — you build them
### Compliance
- A2P 10DLC managed in-platform
- Compliance plumbing (STOP/HELP, quiet hours) is your responsibility — same model as Twilio
### Watch out for
- Smaller ecosystem than Twilio (fewer ancillary products, integrations, community resources)
- WhatsApp tooling less mature
---
## AudienceTap
**Best for**: DTC brands wanting AI-forward creative tooling or on-pack QR opt-in as a primary acquisition channel.
> Newer platform — verify current capabilities, pricing, and API surface before committing.
### Key features
- SMS + email on one platform (similar combined model to Klaviyo)
- AI creative generation (SMS copy, subject lines, image variants)
- On-pack QR code opt-in: insert cards in shipped orders that drive SMS list growth
- Shopify, BigCommerce, headless commerce integrations
- A2P 10DLC managed in-platform
- Identity resolution and segmentation
### Pricing
- Tiered by subscriber count + send volume
- Per-send pricing comparable to other DTC SMS platforms
### Integration paths
- API access on Growth+ tiers
- Direct ecom integrations
- Webhooks for events
### Compliance
- A2P 10DLC handled in-platform
- TCPA tooling — verify enterprise-scale depth before committing for large lists
### Watch out for
- Newer entrant — fewer reference customers, less battle-tested at high volume than incumbents
- Some features rolled out recently — confirm what's GA vs beta before relying on them
---
## Customer.io
**Best for**: B2B SaaS, behavior-based automation, multi-channel orchestration (email + SMS + push).
### Key features
- Trigger SMS off product events (signup, milestone, churn risk)
- Powerful audience segmentation
- Workflow builder
- Real-time data sync via API/webhooks
### Pricing
- Plans start ~$150/mo, scaling with profile count
- SMS via Twilio integration or native (varies)
### Integration paths
- API-first
- Direct integrations with Segment, Heap, Mixpanel, etc.
### Compliance
- A2P 10DLC via Twilio if using native integration
- Granular subscription/consent management
### Watch out for
- Less ecom-tailored than Klaviyo/Postscript
- Best for product-led SaaS or apps with deep event tracking
---
## Quick selection table
| Stack / Goal | Recommended | Why |
|--------------|------------|-----|
| Shopify ecom, already on Klaviyo | **Klaviyo SMS** | One platform, one subscriber profile |
| Shopify ecom, SMS-first focus | **Postscript** | Deepest Shopify + SMS-specific features |
| Mid-market ecom, want concierge support | **Attentive** | Full-service team + tooling |
| Custom platform, B2B SaaS, transactional | **Twilio** | API-first, full control |
| Custom build, cost-sensitive | **Plivo** | ~2030% cheaper than Twilio per send |
| DTC wanting AI creative or on-pack QR opt-in | **AudienceTap** | AI-forward; insert-card opt-in is unique |
| EU-based SMB | **Brevo** | GDPR-native, EU-friendly pricing |
| Local services SMB, simple campaigns | **SimpleTexting** | Easy UI, low overhead |
| Product-led SaaS with event tracking | **Customer.io** | Behavior-based triggers |
---
## A2P 10DLC: what your platform should handle
Whatever you pick, confirm your platform handles:
- [ ] Brand and campaign registration with TCR
- [ ] Sample message text aligned with what you actually send
- [ ] Opt-in flow documentation submitted to carriers
- [ ] Trust score visibility (and a path to improve it)
- [ ] Throughput appropriate to your list size and send frequency
- [ ] STOP/HELP keyword handling
- [ ] Quiet hours by recipient time zone
- [ ] Suppression list management
- [ ] Consent record retention with timestamps
All major platforms above handle these. Twilio does the lowest-level work and pushes more responsibility onto you.
+282
View File
@@ -0,0 +1,282 @@
# SMS Sequence Templates
Full copy templates with character counts, timing, and segmentation logic for every major SMS flow.
> Character counts shown assume GSM-7 encoding. Emojis force UCS-2 (70 chars/segment instead of 160). All templates use `[Brand]`, `[FirstName]`, and `[short.link]` as substitution tokens.
---
## Welcome / Opt-In Confirmation
### Send 1 — Immediate (after opt-in)
```
From [Brand]: Welcome! Here's your 10% off code: WELCOME10. Shop now: [short.link]
Reply STOP to opt out, HELP for help. Msg & data rates may apply.
```
~155 chars / 1 segment (just). Footer required on first send.
### Send 2 — 24 hours later (optional)
```
From [Brand]: Don't forget your code WELCOME10 — expires in 48hrs. Top picks: [short.link]
```
~108 chars / 1 segment.
### Send 3 — 7 days later (optional, conditional on no purchase)
```
From [Brand]: Last chance for 10% off with WELCOME10. Expires tonight at midnight: [short.link]
```
~107 chars / 1 segment.
---
## Abandoned Cart (highest-ROI flow for ecom)
### Send 1 — 30 minutes after abandon
```
From [Brand]: Hey [FirstName], you left something behind! Your cart's here: [short.link]
```
~95 chars / 1 segment.
### Send 2 — 4 hours after abandon (if no purchase)
```
From [Brand]: Items in your cart are selling fast. Reserved for you for 24hrs: [short.link]
```
~98 chars / 1 segment.
### Send 3 — 24 hours after abandon (if no purchase, discount allowed)
```
From [Brand]: Still thinking? Here's 10% off to seal the deal: SAVE10. Shop: [short.link]
```
~99 chars / 1 segment.
**Notes**:
- Discount on Send 1 trains customers to abandon. Reserve for Send 2 or 3.
- Exclude customers who abandoned <$X in cart value or repeat abandoners (gaming the discount).
- Stop sequence on purchase, opt-out, or 48 hours elapsed.
---
## Browse Abandonment
### Send 1 — 1 hour after browse (single product or category)
```
From [Brand]: Still thinking about [product]? Take another look: [short.link]
```
~84 chars / 1 segment.
**Notes**:
- Trigger only after meaningful browse signal (3+ product views or 2+ min on product page).
- Exclude if a purchase happened on a different product.
---
## Post-Purchase Flow
### Send 1 — Immediately after purchase (transactional, separate consent)
```
From [Brand]: Order #12345 confirmed! We'll text shipping updates here. Track: [short.link]
```
~95 chars / 1 segment.
### Send 2 — Day of shipment
```
From [Brand]: Your order's on the way. Estimated delivery: [date]. Track: [short.link]
```
~92 chars / 1 segment.
### Send 3 — Day of delivery
```
From [Brand]: Your order should arrive today! Questions? Reply or visit [short.link]
```
~88 chars / 1 segment.
### Send 4 — 2 days after delivery (marketing consent required)
```
From [Brand]: How are you liking your [product]? Share a review for 15% off next order: [short.link]
```
~108 chars / 1 segment.
### Send 5 — 14 days after delivery (cross-sell, marketing consent)
```
From [Brand]: Goes great with your [product]: [related-item]. 10% off bundle: [short.link]
```
~99 chars / 1 segment.
---
## Win-Back (Lapsed Customers)
### Send 1 — 60-90 days after last purchase
```
From [Brand]: [FirstName], we miss you! Picks we think you'll love: [short.link]
```
~84 chars / 1 segment.
### Send 2 — 14 days later (if no purchase)
```
From [Brand]: Come back for 15% off your next order: COMEBACK15. Expires in 7 days: [short.link]
```
~106 chars / 1 segment.
### Send 3 — 14 days after Send 2 (final, if no purchase)
```
From [Brand]: Last chance — 20% off ends tonight: COMEBACK20. We'll stop texting if you'd rather: reply STOP. [short.link]
```
~130 chars / 1 segment.
**Notes**:
- After Send 3 with no engagement, suppress for 90 days minimum.
- After two full win-back cycles with no engagement, sunset (remove from active list).
---
## Promotional / Campaign Sends
### Flash sale (single send)
```
From [Brand]: 24-HOUR FLASH: 25% off everything with FLASH25. Ends midnight: [short.link]
```
~94 chars / 1 segment.
### Limited drop / launch
```
From [Brand]: New drop just landed: [product-name]. Limited stock, members get early access: [short.link]
```
~115 chars / 1 segment.
### Holiday / BFCM (2-send sequence)
Send 1 — Day of launch:
```
From [Brand]: Black Friday is LIVE — up to 50% off sitewide. Shop now: [short.link]
```
~92 chars / 1 segment.
Send 2 — Day of (or evening, expiration push):
```
From [Brand]: Last 6 hours of BFCM savings. Don't miss out: [short.link]
```
~73 chars / 1 segment.
---
## Transactional / Account Notifications
### Order confirmation
```
[Brand]: Order #12345 confirmed. Total $XX.XX. Track at [short.link]. Reply HELP for help.
```
### Shipping update
```
[Brand]: Your order #12345 shipped! Track: [short.link]. ETA [date].
```
### Delivery confirmation
```
[Brand]: Order #12345 delivered. Enjoy! Issues? Reply or [support-link].
```
### Auth code (2FA)
```
[Brand] verification code: 123456. Expires in 10 min. Do not share.
```
### Account alert
```
[Brand]: Sign-in from new device in [location]. Wasn't you? Secure: [short.link]
```
---
## Re-Engagement / Reactivation (Subscribers Who've Gone Cold)
For SMS subscribers who haven't engaged with any send in 60+ days.
### Send 1 — Soft reactivation
```
From [Brand]: We've missed you, [FirstName]! Here's what's new: [short.link]
```
~80 chars / 1 segment.
### Send 2 — Confirm interest (if no engagement)
```
From [Brand]: Want to keep hearing from us? Reply YES to stay on the list, or STOP to opt out.
```
~98 chars / 1 segment.
After no reply: suppress for 60 days, then remove from active list. This protects opt-out rate metrics and reduces wasted spend.
---
## Replenishment (Consumables Ecom)
For products with predictable usage cycles (skincare, supplements, coffee, pet food).
### Send 1 — At expected reorder window (e.g., 28 days for a 30-day supply)
```
From [Brand]: Running low on [product]? Reorder in one tap: [short.link]
```
~73 chars / 1 segment.
### Send 2 — 7 days later (if no purchase)
```
From [Brand]: Don't run out! 10% off your reorder of [product]: REFILL10 [short.link]
```
~92 chars / 1 segment.
---
## VIP / Loyalty Members
Higher frequency, exclusive offers, early access — different cadence rules apply but quiet hours and STOP still required.
### Early access
```
From [Brand]: VIPs get the new drop 24hrs early. Yours now: [short.link]
```
~72 chars / 1 segment.
### Loyalty milestone
```
From [Brand]: You've reached Gold status! Your perks: 15% off + free shipping. [short.link]
```
~95 chars / 1 segment.
---
## Segmentation rules across all flows
- **Suppress** customers in active sequences from promotional sends (no double-tap)
- **Suppress** opted-out subscribers from everything (platform handles this)
- **Frequency cap**: max 46 marketing sends/week per subscriber (lower for newer subscribers)
- **Quiet hours**: 9am8pm recipient-local time
- **Cool-off**: After a discount-driven purchase, suppress promotional sends for 14 days
+18 -8
View File
@@ -1,8 +1,8 @@
---
name: video
description: "When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use when the user mentions 'video production,' 'AI video,' 'Remotion,' 'Hyperframes,' 'HeyGen,' 'Synthesia,' 'Veo,' 'Runway,' 'Kling,' 'Pika,' 'video generation,' 'AI avatar,' 'talking head video,' 'programmatic video,' 'video template,' 'explainer video,' 'product demo video,' 'video pipeline,' or 'make me a video.' Use this for video creation, generation, and production workflows. For video content strategy and what to post, see social. For paid video ad creative, see ad-creative."
description: "When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use when the user mentions 'video production,' 'AI video,' 'Remotion,' 'Hyperframes,' 'HeyGen,' 'Synthesia,' 'Veo,' 'Sora,' 'Runway,' 'Kling,' 'Seedance,' 'Hailuo,' 'MiniMax,' 'Pika,' 'Hunyuan,' 'Wan,' 'video generation,' 'AI avatar,' 'talking head video,' 'programmatic video,' 'video template,' 'explainer video,' 'product demo video,' 'video pipeline,' or 'make me a video.' Use this for video creation, generation, and production workflows. For video content strategy and what to post, see social. For paid video ad creative, see ad-creative."
metadata:
version: 2.0.0
version: 2.0.1
---
# Video
@@ -41,7 +41,7 @@ Pick the right tool for the job:
| Approach | Best For | Tools | When to Use |
|----------|----------|-------|-------------|
| **Programmatic** | Templated, data-driven, batch video | Remotion, Hyperframes | Product updates, personalized videos, recurring content |
| **AI Generation** | Original footage from text/image prompts | Veo, Runway, Kling, Pika | B-roll, hero shots, creative visuals you can't film |
| **AI Generation** | Original footage from text/image prompts | Veo 3, Sora 2, Runway, Kling, Seedance | B-roll, hero shots, creative visuals you can't film |
| **AI Avatars** | Talking-head presenter without filming | HeyGen, Synthesia | Explainers, tutorials, multilingual content |
| **Editing/Repurposing** | Cutting long-form into short clips | Descript, Opus Clip, CapCut | Podcast/webinar → social clips |
@@ -130,12 +130,22 @@ Generate original footage from text or image prompts. Use for B-roll, hero visua
| Model | Resolution | Max Duration | Best For | Cost |
|-------|-----------|-------------|----------|------|
| **Veo 3** (Google) | Up to 1080p (4K varies) | Variable | Highest quality, synced audio | API-based |
| **Runway Gen-4** | Up to 4K | ~10 sec/gen | Motion control, temporal consistency | $12-76/mo |
| **Kling 3.0** | Up to 1080p | Up to 2 min | Volume production, lowest cost | $0.029/sec |
| **Pika** | 1080p | Short clips | Fast generation, effects | Per-credit |
| **Veo 3** (Google) | Up to 1080p (4K varies) | Variable | Top overall quality, synced audio | API-based |
| **Sora 2** (OpenAI) | Up to 1080p | Up to ~20 sec | Cinematic + synced audio, ChatGPT/API integration | API + ChatGPT |
| **Runway Gen-4** | Up to 4K | ~10 sec/gen | Motion control, temporal consistency, edit-style workflows | $12-76/mo |
| **Kling 2.5/3.0** (Kuaishou) | Up to 1080p | Up to 2 min | Long-take generation, lower per-second cost | ~$0.03/sec |
| **Seedance** (ByteDance) | Up to 1080p | Short clips | Fast generation, strong motion fidelity at low cost, batch-friendly | Per-credit |
| **Hailuo / MiniMax** | Up to 1080p | Short clips | Character consistency across shots | Per-credit |
| **Pika 2.x** | 1080p | Short clips | Quick effects, image-to-video, lower bar to entry | Per-credit |
| **Hunyuan Video / Wan 2** | 720p1080p | Variable | Open-source self-hosted; full control, no API fees | Free (GPU) |
**Sora (OpenAI)** has had limited availability and reliability issues. Check current status before recommending.
**Quick picks**:
- **Highest quality + audio**: Veo 3 or Sora 2
- **Batch / volume / cost**: Kling, Seedance
- **Character consistency across multiple shots**: Hailuo
- **Self-hosted, brand-controlled**: Hunyuan Video or Wan 2 (open weights)
- **Storyboard → video workflow**: Runway, LTX Studio
- **Image-to-video from a still you already have**: Kling, Pika, Runway
### Prompting for Video Models
+48 -1
View File
@@ -26,6 +26,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
| ahrefs | SEO | ✓ | - | [](clis/ahrefs.js) | - | [ahrefs.md](integrations/ahrefs.md) |
| dataforseo | SEO | ✓ | - | [](clis/dataforseo.js) | ✓ | [dataforseo.md](integrations/dataforseo.md) |
| keywords-everywhere | SEO | ✓ | - | [](clis/keywords-everywhere.js) | - | [keywords-everywhere.md](integrations/keywords-everywhere.md) |
| rankparse | SEO | ✓ | ✓ | [](clis/rankparse.js) | - | [rankparse.md](integrations/rankparse.md) |
| clearbit | Data Enrichment | ✓ | - | [](clis/clearbit.js) | ✓ | [clearbit.md](integrations/clearbit.md) |
| apollo | Data Enrichment | ✓ | - | [](clis/apollo.js) | - | [apollo.md](integrations/apollo.md) |
| zoominfo | Data Enrichment | ✓ | ✓ | [](clis/zoominfo.js) | - | [zoominfo.md](integrations/zoominfo.md) |
@@ -53,6 +54,11 @@ Quick reference for AI agents to discover tool capabilities and integration meth
| postmark | Email | ✓ | - | [](clis/postmark.js) | ✓ | [postmark.md](integrations/postmark.md) |
| brevo | Email/SMS | ✓ | - | [](clis/brevo.js) | ✓ | [brevo.md](integrations/brevo.md) |
| activecampaign | Email/CRM | ✓ | - | [](clis/activecampaign.js) | ✓ | [activecampaign.md](integrations/activecampaign.md) |
| twilio | SMS/Voice | ✓ | - | ✓ | ✓ | [twilio.md](integrations/twilio.md) |
| plivo | SMS/Voice | ✓ | - | - | ✓ | [plivo.md](integrations/plivo.md) |
| postscript | SMS | ✓ | - | - | - | [postscript.md](integrations/postscript.md) |
| attentive | SMS | ✓ | - | - | - | [attentive.md](integrations/attentive.md) |
| audiencetap | SMS/Email | ✓ | - | - | - | [audiencetap.md](integrations/audiencetap.md) |
| hunter | Email Outreach | ✓ | - | [](clis/hunter.js) | - | [hunter.md](integrations/hunter.md) |
| snov | Email Outreach | ✓ | - | [](clis/snov.js) | - | [snov.md](integrations/snov.md) |
| lemlist | Email Outreach | ✓ | - | [](clis/lemlist.js) | - | [lemlist.md](integrations/lemlist.md) |
@@ -73,6 +79,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
| introw | Partner Ecosystem | - | ✓ | - | - | [introw.md](integrations/introw.md) |
| pendo | Product Analytics | ✓ | - | [](clis/pendo.js) | - | [pendo.md](integrations/pendo.md) |
| similarweb | Competitive Intelligence | ✓ | - | [](clis/similarweb.js) | - | [similarweb.md](integrations/similarweb.md) |
| exa | AI Search | ✓ | ✓ | [](clis/exa.js) | ✓ | [exa.md](integrations/exa.md) |
| firehose | Competitive Intelligence | ✓ | - | - | - | [firehose.md](integrations/firehose.md) |
| sparktoro | Audience Research | - | - | - | - | [sparktoro.md](integrations/sparktoro.md) |
| rb2b | Visitor Identification | ✓ | - | - | - | [rb2b.md](integrations/rb2b.md) |
@@ -94,6 +101,7 @@ Quick reference for AI agents to discover tool capabilities and integration meth
| contentful | Headless CMS | ✓ | - | ✓ | ✓ | [contentful.md](integrations/contentful.md) |
| strapi | Headless CMS | ✓ | - | ✓ | ✓ | [strapi.md](integrations/strapi.md) |
| composio | Integration Layer | ✓ | ✓ | ✓ | ✓ | [composio.md](integrations/composio.md) |
| cogny | Integration Layer | - | ✓ | - | - | [cogny.md](integrations/cogny.md) |
---
@@ -126,8 +134,9 @@ Search engine optimization tools for keyword research, rank tracking, and site a
| **ahrefs** | Backlink analysis, content research | Best for links |
| **dataforseo** | SERP tracking, backlinks, on-page audits | Comprehensive API |
| **keywords-everywhere** | Quick keyword research, traffic estimates | Credit-based |
| **rankparse** | Cheap, agent-friendly backlinks + domain data | Credit-based, MCP available |
**Agent recommendation**: Google Search Console is essential (free). Add Semrush or Ahrefs for competitive research. DataForSEO for programmatic SERP data. Keywords Everywhere for quick keyword lookups.
**Agent recommendation**: Google Search Console is essential (free). Add Semrush or Ahrefs for competitive research. DataForSEO for programmatic SERP data. Keywords Everywhere for quick keyword lookups. RankParse for agent workflows where per-call cost matters — backlinks, domain authority, and tech stack at a fraction of enterprise pricing.
### CRM
@@ -185,6 +194,23 @@ Email marketing, transactional email, and automation platforms.
**Agent recommendation**: Resend for transactional (dev-friendly). Postmark for deliverability. Customer.io for advanced automation. Kit for creators. Beehiiv for newsletters. Klaviyo for e-commerce email/SMS. ActiveCampaign for email + CRM combo.
### SMS / Messaging
SMS and MMS marketing platforms and programmable messaging APIs.
| Tool | Best For | MCP Available |
|------|----------|:-------------:|
| **klaviyo** | DTC ecom already on Klaviyo email | - |
| **postscript** | Shopify DTC, SMS-first depth | - |
| **attentive** | Mid-market+ DTC, full-service | - |
| **twilio** | Custom API builds, transactional, dev-first | - |
| **plivo** | Twilio alternative, lower per-send cost | - |
| **audiencetap** | DTC with AI-forward creative + on-pack QR opt-in | - |
| **brevo** | EU SMB email + SMS combo | - |
| **customer-io** | Behavior-based SMS automation | - |
**Agent recommendation**: Klaviyo SMS for ecom already on Klaviyo email. Postscript for Shopify-first depth. Attentive for mid-market+ wanting concierge support. Twilio (or Plivo for lower cost) for custom builds and transactional/auth. AudienceTap when AI creative or on-pack QR opt-in matters.
### Advertising
Paid advertising platforms and campaign management.
@@ -387,6 +413,16 @@ AI-powered content generation and optimization platforms.
**Agent recommendation**: AirOps for building AI content workflows that generate SEO-optimized content at scale.
### AI Search
AI-powered web search APIs built for LLMs and agents. Return structured results with on-demand text, highlights, and summaries.
| Tool | Best For | Notes |
|------|----------|-------|
| **exa** | Neural/semantic web search, content research, competitor discovery | Search + findSimilar + Contents; MCP and SDKs available |
**Agent recommendation**: Exa for neural search over the open web — content research, competitor/similar-page discovery, link prospecting, news monitoring, and audience research. Pairs well with seo-audit, content-strategy, and competitor-profiling skills.
### Partner Ecosystem
Partner data sharing, co-sell, and ecosystem management.
@@ -468,6 +504,7 @@ These tools have Model Context Protocol servers available, enabling direct agent
- **outreach** - Sales engagement sequences
- **crossbeam** - Partner ecosystem data
- **introw** - Partner relationship management
- **exa** - AI-powered web search for LLMs and agents
To use MCP tools, ensure the appropriate MCP server is configured in your environment.
@@ -481,6 +518,16 @@ To use MCP tools, ensure the appropriate MCP server is configured in your enviro
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.
### Cogny Integration
[Cogny](integrations/cogny.md) is a hosted MCP gateway focused on marketing channels — one federated MCP URL with managed OAuth across every channel you've connected. Narrower than Composio (marketing-only) and useful when you want SEO, paid social, and privacy-friendly analytics behind a single MCP login.
- **Setup**: connect channels at [cogny.com](https://cogny.com), then in Claude.ai go to Settings → Connectors → Add custom connector and paste `https://app.cogny.com/mcp`
- **Channels**: Search Console, Bing Webmaster, Semrush, LinkedIn Ads, Reddit Ads, TikTok Ads, Plausible, Fathom
- **Pricing**: Solo plan starts at $9/mo (7-day trial)
Use Cogny when you only need marketing channels and want to avoid running your own OAuth proxy. Prefer native APIs when you need deep, custom control of a single tool.
---
## Quick Start by Use Case
+2
View File
@@ -50,6 +50,7 @@ Every CLI reads credentials from environment variables:
| `dataforseo` | `DATAFORSEO_LOGIN`, `DATAFORSEO_PASSWORD` |
| `demio` | `DEMIO_API_KEY`, `DEMIO_API_SECRET` |
| `dub` | `DUB_API_KEY` |
| `exa` | `EXA_API_KEY` |
| `g2` | `G2_API_TOKEN` |
| `ga4` | `GA4_ACCESS_TOKEN` |
| `google-ads` | `GOOGLE_ADS_TOKEN`, `GOOGLE_ADS_DEVELOPER_TOKEN`, `GOOGLE_ADS_CUSTOMER_ID` |
@@ -148,6 +149,7 @@ DOMAINS=$(rewardful affiliates list | jq -r '.data[].email')
| `dataforseo.js` | SEO | [DataForSEO](https://dataforseo.com) |
| `demio.js` | Webinar | [Demio](https://demio.com) |
| `dub.js` | Links | [Dub.co](https://dub.co) |
| `exa.js` | AI Search | [Exa](https://exa.ai) |
| `g2.js` | Reviews | [G2](https://g2.com) |
| `ga4.js` | Analytics | [Google Analytics 4](https://analytics.google.com) |
| `google-ads.js` | Ads | [Google Ads](https://ads.google.com) |
+147
View File
@@ -0,0 +1,147 @@
#!/usr/bin/env node
const API_KEY = process.env.EXA_API_KEY
const BASE_URL = 'https://api.exa.ai'
if (!API_KEY) {
console.error(JSON.stringify({ error: 'EXA_API_KEY environment variable required' }))
process.exit(1)
}
async function api(method, path, body) {
if (args['dry-run']) {
return { _dry_run: true, method, url: `${BASE_URL}${path}`, headers: { 'x-api-key': '***', 'Content-Type': 'application/json', 'x-exa-integration': 'marketingskills' }, body: body || undefined }
}
const res = await fetch(`${BASE_URL}${path}`, {
method,
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/json',
'x-exa-integration': 'marketingskills',
},
body: body ? JSON.stringify(body) : undefined,
})
const text = await res.text()
try {
return JSON.parse(text)
} catch {
return { status: res.status, body: text }
}
}
function parseArgs(args) {
const result = { _: [] }
for (let i = 0; i < args.length; i++) {
const arg = args[i]
if (arg.startsWith('--')) {
const key = arg.slice(2)
const next = args[i + 1]
if (next && !next.startsWith('--')) {
result[key] = next
i++
} else {
result[key] = true
}
} else {
result._.push(arg)
}
}
return result
}
function buildContents(args) {
const contents = {}
if (args.text) {
contents.text = args['max-chars']
? { maxCharacters: Number(args['max-chars']) }
: true
}
if (args.highlights) {
contents.highlights = args['highlight-query']
? { query: args['highlight-query'] }
: true
}
if (args.summary) {
contents.summary = args['summary-query']
? { query: args['summary-query'] }
: {}
}
return Object.keys(contents).length ? contents : null
}
const args = parseArgs(process.argv.slice(2))
const [cmd, ...rest] = args._
async function main() {
let result
switch (cmd) {
case 'search': {
const query = args.query || rest.join(' ')
if (!query) { result = { error: '--query required' }; break }
const body = { query }
if (args.type) body.type = args.type
if (args.num) body.numResults = Number(args.num)
if (args.category) body.category = args.category
if (args['include-domains']) body.includeDomains = args['include-domains'].split(',').map(s => s.trim())
if (args['exclude-domains']) body.excludeDomains = args['exclude-domains'].split(',').map(s => s.trim())
if (args['include-text']) body.includeText = args['include-text'].split(',').map(s => s.trim())
if (args['exclude-text']) body.excludeText = args['exclude-text'].split(',').map(s => s.trim())
if (args['start-published']) body.startPublishedDate = args['start-published']
if (args['end-published']) body.endPublishedDate = args['end-published']
if (args['start-crawl']) body.startCrawlDate = args['start-crawl']
if (args['end-crawl']) body.endCrawlDate = args['end-crawl']
if (args['user-location']) body.userLocation = args['user-location']
const contents = buildContents(args)
if (contents) body.contents = contents
result = await api('POST', '/search', body)
break
}
case 'find-similar': {
const url = args.url
if (!url) { result = { error: '--url required' }; break }
const body = { url }
if (args.num) body.numResults = Number(args.num)
if (args['include-domains']) body.includeDomains = args['include-domains'].split(',').map(s => s.trim())
if (args['exclude-domains']) body.excludeDomains = args['exclude-domains'].split(',').map(s => s.trim())
if (args['start-published']) body.startPublishedDate = args['start-published']
if (args['end-published']) body.endPublishedDate = args['end-published']
if (args['start-crawl']) body.startCrawlDate = args['start-crawl']
if (args['end-crawl']) body.endCrawlDate = args['end-crawl']
const contents = buildContents(args)
if (contents) body.contents = contents
result = await api('POST', '/findSimilar', body)
break
}
case 'contents': {
const urls = args.urls?.split(',').map(s => s.trim())
if (!urls || !urls.length) { result = { error: '--urls required (comma-separated)' }; break }
const body = { urls }
const contents = buildContents(args)
if (contents) Object.assign(body, contents)
else body.text = true
result = await api('POST', '/contents', body)
break
}
default:
result = {
error: 'Unknown command',
usage: {
search: 'search --query <q> [--type neural|fast|auto|deep-lite|deep|deep-reasoning|instant] [--num <n>] [--category company|research paper|news|personal site|financial report|people] [--include-domains <d1,d2>] [--exclude-domains <d1,d2>] [--include-text <phrases>] [--exclude-text <phrases>] [--start-published <ISO>] [--end-published <ISO>] [--user-location <CC>] [--text] [--highlights] [--summary] [--max-chars <n>] [--highlight-query <q>] [--summary-query <q>]',
'find-similar': 'find-similar --url <url> [--num <n>] [--include-domains <d1,d2>] [--exclude-domains <d1,d2>] [--start-published <ISO>] [--end-published <ISO>] [--text] [--highlights] [--summary]',
contents: 'contents --urls <url1,url2> [--text] [--highlights] [--summary] [--max-chars <n>] [--highlight-query <q>] [--summary-query <q>]',
options: '--dry-run (preview request without sending)',
}
}
}
console.log(JSON.stringify(result, null, 2))
}
main().catch(err => {
console.error(JSON.stringify({ error: err.message }))
process.exit(1)
})
+196
View File
@@ -0,0 +1,196 @@
#!/usr/bin/env node
const API_KEY = process.env.RANKPARSE_API_KEY
const BASE_URL = 'https://api.rankparse.com/v1'
if (!API_KEY) {
console.error(JSON.stringify({ error: 'RANKPARSE_API_KEY environment variable required' }))
process.exit(1)
}
async function api(method, path, body) {
if (args['dry-run']) {
return { _dry_run: true, method, url: `${BASE_URL}${path}`, headers: { 'X-API-Key': '***', 'Content-Type': 'application/json' }, body }
}
const init = {
method,
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json',
},
}
if (body) init.body = JSON.stringify(body)
const res = await fetch(`${BASE_URL}${path}`, init)
const text = await res.text()
try {
return JSON.parse(text)
} catch {
return { status: res.status, body: text }
}
}
function parseArgs(args) {
const result = { _: [] }
for (let i = 0; i < args.length; i++) {
const arg = args[i]
if (arg.startsWith('--')) {
const key = arg.slice(2)
const next = args[i + 1]
if (next && !next.startsWith('--')) {
result[key] = next
i++
} else {
result[key] = true
}
} else {
result._.push(arg)
}
}
return result
}
const args = parseArgs(process.argv.slice(2))
const [cmd, sub, ...rest] = args._
function requireDomain() {
if (!args.domain) return { error: '--domain required' }
return null
}
function requireUrl() {
if (!args.url) return { error: '--url required' }
return null
}
async function main() {
let result
switch (cmd) {
case 'domain-authority':
case 'domain-rank':
case 'tech-stack':
case 'site-health':
case 'similar-domains':
case 'link-audit':
case 'site-explorer':
case 'crawl-history': {
const err = requireDomain(); if (err) { result = err; break }
result = await api('GET', `/${cmd}?domain=${encodeURIComponent(args.domain)}`)
break
}
case 'backlinks': {
const err = requireDomain(); if (err) { result = err; break }
const params = new URLSearchParams({ domain: args.domain })
if (args.limit) params.set('limit', args.limit)
if (args.sort) params.set('sort', args.sort)
if (args['from-domain']) params.set('from_domain', args['from-domain'])
if (args['link-type']) params.set('link_type', args['link-type'])
if (args.score) params.set('score', 'true')
result = await api('GET', `/backlinks?${params}`)
break
}
case 'referring-domains':
case 'outbound-links':
case 'anchor-text':
case 'top-pages':
case 'sitemap': {
const err = requireDomain(); if (err) { result = err; break }
const params = new URLSearchParams({ domain: args.domain })
if (args.limit) params.set('limit', args.limit)
result = await api('GET', `/${cmd}?${params}`)
break
}
case 'domain-overlap': {
if (!args.domains) { result = { error: '--domains required (comma-separated, 2-5 domains)' }; break }
const params = new URLSearchParams({ domains: args.domains })
if (args.limit) params.set('limit', args.limit)
result = await api('GET', `/domain-overlap?${params}`)
break
}
case 'link-intersect': {
if (!args['domain-a'] || !args['domain-b']) { result = { error: '--domain-a and --domain-b required' }; break }
const params = new URLSearchParams({ domain_a: args['domain-a'], domain_b: args['domain-b'] })
if (args.limit) params.set('limit', args.limit)
result = await api('GET', `/link-intersect?${params}`)
break
}
case 'competitor-gap': {
const err = requireDomain(); if (err) { result = err; break }
if (!args.vs) { result = { error: '--vs required (competitor domain)' }; break }
const params = new URLSearchParams({ domain: args.domain, vs: args.vs })
if (args.limit) params.set('limit', args.limit)
result = await api('GET', `/competitor-gap?${params}`)
break
}
case 'page-seo': {
const err = requireUrl(); if (err) { result = err; break }
result = await api('GET', `/page-seo?url=${encodeURIComponent(args.url)}`)
break
}
case 'page-performance': {
const err = requireUrl(); if (err) { result = err; break }
const params = new URLSearchParams({ url: args.url })
if (args.strategy) params.set('strategy', args.strategy)
result = await api('GET', `/page-performance?${params}`)
break
}
case 'batch': {
if (!args.domains) { result = { error: '--domains required (comma-separated)' }; break }
const domains = args.domains.split(',').map(d => d.trim()).filter(Boolean)
result = await api('POST', '/batch', { domains })
break
}
case 'me':
result = await api('GET', '/me')
break
case 'credits':
result = await api('GET', '/credits')
break
default:
result = {
error: 'Unknown command',
usage: {
'domain-authority': 'domain-authority --domain <domain>',
'domain-rank': 'domain-rank --domain <domain>',
'backlinks': 'backlinks --domain <domain> [--limit <n>] [--sort importance|recent] [--from-domain <d>] [--link-type <t>] [--score]',
'referring-domains': 'referring-domains --domain <domain> [--limit <n>]',
'outbound-links': 'outbound-links --domain <domain> [--limit <n>]',
'anchor-text': 'anchor-text --domain <domain> [--limit <n>]',
'top-pages': 'top-pages --domain <domain> [--limit <n>]',
'domain-overlap': 'domain-overlap --domains <d1,d2,...> [--limit <n>]',
'link-intersect': 'link-intersect --domain-a <d> --domain-b <d> [--limit <n>]',
'competitor-gap': 'competitor-gap --domain <d> --vs <competitor> [--limit <n>]',
'similar-domains': 'similar-domains --domain <domain>',
'tech-stack': 'tech-stack --domain <domain>',
'site-health': 'site-health --domain <domain>',
'sitemap': 'sitemap --domain <domain> [--limit <n>]',
'crawl-history': 'crawl-history --domain <domain>',
'page-seo': 'page-seo --url <url>',
'page-performance': 'page-performance --url <url> [--strategy mobile|desktop]',
'link-audit': 'link-audit --domain <domain>',
'site-explorer': 'site-explorer --domain <domain>',
'batch': 'batch --domains <d1,d2,...>',
'me': 'me (account info + credit balance)',
'credits': 'credits (credit balance)',
}
}
}
console.log(JSON.stringify(result, null, 2))
}
main().catch(err => {
console.error(JSON.stringify({ error: err.message }))
process.exit(1)
})
+152
View File
@@ -0,0 +1,152 @@
# Attentive
Full-service SMS marketing platform for mid-market and enterprise direct-to-consumer brands. Combines tooling with dedicated success teams.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API |
| MCP | - | Not available |
| CLI | - | None |
| SDK | - | Use API directly |
## Authentication
- **Type**: OAuth 2.0 or API Key (depending on integration type)
- **Header**: `Authorization: Bearer {access_token}`
- **Get credentials**: Account-level provisioning through Attentive integrations team
- **Note**: API access requires partnership or eligible plan
## Common Agent Operations
### Subscribe a user
```bash
POST https://api.attentivemobile.com/v1/subscriptions
{
"user": {
"phone": "+15551234567",
"email": "user@example.com"
},
"signUpSourceId": "...",
"subscriptionType": "MARKETING"
}
```
Sign-up source ID determines opt-in attribution and compliance disclosure shown.
### Unsubscribe
```bash
POST https://api.attentivemobile.com/v1/subscriptions/unsubscribe
{
"user": { "phone": "+15551234567" },
"subscriptionType": "MARKETING"
}
```
### Custom event tracking
```bash
POST https://api.attentivemobile.com/v1/events/custom
{
"user": { "phone": "+15551234567" },
"type": "abandoned_cart",
"properties": {
"cart_value": 89.99,
"items": ["Product A"]
}
}
```
### E-commerce events (purchase, add-to-cart, product view)
```bash
POST https://api.attentivemobile.com/v1/events/ecommerce/purchase
{
"user": { "phone": "+15551234567" },
"items": [{
"productId": "SKU-123",
"name": "Product A",
"price": { "value": 4999, "currency": "USD" },
"quantity": 1
}],
"occurredAt": "2026-05-15T10:00:00Z"
}
```
Similar endpoints for `/add_to_cart`, `/product_view`, `/checkout`.
### Send transactional message
```bash
POST https://api.attentivemobile.com/v1/messages/transactional
{
"user": { "phone": "+15551234567" },
"messageBody": "Your order #1234 shipped. Track: https://...",
"type": "ORDER_SHIPPING"
}
```
### List campaigns
```bash
GET https://api.attentivemobile.com/v1/campaigns
```
### Webhooks
Subscribe to: `subscriber.created`, `subscriber.unsubscribed`, `message.sent`, `message.delivered`, `message.failed`, `conversion.attributed`.
## API Pattern
REST + JSON. Bearer auth. Webhook signature verification via HMAC-SHA256.
## Key Features
- Concierge sales (live agents responding via SMS)
- Identity resolution (matching anonymous site visitors to phone numbers for retargeting)
- Strong analytics + attribution (multi-touch, conversion path)
- AI Journey AI / Pro AI (AI-generated send timing and copy)
- Custom Audience Manager (advanced segmentation)
- A/B testing built into campaign builder
- Two-way SMS at scale
- A2P 10DLC fully managed
- Short code provisioning included on most plans
- Dedicated CSM, copy support, strategy consults
## Pricing
- Custom contracts; typically $1K$10K+/mo platform fee + per-send fees
- Annual contracts standard
- Pricing rarely makes sense for <50K active SMS subscribers
- Negotiable based on volume and tier
## When to Use
- Mid-market+ DTC brand (50K+ active SMS subscribers, $5M+/yr revenue)
- Want dedicated CSM and copy support, not just tooling
- Need concierge two-way SMS at scale
- Multi-channel ecom team that wants single-pane SMS-first platform
- Want short code included rather than separately leased
- Identity resolution / cross-device matching matters
## When NOT to Use
- Smaller brands — too expensive, overkill
- Already on Klaviyo and SMS is secondary — Klaviyo SMS is simpler
- Shopify-only and want depth — Postscript is more Shopify-native
- Custom platform / B2B SaaS — Twilio
## Relevant Skills
- sms
- emails (run alongside)
- churn-prevention
- customer-research (identity resolution data)
+125
View File
@@ -0,0 +1,125 @@
# AudienceTap
SMS and email marketing platform built for direct-to-consumer brands. Newer entrant positioning as a more flexible, AI-forward alternative to Klaviyo / Postscript / Attentive with emphasis on creative automation and on-pack QR opt-in.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API (confirm with vendor; access tied to plan tier) |
| MCP | - | Not available |
| CLI | - | None |
| SDK | - | Use API directly |
> Verify current API surface and capabilities at https://audiencetap.com before building against this guide — newer platform, surface evolves quickly.
## Authentication
- **Type**: API Key (Bearer)
- **Header**: `Authorization: Bearer {api_key}`
- **Get key**: AudienceTap dashboard → Settings → API
- **Note**: API access generally requires Growth or Pro tier
## Common Agent Operations
### Subscribe a user
```bash
POST https://api.audiencetap.com/v1/subscribers
{
"phone_number": "+15551234567",
"email": "user@example.com",
"first_name": "Jane",
"opt_in_source": "checkout",
"list_id": "..."
}
```
### Unsubscribe
```bash
POST https://api.audiencetap.com/v1/subscribers/unsubscribe
{
"phone_number": "+15551234567",
"channel": "sms"
}
```
### Track event
```bash
POST https://api.audiencetap.com/v1/events
{
"subscriber": { "phone_number": "+15551234567" },
"event_name": "abandoned_cart",
"properties": {
"cart_value": 89.99,
"items": ["Product A"]
}
}
```
### Send transactional message
```bash
POST https://api.audiencetap.com/v1/messages/transactional
{
"phone_number": "+15551234567",
"body": "Your order #1234 shipped. Track: https://...",
"category": "shipping"
}
```
### List flows / automations
```bash
GET https://api.audiencetap.com/v1/flows
```
### Webhooks
Subscribe to: subscriber events, message delivery events, conversion attribution. Configured in dashboard.
## API Pattern
REST + JSON. Bearer auth. Pagination conventions vary by endpoint — confirm in current docs.
## Key Features
- SMS + email on one platform (positioned similarly to Klaviyo's combined product)
- AI creative generation (subject lines, SMS copy, image variants)
- On-pack QR code opt-in (insert-card based opt-in for ecom shipments)
- Shopify, BigCommerce, and headless commerce integrations
- A2P 10DLC handled in-platform
- Automation builder for cart, post-purchase, win-back, etc.
- Identity resolution (matching anonymous visitors to known subscribers)
## Pricing
- Plans typically tiered by subscriber count + send volume
- Per-send pricing comparable to other DTC SMS platforms (~$0.015 SMS, ~$0.04 MMS)
- Confirm current pricing at https://audiencetap.com — newer platform with evolving plans
## When to Use
- Mid-market DTC brand willing to try a newer platform for better AI tooling or pricing leverage
- Brand wanting on-pack QR opt-in as a primary acquisition channel (printed insert cards driving SMS opt-in)
- Want SMS + email under one roof with stronger AI features than incumbents currently offer
- Evaluating alternatives during a contract negotiation with Klaviyo / Postscript / Attentive
## When NOT to Use
- Need a fully battle-tested platform with deep ecosystem — incumbents have more integrations and case studies
- Compliance tooling at enterprise scale — verify A2P / TCPA depth before committing for large lists
- B2B SaaS, transactional, or developer-first use — Twilio or Plivo
## Relevant Skills
- sms
- emails
- referrals (on-pack QR opt-in is a referral-adjacent acquisition channel)
- directory-submissions (on-pack insert cards as an offline channel)
+153
View File
@@ -0,0 +1,153 @@
# Cogny
Hosted MCP gateway that bundles several marketing tools behind one URL with managed OAuth. Useful when you want AI agents to talk to multiple marketing channels without standing up your own OAuth proxy.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | - | Access is via MCP, not a public REST API |
| MCP | ✓ | One federated MCP URL, OAuth-managed per channel |
| CLI | - | Connect tools via the Cogny dashboard |
| SDK | - | Use any MCP-capable client (Claude.ai, Claude API, Claude CLI, ChatGPT, etc.) |
## How it works
```
┌──────────────────┐ ┌──────────────────────┐ ┌───────────────────┐
│ Claude.ai / │──────│ app.cogny.com/mcp │──────│ Channel API │
│ Claude CLI / │ │ (federated MCP │ │ (LinkedIn, GSC, │
│ ChatGPT, etc. │ │ endpoint) │ │ TikTok, …) │
└──────────────────┘ └──────────────────────┘ └───────────────────┘
│ Federates per-channel
│ mcp.cogny.com endpoints
▼ with managed OAuth
```
`https://app.cogny.com/mcp` is a single federated endpoint that fans out to the per-channel `mcp.cogny.com` MCP servers — you connect once and every channel you've authorized in the dashboard becomes available.
## When to Use Cogny vs. Native or Composio
Cogny is one of several integration paths. Pick based on what you need:
| Scenario | Suggested |
|----------|-----------|
| Tool has a native MCP server you can self-host | Native MCP |
| You want a single bill / single login across many channels | Cogny or Composio |
| You need 500+ tools (CRM, productivity, dev tools, etc.) | [Composio](composio.md) |
| You only need the marketing channels Cogny ships | Cogny |
| You need deep, custom control over a single tool | Native API + CLI |
Cogny is narrower than Composio — it focuses on marketing channels — but the trade-off is fewer moving parts when you only need those channels.
## Setup
### 1. Connect your channels
1. Sign up at [cogny.com](https://cogny.com) and create a workspace.
2. In the dashboard, connect the channels you want (OAuth flow per tool).
### 2. Add Cogny as a custom connector
In Claude.ai:
1. Go to **Settings → Connectors → Add custom connector**.
2. Enter name **Cogny** and paste your MCP URL:
```
https://app.cogny.com/mcp
```
3. Complete the OAuth handshake when prompted.
The same `https://app.cogny.com/mcp` URL works in any MCP-capable client (Claude API, Claude CLI, ChatGPT custom connectors, etc.) — Cogny handles auth and routes each tool call to the right underlying channel.
## Channels Available via Cogny
Coverage changes over time — check the Cogny dashboard for the current list.
### SEO
| Channel | Typical use |
|---------|-------------|
| Search Console | Search analytics, URL inspection, sitemap submission |
| Bing Webmaster | Coverage, query stats, URL submission quota |
| Semrush | Keyword research, competitor checks (subject to Semrush plan) |
### Paid Social
| Channel | Typical use |
|---------|-------------|
| LinkedIn Ads | Campaign reporting, audience overlap, creative checks |
| Reddit Ads | Campaign reporting, audience and conversion lookups |
| TikTok Ads | Campaign reporting, ad group / creative health |
### Analytics
| Channel | Typical use |
|---------|-------------|
| Plausible | Privacy-friendly site analytics, goal reporting |
| Fathom | Privacy-friendly site analytics |
## Common Agent Operations
Once `https://app.cogny.com/mcp` is wired up, the agent picks tools by name across every channel you've connected.
### Search Console — pages losing clicks
```
> "Pull Search Console clicks for the last 28 days vs the previous 28 days,
group by page, and list pages where clicks dropped more than 30%."
```
### LinkedIn Ads — campaign hygiene
```
> "List my active LinkedIn campaigns, their CTR and CPL for the last 14 days,
and flag anything with CTR below 0.4%."
```
### Reddit Ads — audience overlap
```
> "For my Reddit Ads campaigns this month, summarize spend, conversions, and
the subreddits driving the most clicks."
```
### TikTok Ads — creative fatigue
```
> "Find TikTok ad groups where CTR has dropped 25%+ over the last 7 days
compared to the prior 7 days."
```
### Plausible — funnel sanity check
```
> "From Plausible, show top 10 pages by pageviews and the conversion rate
for the 'Signup' goal over the last 30 days."
```
## Limitations
- **Marketing-only scope** — Cogny ships marketing channels; for CRM, productivity, or dev tools use [Composio](composio.md) or the relevant native integration.
- **Hosted dependency** — if `app.cogny.com` is down, the connected channels are unavailable through this path.
- **Coverage depth varies** — read-heavy and reporting tools generally have more depth than write/mutation tools.
- **OAuth tokens** — managed by Cogny; you don't control token refresh or storage directly.
## Pricing
Cogny's Solo plan starts at **$9/month** and includes a 7-day free trial. Higher tiers are available for teams. Check [cogny.com/pricing](https://cogny.com/pricing) for current plans and limits.
## See Also
- [Composio](composio.md) — broader integration layer (500+ tools, OAuth-heavy CRMs and productivity apps)
- [Google Search Console](google-search-console.md) — native API guide if you'd rather call GSC directly
- [LinkedIn Ads](linkedin-ads.md), [TikTok Ads](tiktok-ads.md) — native API guides
## Relevant Skills
- seo-audit (Search Console, Bing Webmaster, Semrush via Cogny)
- paid-ads (LinkedIn, Reddit, TikTok via Cogny)
- analytics-tracking (Plausible, Fathom via Cogny)
+145
View File
@@ -0,0 +1,145 @@
# Exa
AI-powered web search API built for LLMs and agents. Returns high-quality search results with neural and keyword matching, plus on-demand content retrieval (full text, highlights, and summaries) in a single request.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | Search, Find Similar, Contents |
| MCP | ✓ | Official MCP server available |
| CLI | ✓ | [exa.js](../clis/exa.js) |
| SDK | ✓ | `exa-py` (Python), `exa-js` (TypeScript) |
## Authentication
- **Type**: API Key
- **Header**: `x-api-key: {key}`
- **Get key**: https://dashboard.exa.ai
## Endpoints
Base URL: `https://api.exa.ai`
| Endpoint | Purpose |
|----------|---------|
| `POST /search` | Search the web with neural, keyword-like, or auto-routed modes |
| `POST /findSimilar` | Find pages similar to a given URL |
| `POST /contents` | Fetch text, highlights, or summaries for one or more URLs |
## Common Agent Operations
### Web Search with Content
```bash
POST https://api.exa.ai/search
{
"query": "best B2B SaaS onboarding flows",
"type": "auto",
"numResults": 10,
"contents": {
"text": { "maxCharacters": 1000 },
"highlights": true
}
}
```
### Competitor Content Discovery
```bash
POST https://api.exa.ai/search
{
"query": "landing page teardowns",
"includeDomains": ["goodui.org", "growth.design", "marketingexamples.com"],
"startPublishedDate": "2024-01-01T00:00:00Z",
"contents": { "highlights": true }
}
```
### Find Similar Pages
```bash
POST https://api.exa.ai/findSimilar
{
"url": "https://stripe.com/pricing",
"numResults": 20,
"contents": { "summary": { "query": "What pricing model and price points does this page use?" } }
}
```
### Category-Filtered Search
```bash
POST https://api.exa.ai/search
{
"query": "DTC beauty brand raising Series A",
"category": "news",
"numResults": 25,
"startPublishedDate": "2024-06-01T00:00:00Z"
}
```
### Fetch Contents for Known URLs
```bash
POST https://api.exa.ai/contents
{
"urls": ["https://example.com/post-1", "https://example.com/post-2"],
"text": true,
"summary": { "query": "Summarize this article's key argument in one paragraph." }
}
```
## Key Parameters
### Search Types
- `auto` - Automatically routes between neural and keyword matching (default)
- `neural` - Embedding-based semantic search; best for concept/idea queries
- `fast` - Lower-latency neural search
- `instant` - Returns cached results near-instantly
- `deep-lite`, `deep`, `deep-reasoning` - Agentic search variants that plan multiple queries and synthesize
### Categories
`company`, `research paper`, `news`, `personal site`, `financial report`, `people`
### Filtering
- `includeDomains` / `excludeDomains` - Restrict to or exclude specific domains (up to 1200)
- `includeText` / `excludeText` - Require or forbid phrases in result pages
- `startPublishedDate` / `endPublishedDate` - ISO 8601 publication date range
- `startCrawlDate` / `endCrawlDate` - ISO 8601 crawl date range
- `userLocation` - Two-letter country code (e.g., `US`)
### Contents (Mix and Match)
All three can be requested in the same call:
- `text: true` or `{ maxCharacters, includeHtmlTags, verbosity }` - Full or truncated page text
- `highlights: true` or `{ query, maxCharacters }` - LLM-selected relevant snippets
- `summary: { query, schema }` - LLM-generated summary, optionally conforming to a JSON schema
## When to Use
- **Content research** - Find high-quality long-form content on niche topics by meaning, not just keywords
- **Competitor discovery** - Find companies similar to one you've identified via `findSimilar`
- **SEO content gap analysis** - Search for topics your competitors rank for and pull highlights for quick review
- **Customer research** - Find forum threads, blog posts, and reviews about your product or category
- **Audience research** - Discover blogs, newsletters, and communities where your ICP publishes or comments
- **News monitoring** - Track mentions of your brand, competitors, or category with date-filtered news search
- **Link prospecting** - Find authoritative pages covering topics you write about, for outreach
- **Lead research** - Use the `company` and `people` categories to discover accounts or individuals matching criteria
## Rate Limits
- Varies by plan; see https://exa.ai/pricing
- Most production plans support hundreds of concurrent requests
- Content retrieval (text/highlights/summary) is billed separately from the base search
## Relevant Skills
- seo-audit
- ai-seo
- content-strategy
- competitor-profiling
- competitor-alternatives
- customer-research
- cold-email
- lead-magnets
- marketing-ideas
+140
View File
@@ -0,0 +1,140 @@
# Plivo
Cloud communications API platform — SMS, MMS, voice, WhatsApp. Direct Twilio competitor with similar pricing and developer-first positioning.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API |
| MCP | - | Not available |
| CLI | - | None official |
| SDK | ✓ | Node, Python, Ruby, PHP, Java, Go, .NET |
## Authentication
- **Type**: Basic auth with Auth ID + Auth Token
- **Header**: `Authorization: Basic base64(AuthID:AuthToken)`
- **Get credentials**: https://console.plivo.com → Account → Account Settings
- **Note**: Subaccounts available for isolating environments or customers
## Common Agent Operations
### Send SMS
```bash
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
{
"src": "+15559876543",
"dst": "+15551234567",
"text": "Hello from Plivo"
}
```
### Send MMS
```bash
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
{
"src": "+15559876543",
"dst": "+15551234567",
"text": "Check this out",
"type": "mms",
"media_urls": ["https://example.com/image.jpg"]
}
```
### Bulk send (powerpack)
Use Plivo's Powerpack feature to send from a pool of numbers with sticky sender + automatic A2P registration. Configured in console; messages then sent with `powerpack_uuid` instead of `src`.
```bash
POST https://api.plivo.com/v1/Account/{AuthID}/Message/
{
"powerpack_uuid": "...",
"dst": "+15551234567",
"text": "Hello"
}
```
### Get message details
```bash
GET https://api.plivo.com/v1/Account/{AuthID}/Message/{MessageUUID}/
```
### List messages
```bash
GET https://api.plivo.com/v1/Account/{AuthID}/Message/?limit=20&offset=0
```
### Rent a phone number
```bash
# Search available
GET https://api.plivo.com/v1/Account/{AuthID}/PhoneNumber/?country_iso=US&type=local
# Rent
POST https://api.plivo.com/v1/Account/{AuthID}/PhoneNumber/{NumberID}/
```
### Configure inbound message webhook on an Application
```bash
POST https://api.plivo.com/v1/Account/{AuthID}/Application/
{
"app_name": "SMS Receiver",
"message_url": "https://your-app.com/sms-webhook",
"message_method": "POST"
}
```
Then assign the application to the phone number.
### A2P 10DLC registration (US)
Configured through console UI under Compliance. Programmatic registration available for high-volume customers via dedicated API endpoints (request access).
## API Pattern
REST + JSON. Pagination via `limit` + `offset`. Webhook callbacks for inbound messages and delivery status (configured per-application).
## Pricing
- US 10DLC SMS: $0.0055/msg (typically lower than Twilio)
- US toll-free SMS: $0.0055/msg
- US short code SMS: similar + monthly lease
- MMS: ~$0.02
- Carrier surcharges layered on top
- Phone number rental: ~$0.80/mo local, ~$1/mo toll-free
Plivo typically prices 520% under Twilio at the per-send level. Less of an ecosystem advantage but real cost savings at high volume.
## Rate Limits
- Default: 1 msg/sec
- Powerpacks scale throughput based on number pool size and A2P trust
- Short codes: 100+ msg/sec
## When to Use
- Custom SMS build, want a Twilio-like API with lower cost
- High-volume sending where the per-message delta matters
- Want bulk sending with sticky sender via Powerpack
- B2B SaaS embedding SMS or transactional/auth at scale
## When NOT to Use
- DTC ecom marketing flows — Klaviyo, Postscript, Attentive
- Ecosystem matters more than price — Twilio's broader product surface (Voice, Studio, SendGrid, Segment, etc.) wins
- Need mature WhatsApp Business — Twilio has deeper WhatsApp tooling
## Relevant Skills
- sms
- onboarding (post-signup notifications)
+126
View File
@@ -0,0 +1,126 @@
# Postscript
SMS marketing platform built for Shopify direct-to-consumer brands. Deepest Shopify integration of any SMS platform.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API |
| MCP | - | Not available |
| CLI | - | None |
| SDK | - | Use API directly |
## Authentication
- **Type**: API Key
- **Header**: `Authorization: Bearer {api_key}` or `X-Postscript-Api-Key: {api_key}`
- **Get key**: Postscript dashboard → Settings → API
- **Note**: Keys are scoped per shop
## Common Agent Operations
### Search subscribers
```bash
GET https://api.postscript.io/api/v2/subscribers?phone_number=%2B15551234567
```
### Create subscriber (opt-in)
```bash
POST https://api.postscript.io/api/v2/subscribers
{
"phone_number": "+15551234567",
"email": "user@example.com",
"first_name": "Jane",
"subscribed_at": "2026-05-15T10:00:00Z",
"opt_in_source": "checkout_keyword"
}
```
Must include valid opt-in metadata for TCPA compliance.
### Unsubscribe
```bash
DELETE https://api.postscript.io/api/v2/subscribers/{subscriberId}/subscription
```
### List keywords (e.g., JOIN, SAVE)
```bash
GET https://api.postscript.io/api/v2/keywords
```
### Send transactional message
```bash
POST https://api.postscript.io/api/v2/transactional/sms
{
"phone_number": "+15551234567",
"message": "Your order #1234 shipped. Track at https://..."
}
```
Transactional requires separate enablement; counts under transactional consent.
### List campaigns
```bash
GET https://api.postscript.io/api/v2/campaigns
```
### List automations (flows)
```bash
GET https://api.postscript.io/api/v2/automations
```
### Webhooks
Subscribe to events: `subscriber.created`, `subscriber.unsubscribed`, `message.delivered`, `message.failed`, `conversion.attributed`.
## API Pattern
REST + JSON. Standard `Bearer` auth. Pagination via `cursor` and `limit` (max 100).
## Key Features
- Native Shopify integration: purchases, abandoned carts, browse, product catalog auto-sync
- Strong abandoned cart and browse abandonment automation builders
- AI Reply (auto-reply trained on brand voice)
- Conversational SMS / live agent for two-way
- Opt-in tools: popups, keyword opt-in, checkout opt-in
- A2P 10DLC managed in-platform
- Reporting: revenue, click-through, conversion attribution, opt-out rate
## Pricing
- Plans: Starter (free, 1K msgs/mo), Growth ($100+/mo), Professional, Enterprise
- Per-send pricing on top: ~$0.015 SMS, ~$0.04 MMS
- Annual contracts standard at Growth+
- Pricing scales meaningfully past 50K subscribers
## When to Use
- Shopify DTC brand wanting SMS-specific tooling (vs combined email/SMS)
- Need deep abandoned cart, browse abandonment, post-purchase automation out of the box
- Want managed A2P 10DLC + compliance tools
- Mid-size DTC brand (10K500K SMS subscribers)
## When NOT to Use
- Non-Shopify ecom — integration is shallow
- Already on Klaviyo for email and SMS is secondary — Klaviyo SMS is simpler
- Mid-market/enterprise needing concierge support — Attentive
- Custom platform or B2B SaaS — Twilio
## Relevant Skills
- sms
- emails (run alongside via Klaviyo or similar)
- churn-prevention (win-back flows)
- onboarding (post-purchase activation)
+257
View File
@@ -0,0 +1,257 @@
# RankParse
Agent-friendly SEO data API for backlinks, domain authority, tech stack, and on-page metadata. Designed as a low-cost alternative to enterprise SEO suites.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API at `api.rankparse.com` |
| MCP | ✓ | Hosted MCP server for agent use |
| CLI | [](../clis/rankparse.js) | Node CLI wrapper |
| SDK | - | API-only (SDKs in progress) |
## Authentication
- **Type**: API Key
- **Header**: `X-API-Key: rp_...`
- **Get key**: Sign up at https://rankparse.com and create a key in the dashboard
- **Billing**: Credit-based (one-time credit packs, no subscription). Each endpoint deducts a fixed number of credits per call.
## Common Agent Operations
### Domain authority
```bash
GET https://api.rankparse.com/v1/domain-authority?domain=example.com
X-API-Key: rp_...
```
Returns authority score, registered date, registrar, and popularity rank.
### Backlinks
```bash
GET https://api.rankparse.com/v1/backlinks?domain=example.com&limit=100
X-API-Key: rp_...
```
Optional params: `sort=importance|recent`, `from_domain=`, `link_type=`, `score=true`.
### Referring domains
```bash
GET https://api.rankparse.com/v1/referring-domains?domain=example.com&limit=100
X-API-Key: rp_...
```
### Outbound links
```bash
GET https://api.rankparse.com/v1/outbound-links?domain=example.com&limit=100
X-API-Key: rp_...
```
### Anchor text profile
```bash
GET https://api.rankparse.com/v1/anchor-text?domain=example.com&limit=100
X-API-Key: rp_...
```
### Top pages
```bash
GET https://api.rankparse.com/v1/top-pages?domain=example.com&limit=50
X-API-Key: rp_...
```
### Domain overlap
```bash
GET https://api.rankparse.com/v1/domain-overlap?domains=a.com,b.com,c.com
X-API-Key: rp_...
```
Compare 25 domains.
### Link intersect
```bash
GET https://api.rankparse.com/v1/link-intersect?domain_a=a.com&domain_b=b.com
X-API-Key: rp_...
```
Domains that link to both targets.
### Competitor gap
```bash
GET https://api.rankparse.com/v1/competitor-gap?domain=mysite.com&vs=competitor.com
X-API-Key: rp_...
```
### Similar domains
```bash
GET https://api.rankparse.com/v1/similar-domains?domain=example.com
X-API-Key: rp_...
```
### Tech stack
```bash
GET https://api.rankparse.com/v1/tech-stack?domain=example.com
X-API-Key: rp_...
```
### Page SEO
```bash
GET https://api.rankparse.com/v1/page-seo?url=https://example.com/page
X-API-Key: rp_...
```
Returns title, meta description, OG tags, canonical, and structured metadata for a single URL.
### Page performance
```bash
GET https://api.rankparse.com/v1/page-performance?url=https://example.com/page&strategy=mobile
X-API-Key: rp_...
```
Core Web Vitals via Google PageSpeed Insights. Daily quotas apply.
### Site health
```bash
GET https://api.rankparse.com/v1/site-health?domain=example.com
X-API-Key: rp_...
```
### Sitemap
```bash
GET https://api.rankparse.com/v1/sitemap?domain=example.com&limit=100
X-API-Key: rp_...
```
### Crawl history
```bash
GET https://api.rankparse.com/v1/crawl-history?domain=example.com
X-API-Key: rp_...
```
Wayback Machine snapshots for the domain.
### Link audit
```bash
GET https://api.rankparse.com/v1/link-audit?domain=example.com
X-API-Key: rp_...
```
Combined health score, risk flags, anchor profile, and top backlinks.
### Site explorer
```bash
GET https://api.rankparse.com/v1/site-explorer?domain=example.com
X-API-Key: rp_...
```
All-in-one snapshot of a domain.
### Batch lookup
```bash
POST https://api.rankparse.com/v1/batch
Content-Type: application/json
X-API-Key: rp_...
{ "domains": ["a.com", "b.com", "c.com"] }
```
Bulk domain summaries in one call.
## Free Tools (Unauthenticated)
Public, IP-rate-limited endpoints for quick lookups without an API key:
- `GET /v1/tools/backlinks?domain=`
- `GET /v1/tools/domain-authority?domain=`
- `GET /v1/tools/tech-stack?domain=`
- `GET /v1/tools/similar-websites?domain=`
- `GET /v1/tools/domain-age?domain=`
- `GET /v1/tools/meta-tag-analyzer?url=`
- `GET /v1/tools/link-intersect?domain_a=&domain_b=`
- `GET /v1/tools/page-speed?url=`
## Key Response Fields
### Domain Metrics
- `authority` - Domain authority score
- `popularity_rank` - Tranco popularity rank
- `registered_at` - Domain registration date
- `registrar` - Registrar name
### Backlink Fields
- `from_url` - Source URL
- `to_url` - Target URL
- `anchor` - Anchor text
- `link_type` - dofollow / nofollow / ugc / sponsored
- `first_seen` - First discovery date
## When to Use
- Backlink discovery and analysis
- Competitor link research and gap analysis
- Domain authority lookups at scale
- Tech stack detection
- On-page SEO audits
- Sitemap and crawl history discovery
- Agent-driven SEO workflows where per-call cost matters
## Pricing Model
- Pay-as-you-go credit packs (no subscription)
- Most domain endpoints: 12 credits per call
- Aggregated endpoints (overlap, intersect, similar, gap): 5 credits
- Link audit: 8 credits
- Site explorer: 10 credits
- Batch: 1 credit per domain
- Free tier available for unauthenticated endpoints
## MCP Server
RankParse ships a hosted MCP server exposing all endpoints as tools — connect from Claude, Cursor, or any MCP-compatible agent. See https://rankparse.com for connection details.
## Relevant Skills
- seo-audit
- content-strategy
- competitors
- competitor-profiling
- ai-seo
- site-architecture
- schema
+152
View File
@@ -0,0 +1,152 @@
# Twilio
Programmable communications platform: SMS, MMS, WhatsApp, voice, email (via SendGrid). The default low-level API for custom SMS builds, transactional messaging, and B2B SaaS embedding SMS into products.
## Capabilities
| Integration | Available | Notes |
|-------------|-----------|-------|
| API | ✓ | REST API, well-documented, mature |
| MCP | - | Not available natively (community wrappers exist) |
| CLI | ✓ | Official `twilio` CLI |
| SDK | ✓ | Node, Python, Ruby, PHP, Java, Go, C#, .NET |
## Authentication
- **Type**: Basic auth with Account SID + Auth Token (or API Key SID + Secret)
- **Header**: `Authorization: Basic base64(AccountSID:AuthToken)`
- **Get credentials**: https://console.twilio.com → Account Info
- **Recommendation**: Use API Keys (revocable, scoped) for production rather than the master Auth Token
## Common Agent Operations
### Send SMS
```bash
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
To=+15551234567
From=+15559876543
Body=Hello from Twilio
```
### Send MMS
```bash
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json
To=+15551234567
From=+15559876543
Body=Check this out
MediaUrl=https://example.com/image.jpg
```
### List messages
```bash
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json?PageSize=50
```
### Get message status
```bash
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages/{MessageSid}.json
```
Status values: `queued`, `sending`, `sent`, `delivered`, `undelivered`, `failed`.
### List phone numbers
```bash
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
```
### Buy a phone number
```bash
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers.json
PhoneNumber=+15559876543
```
### Configure webhook for inbound messages
```bash
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/IncomingPhoneNumbers/{Sid}.json
SmsUrl=https://your-app.com/sms-webhook
SmsMethod=POST
```
Inbound SMS POSTs to the webhook with: `From`, `To`, `Body`, `MessageSid`, `NumMedia`, etc.
### A2P 10DLC registration (US)
```bash
# Create brand
POST https://messaging.twilio.com/v1/a2p/BrandRegistrations
CustomerProfileBundleSid=...
A2PProfileBundleSid=...
# Create campaign
POST https://messaging.twilio.com/v1/Services/{ServiceSid}/Compliance/Usa2p
BrandRegistrationSid=...
Description=...
MessageSamples[]=Sample text 1
MessageFlow=Opt-in flow description
UseCase=MARKETING
```
Most workflows are clearer in the Console UI. Programmatic registration is for high-scale platforms managing many brands.
## API Pattern
REST + form-encoded request bodies (not JSON for most endpoints). Resources nested under Account: `/Accounts/{AccountSid}/...`. Pagination via `Page`, `PageSize`, `NextPageUri`.
## Key Concepts
- **Messaging Service**: virtual sender container; load-balances across multiple numbers, handles A2P registration grouping
- **Sticky Sender**: same recipient always receives from the same number within a service
- **Geo-Match**: route to a number matching the recipient's country/region
- **Status Callback**: webhook fired on every delivery state change
- **Carrier Lookup**: pre-send check for line type (mobile, landline, VoIP) — costs ~$0.005
## Pricing
- US 10DLC SMS: $0.0079/msg
- US toll-free SMS: $0.0079/msg
- US short code SMS: $0.0079/msg + $1,000/mo lease
- MMS: ~$0.02
- Carrier surcharges (~$0.005 US 10DLC)
- A2P 10DLC: ~$15 brand + $10/mo per campaign
- Phone number rental: $1.15/mo (10DLC) to $2/mo (toll-free)
## Rate Limits
- Default: 1 msg/sec on long codes (10DLC trust score raises this to 4100+)
- Short code: 100+ msg/sec
- Messaging Services throttle automatically
- Carrier filtering applies above contracted throughput
## When to Use
- Building custom SMS flows into a product (B2B SaaS, mobile apps)
- Transactional and auth SMS (OTPs, alerts, notifications)
- Multi-channel orchestration (SMS + voice + WhatsApp)
- High-volume programmable messaging
- When you need full control and minimal abstraction
- Backing store for Customer.io / Segment / other orchestration layers
## When NOT to Use
- DTC ecom marketing flows — use Klaviyo, Postscript, or Attentive (better tooling for cart recovery, segments, A/B tests)
- If you don't want to handle compliance plumbing — Twilio gives you primitives, not policy
- Marketing UI for non-technical users — there isn't one
## Relevant Skills
- sms
- emails (transactional sister product via SendGrid)
- onboarding (post-signup SMS milestones)