Canva campaign creator
Skill findscripter/everything-skills/06-creative/canva-campaign-creator
当你拿到已批准的内容简报、要把它端到端落地为一场社媒+邮件营销活动时使用;做发布排期表→素材清单→Canva 设计生成→文案→HubSpot 排期入队(每步需 owner 显式批准);不适用于邮件路径走 Canva 设计、自动发布、或无简报开工。触发词:做内容/生成帖子、营销活动落地、Canva 排期From its SKILL.md
npx -y skills add findscripter/everything-skills --skill canva-campaign-creatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
12.4 KB, ~4.2k tokens by cl100k_base, as published. Nobody here has run it
何时使用
拿到一份已批准的内容简报后,需要把它端到端落地成一场营销活动:排期、出图、写文案、入队待发。本技能按五个串行阶段推进,每个阶段都由 owner 显式批准后才进入下一阶段:
简报 → 排期日历 → 素材清单 → Canva 设计 → 文案 → HubSpot 排期入队
两条路径分流(排期表用 Path 列标注每一行):
| 路径 | 渠道 | 产物 |
|---|---|---|
| Canva(社媒) | Instagram、Facebook、X、LinkedIn | Canva 设计 + 文案 + HubSpot 排期帖 |
| 纯文本 | 邮件(newsletter / 营销 / drip) | 主题 + 预览文字 + 正文,内联呈现给 owner 自行发送 |
不该用本技能的边界:
- 邮件行绝不走 Canva:不建模板、不 autofill、不复制设计、不上传/导出素材。邮件正文由 Claude 直接写成纯文本内联呈现。原因:邮件模板 autofill 在图片槽多于可用照片时会塞占位图,且缩略图在聊天预览里渲染失败。owner 若要 Canva 邮件设计 → 见源仓
reference/gotchas.md的转向话术。 - 不做自动发布:所有 HubSpot 帖子只入队为
SCHEDULED,上线由 owner 控制。 - 无简报不开工:没有简报先索取,别凭空动手。
步骤 / 指令
飞行前检查(Stage 1 之前)
- 简报:用户已引用/粘贴已批准简报;否则索取。
- Canva 等级:Pro/Teams 需从用户库手选模板(无 autofill API);Enterprise 可从品牌模板 autofill。
- HubSpot 等级:社媒入队需 Marketing Hub Professional;Starter/Free → 跳过 Stage 5,改导出 CSV。
- 品牌素材:确认磁盘上产品照路径,或 Canva 品牌套件已就绪。
- 生成预算:开工前估算并公示设计总量。默认每行 3 个候选,每个设计约 5 次 API 调用(autofill + export + 轮询)。预计总设计数 > 30 时,先建议单候选模式;锁定该值贯穿整个会话。
本次活动生成预算:
Canva(社媒)行数: 8
每行候选数: 3 (默认;说 "单候选" 改为 1)
设计总数: 24
API 调用(约): ~120
Canva 限速 100 请求/分钟,约 2-3 分钟,余量充足。继续?
Stage 1 — 发布排期日历
从简报提取主题、渠道、节奏、硬日期(上新/促销/节日)。建表,每行用 Path 列路由到 Canva 或纯文本:
| Date | Channel | Path | Theme | Asset type | Caption/Subject angle |
|---|---|---|---|---|---|
| Jun 2 | Instagram feed | Canva(社媒) | Linen launch | Square post | "finally, a dress…" |
| Jun 5 | 纯文本 | Linen launch | Email body | "Linen that actually breathes" |
所有邮件行标 纯文本;默认 30 天封顶;提前标出排期冲突(同日同产品两帖)。
检查点 1:展示日历 → "符合计划吗?要改日期/加渠道/换主题吗?" 迭代至批准后,口头复述分流:"N 行走 Canva,M 行走纯文本"。在此抓错是免费的,出图之后再抓就不是了。
Stage 2 — 素材清单(仅 Canva 行)
邮件行整段跳过。逐 Canva 行建清单:
- 逐一列出每个图片槽并命名(
Header_Image、Product1_Image…),绝不笼统写成 "产品图"。Enterprise 从GET /v1/brand-templates/{id}的dataset[].label读字段名;Pro/Teams 数模板里每个独立图片矩形。 - 盘点可用素材:简报文本(产品名、报价、定价)、已上传 Canva 的照片(
GET /v1/assets)或磁盘照片、品牌色与字体(Enterprise)。 - 建逐槽差距表(每槽一行,不是每设计一行):
| Date | Slot name | Slot kind | Available asset | Status |
|---|---|---|---|---|
| Jun 2 | Hero_Image | image | bloom_summer.jpg → asset_id pending | upload |
| Jun 9 | Product1_Image | image | — | MISSING |
- 槽位多于照片时暂停问 owner(复用同图 / 补图 / 换简单模板),未选定前不发任何生成调用——空槽会渲染成 Canva 默认风景占位图。
- 上传缺图并拿到已验证的 asset ID:
POST /v1/asset-uploads,轮询GET /v1/asset-uploads/{job_id}直到status == "success",记录响应里的asset.id——这是 autofill 图片字段唯一有效的值;传空串/URL/文件路径/过期 ID 都会静默渲染成 Canva 库存风景图。 - 确认清单:向 owner 展示每槽已解决、每个图片
asset.id已确认的完整表——这是调 Canva API 前最后一站。
Stage 3 — Canva 设计生成
调任何 Canva API 前,重读日历,丢弃 Path 不是 Canva(社媒) 的行。
一次只处理一个日历行,每行 3 候选(或飞行前选定值)。每行循环:生成候选 → 验证 → 导出 → 肉眼检查 → 重试失败项 → 呈现 → 等 owner 选 → 下一行。行间停 30 秒,不并行多行——这是防止中途撞配额的保护。
- 轮询节奏:每 3-5 秒查一次 job 状态,别更快。
- 预览 URL 只有一种可安全嵌入:autofill 返回的
design.canva.ai缩略图几分钟内过期,嵌入会变成坏图。只嵌入永久导出 URL(export-download.canva.com或export-designMCP 工具)。原生 Cowork 轮播让其自行渲染,别重新嵌入。
单行循环:
- 定模板(每会话一次):Enterprise
GET /v1/brand-templates按资产类型过滤;Pro/TeamsGET /v1/designs?ownership=any&query={模板名},呈现前 3 个让 owner 确认。绝不替 Pro/Teams 自动选模板。 - 并行生成本行候选:Enterprise 每候选
POST /v1/autofills(模板 ID + 字段值),并发轮询;Pro/TeamsPOST /v1/designs建副本,描述文本/图片编辑,收回 design ID。 - 验证 job 状态:确认
GET /autofills/{job_id}返回status == "success"且有result.design.id。错误分级处理:JOB_FAILED→ 读job.error.message,修字段值/asset ID,重试一次。RATE_LIMIT_EXCEEDED(本会话首次)→ 等 60s,仅重试该候选一次。RATE_LIMIT_EXCEEDED(第二次)或任何quota_exceeded/日上限错误 → 立即停止生成,不重试,汇报进度并让 owner 选(切单候选跑完 / 暂停 60 分钟 / 用现有的转文案)。
- 每个成功候选导出为永久 PNG(并行):REST
POST /v1/exports(format.type: "png"),轮询GET /v1/exports/{job_id}至成功,取urls[0];或 Canva MCPexport-design。这些永久 URL 才用于预览嵌入和后续 HubSpot 附件。 - 肉眼验证每张导出,命中即拒:带云和绿丘的通用风景(Canva 默认占位)、该放照片处的纯灰矩形、lorem-ipsum/模板默认文本、主体与简报不符(错产品/错品牌)。失败 → 复查该槽清单、修
asset.id、只重生成该候选、重导出、重验证。 - 部分失败按候选重试:N 个里 1 个失败,只重生成那一个,别重做整行、别呈现半坏轮播。第二次仍失败 → 让 owner 选(跳过 / 换简单模板 / 换张照片再试)。
- 呈现本行候选:让原生 Cowork 轮播渲染 autofill 结果,下方加文字提示让 owner 选。轮播不渲染时改嵌 Step 4 的永久 PNG;最终兜底链到
https://www.canva.com/d/{design_id}。绝不重新嵌入design.canva.aiURL。 - 停 30 秒,进入下一行。
检查点 2:owner 为每个日历行选定一个设计即满足;要重生成只重生成那一个候选。
Stage 4 — 文案撰写
每行写文案:社媒行写 caption,邮件行写整封邮件。
社媒 caption(IG/FB/X/LinkedIn):长度按渠道(IG ≤ 2200、FB ≤ 500 推荐、X ≤ 280);结构 hook → 一个产品利益点 → CTA → 3-5 个话题标签(不是 30 个);语气匹配简报 tone;不写 "Exciting news!"/"We're thrilled to announce" 这类填充。
邮件正文(Claude 全写,无 Canva):主题 ≤ 50 字、具体、不标题党;预览文字 ≤ 90 字、补充主题而非重复;正文纯散文 100-250 词(开头钩子 → 1-2 段实质 → 单一明确 CTA → 签名);语气同社媒;不引用图片(别写 "见上图");每封一个 CTA。
社媒 caption 内联呈现在对应行下;邮件按下列格式内联:
Subject: <主题>
Preheader: <预览文字>
<正文>
检查点 3:"有要重写的 caption 或邮件吗?标出日期和改动。" 迭代至批准。
Stage 5 — HubSpot 排期入队 + 邮件交接
社媒帖入队 HubSpot;邮件不入队,内联呈现给 owner 自行复制到其邮件工具。
- 建活动:
POST /marketing/v3/campaigns(活动名 + 起止日期)。 - 逐
Canva(社媒)行入队:POST到 HubSpot Social API:channel映射到 HubSpot 账号 ID;scheduledAt用 ISO 8601 且调用前确认在未来;content.body填已批准 caption;attachments填 Stage 3 的永久 Canva 导出 PNG URL;status恒为SCHEDULED(绝不PUBLISHED)。 - 确认队列:
GET /marketing/v3/social/posts?status=SCHEDULED,列出并给 HubSpot 活动视图直链。 - 交接邮件内容:每个邮件行按发送日期分组,内联呈现已批准的主题 + 预览 + 正文,owner 自行复制到其邮件工具。
最终检查点:告知社媒已排期入队(附链接,可在 HubSpot 取消/编辑),邮件内容内联待复制,问 "结束前还有要改的吗?"。
示例
完整可运行示例(单槽社媒、多槽模板)见源仓 reference/examples/boutique-brief-campaign.md。典型一行的端到端:Jun 2 IG 方图 → 清单 Hero_Image 上传拿 asset.id → 3 候选 autofill → 导出 3 张永久 PNG → 肉眼剔除风景占位 → 轮播呈现让 owner 选 1 → 写 caption(hook+利益点+CTA+4 标签)→ HubSpot 排期为 Jun 2 9:00 SCHEDULED。
注意事项(审批闸门)
- 邮件行不调任何 Canva:每次 API 调用前重查
Path列。 - 不发布:HubSpot 帖恒为
SCHEDULED。 - 飞行前必公示生成预算:owner 见总设计数并批准后再进 Stage 1。
- Stage 3 一次一行:行内候选并行,行间串行 + 30s 间隔——这是配额保护。
- 第二次配额错误就暂停问 owner,绝不循环重试。
- 呈现前必导出永久 PNG:job 成功 ≠ 设计渲染正确。
- 消息里绝不嵌
design.canva.aiURL(会过期)。 - 单候选失败绝不重做整行:只按候选重试。
- Pro/Teams 绝不自动选模板:始终确认。
- 绝不跳过逐槽清单:多槽模板任一空槽会渲染风景占位。
- 绝不跳过检查点 1:日历批准前出图是本技能最大的返工来源。
互见
- 源仓参考:
reference/canva-api.md(Canva Connect API 端点、素材上传、导出格式、MCP 等价)、reference/hubspot-staging.md(HubSpot Social API 与非 Pro 等级的 CSV 兜底)、reference/gotchas.md(每种生产失败模式的好/坏对照)、reference/examples/boutique-brief-campaign.md(完整示例)。 - 上游:内容简报通常来自 content-strategy 技能。
采编自 anthropics/knowledge-work-plugins(small-business/skills/canva-creator),遵循 Apache-2.0 许可。
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.