[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-0694e79f-a312-4d44-b4a0-b07333a424b7":3,"$f8KprQ8hkQkCCrlAqDv5nuZKwb1RmTjwWbJ46SrmZciM":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"0694e79f-a312-4d44-b4a0-b07333a424b7","klaviyo-automation","通过Rube MCP（Composio）自动化Klaviyo任务：管理电子邮件\u002F短信活动、检查活动消息、跟踪标签和监控发送任务。始终首先搜索当前架构的工具。","cat_prod_automation","mod_productivity","sickn33,productivity","---\nname: klaviyo-automation\ndescription: \"Automate Klaviyo tasks via Rube MCP (Composio): manage email\u002FSMS campaigns, inspect campaign messages, track tags, and monitor send jobs. Always search tools first for current schemas.\"\nrisk: safe\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Klaviyo Automation via Rube MCP\n\nAutomate Klaviyo email and SMS marketing operations through Composio's Klaviyo toolkit via Rube MCP.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Klaviyo connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `klaviyo`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `klaviyo`\n3. If connection is not ACTIVE, follow the returned auth link to complete Klaviyo authentication\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. List and Filter Campaigns\n\n**When to use**: User wants to browse, search, or filter marketing campaigns\n\n**Tool sequence**:\n1. `KLAVIYO_GET_CAMPAIGNS` - List campaigns with channel and status filters [Required]\n\n**Key parameters**:\n- `channel`: Campaign channel - 'email' or 'sms' (required by Klaviyo API)\n- `filter`: Additional filter string (e.g., `equals(status,\"draft\")`)\n- `sort`: Sort field with optional `-` prefix for descending (e.g., '-created_at', 'name')\n- `page_cursor`: Pagination cursor for next page\n- `include_archived`: Include archived campaigns (default: false)\n\n**Pitfalls**:\n- `channel` is required; omitting it can produce incomplete or unexpected results\n- Pagination is mandatory for full coverage; a single call returns only one page (default ~10)\n- Follow `page_cursor` until exhausted to get all campaigns\n- Status filtering via `filter` (e.g., `equals(status,\"draft\")`) can return mixed statuses; always validate `data[].attributes.status` client-side\n- Status strings are case-sensitive and can be compound (e.g., 'Cancelled: No Recipients')\n- Response shape is nested: `response.data.data` with status at `data[].attributes.status`\n\n### 2. Get Campaign Details\n\n**When to use**: User wants detailed information about a specific campaign\n\n**Tool sequence**:\n1. `KLAVIYO_GET_CAMPAIGNS` - Find campaign to get its ID [Prerequisite]\n2. `KLAVIYO_GET_CAMPAIGN` - Retrieve full campaign details [Required]\n\n**Key parameters**:\n- `campaign_id`: Campaign ID string (e.g., '01GDDKASAP8TKDDA2GRZDSVP4H')\n- `include_messages`: Include campaign messages in response\n- `include_tags`: Include tags in response\n\n**Pitfalls**:\n- Campaign IDs are alphanumeric strings, not numeric\n- `include_messages` and `include_tags` add related data to the response via Klaviyo's include mechanism\n- Campaign details include audiences, send strategy, tracking options, and scheduling info\n\n### 3. Inspect Campaign Messages\n\n**When to use**: User wants to view the email\u002FSMS content of a campaign\n\n**Tool sequence**:\n1. `KLAVIYO_GET_CAMPAIGN` - Find campaign and its message IDs [Prerequisite]\n2. `KLAVIYO_GET_CAMPAIGN_MESSAGE` - Get message content details [Required]\n\n**Key parameters**:\n- `id`: Message ID string\n- `fields__campaign__message`: Sparse fieldset for message attributes (e.g., 'content.subject', 'content.from_email', 'content.body')\n- `fields__campaign`: Sparse fieldset for campaign attributes\n- `fields__template`: Sparse fieldset for template attributes\n- `include`: Related resources to include ('campaign', 'template')\n\n**Pitfalls**:\n- Message IDs are separate from campaign IDs; extract from campaign response\n- Sparse fieldset syntax uses dot notation for nested fields: 'content.subject', 'content.from_email'\n- Email messages have content fields: subject, preview_text, from_email, from_label, reply_to_email\n- SMS messages have content fields: body\n- Including 'template' provides the HTML\u002Ftext content of the email\n\n### 4. Manage Campaign Tags\n\n**When to use**: User wants to view tags associated with campaigns for organization\n\n**Tool sequence**:\n1. `KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS` - Get tag IDs for a campaign [Required]\n\n**Key parameters**:\n- `id`: Campaign ID string\n\n**Pitfalls**:\n- Returns only tag IDs, not tag names\u002Fdetails\n- Tag IDs can be used with Klaviyo's tag endpoints for full details\n- Rate limit: 3\u002Fs burst, 60\u002Fm steady (stricter than other endpoints)\n\n### 5. Monitor Campaign Send Jobs\n\n**When to use**: User wants to check the status of a campaign send operation\n\n**Tool sequence**:\n1. `KLAVIYO_GET_CAMPAIGN_SEND_JOB` - Check send job status [Required]\n\n**Key parameters**:\n- `id`: Send job ID\n\n**Pitfalls**:\n- Send job IDs are returned when a campaign send is initiated\n- Job statuses indicate whether the send is queued, in progress, complete, or failed\n- Rate limit: 10\u002Fs burst, 150\u002Fm steady\n\n## Common Patterns\n\n### Campaign Discovery Pattern\n\n```\n1. Call KLAVIYO_GET_CAMPAIGNS with channel='email'\n2. Paginate through all results via page_cursor\n3. Filter by status client-side for accuracy\n4. Extract campaign IDs for detailed inspection\n```\n\n### Sparse Fieldset Pattern\n\nKlaviyo supports sparse fieldsets to reduce response size:\n```\nfields__campaign__message=['content.subject', 'content.from_email', 'send_times']\nfields__campaign=['name', 'status', 'send_time']\nfields__template=['name', 'html', 'text']\n```\n\n### Pagination\n\n- Klaviyo uses cursor-based pagination\n- Check response for `page_cursor` in the pagination metadata\n- Pass cursor as `page_cursor` in next request\n- Default page size is ~10 campaigns\n- Continue until no more cursor is returned\n\n### Filter Syntax\n\n```\n- equals(status,\"draft\") - Campaigns in draft status\n- equals(name,\"Newsletter\") - Campaign named \"Newsletter\"\n- greater-than(created_at,\"2024-01-01T00:00:00Z\") - Created after date\n```\n\n## Known Pitfalls\n\n**API Version**:\n- Klaviyo API uses versioned endpoints (e.g., v2024-07-15)\n- Response schemas may change between API versions\n- Tool responses follow the version configured in the Composio integration\n\n**Response Nesting**:\n- Data is nested: `response.data.data[].attributes`\n- Campaign status at `data[].attributes.status`\n- Mis-parsing the nesting yields empty or incorrect results\n- Always navigate through the full path defensively\n\n**Rate Limits**:\n- Burst: 10\u002Fs (3\u002Fs for tag endpoints)\n- Steady: 150\u002Fm (60\u002Fm for tag endpoints)\n- Required scope: campaigns:read\n- Implement backoff on 429 responses\n\n**Status Values**:\n- Status strings are case-sensitive\n- Compound statuses exist (e.g., 'Cancelled: No Recipients')\n- Server-side filtering may return mixed statuses; always validate client-side\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List campaigns | KLAVIYO_GET_CAMPAIGNS | channel, filter, sort, page_cursor |\n| Get campaign details | KLAVIYO_GET_CAMPAIGN | campaign_id, include_messages, include_tags |\n| Get campaign message | KLAVIYO_GET_CAMPAIGN_MESSAGE | id, fields__campaign__message |\n| Get campaign tags | KLAVIYO_GET_CAMPAIGN_RELATIONSHIPS_TAGS | id |\n| Get send job status | KLAVIYO_GET_CAMPAIGN_SEND_JOB | id |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,137,1595,"2026-05-16 13:24:58",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"效率工具","productivity","mdi-lightning-bolt-outline","文档处理、数据分析、自动化工作流",4,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"自动化","automation","mdi-robot-outline","工作流自动化、批处理",3,101,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"1e7692dd-1514-4182-9d09-10bba7a495a3","1.0.0","klaviyo-automation.zip",3100,"uploads\u002Fskills\u002F0694e79f-a312-4d44-b4a0-b07333a424b7\u002Fklaviyo-automation.zip","361e374fdb956b4b9aa160c64ea1dc35ac66bd9c2dca89ea1e2be4666f173da7","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":7699}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]