本技能分五个顺序阶段处理营销活动,每个阶段需经负责人批准:
简报 → 日历 → 素材清单 → Canva 设计 → 文案 → HubSpot 暂存
| 路径 | 渠道 | 本技能产出 |
|---|---|---|
| Canva(社交) | Instagram、Facebook、X/Twitter、LinkedIn | Canva 设计 + 文案 + 已排期 HubSpot 帖子 |
| 纯文本 | 邮件(新闻通讯、营销、持续触达) | 主题 + 预标题 + 正文,内联展示供负责人发送 |
Canva 在任何情况下都不用于邮件行——不使用模板、
不自动填充、不复制设计、不上传素材、不导出。负责人
已将邮件路径明确排除在 Canva 使用范围之外,因为当图片
槽位超过可用照片时,邮件模板自动填充会生成占位图形,
且变体缩略图无法在聊天预览中渲染。如果负责人要求 Canva 邮件设计,参见
reference/gotchas.md 了解重定向话术。
在第 1 阶段之前确认:
简报。 用户已引用或粘贴已批准的简报。如果没有: "在构建营销活动之前,我需要内容简报。您有 来自内容策略技能的简报吗,还是想现在写一份?"
Canva 套餐。 Pro/Teams 需要从用户的模板库中手动选择模板 (无自动填充 API)。Enterprise 可以从品牌模板自动填充。
HubSpot 套餐。 社交暂存需要 Marketing Hub Professional。 Starter 或 Free → 跳过第 5 阶段,导出 CSV (见 reference/hubspot-staging.md)。
品牌素材。 确认产品照片在本地磁盘的路径或在 Canva 中品牌工具包已上线。
生成预算。 预估营销活动的 Canva 用量并在第 1 阶段 开始前展示。每个 Canva 行默认 3 个候选方案; 每个设计消耗约 5 次 API 调用(自动填充 + 导出 + 轮询)。
本次营销活动的生成预算:
Canva(社交)行数:8
每行候选方案数: 3 (默认——说"单个候选方案"则使用 1)
总设计数: 24
API 调用数(约): ~120 (自动填充 + 导出 + 轮询)
Canva 限制:100 请求/分钟。这将花费约 2-3 分钟
生成时间,完全在您的套餐限制内。继续吗?
如果预估总设计数超过 30,建议提前使用单候选方案模式 ——大型活动很快就会耗尽配额。负责人可以在第 1 阶段 开始前将默认值覆盖为每行 1、2 或 3 个候选方案。 整个会话锁定所选值。
从简报中提取:内容主题、渠道、发布频率、固定日期 (发布、促销、节假日)。
构建包含 路径 列的日历表,将每行路由到 Canva
或纯文本起草:
| 日期 | 渠道 | 路径 | 主题 | 素材类型 | 文案/主题角度 |
|---|---|---|---|---|---|
| 6月2日 | Instagram feed | Canva(社交) | 亚麻发布 | Square post | "finally, a dress…" |
| 6月5日 | 邮件 | 纯文本 | 亚麻发布 | 邮件正文 | "Linen that actually breathes" |
在展示前将每个邮件渠道行标记为 纯文本。上限 30 天,
除非简报另有规定。预先标记排期冲突(同一天同一产品的 两个帖子)。
检查点 1。 展示日历。询问:"这符合计划吗? 需要调整日期、添加渠道或更换主题吗?"迭代修改直到 批准,然后大声重述分工——"N 行通过 Canva,M 行 通过纯文本起草"——然后继续。在此阶段发现分类错误 是零成本的;在生成设计后发现则代价高昂。
邮件行完全跳过此阶段。对于每个 Canva(社交)
行,构建模板 需要什么以及已经有什么的清单。
按名称列举每个图片槽位。 方形 Instagram
帖子通常有 1-2 个图片槽位;轮播和产品网格可以有 5 个以上。单独列出
每一个(Header_Image、Product1_Image、Product2_Image、
…)——绝不要将它们汇总为"产品图片"。
dataset[].label 中读取字段名
(GET /v1/brand-templates/{id})。盘点可用素材。 来自简报的文本内容(产品
名称、促销文案、标语、定价)、已上传到 Canva 的产品照片
(GET /v1/assets)或负责人本地磁盘中的照片、品牌工具包
颜色和字体(Enterprise)。
构建逐槽位缺口表。 每个设计每个槽位一行——不是 每个设计一行。
| 日期 | 槽位名称 | 槽位类型 | 可用素材 | 状态 |
|---|---|---|---|---|
| 6月2日 | Hero_Image | image | bloom_summer.jpg → asset_id 待定 | 上传 |
| 6月2日 | Headline | text | "Summer linen, finally" | 就绪 |
| 6月9日 | Product1_Image | image | — | 缺失 |
与负责人解决槽位/素材不匹配问题。 如果模板的图片 槽位多于简报提供的照片,暂停并询问:
"Summer Carousel" 模板有 5 个图片槽位。简报只提供了 1 张
照片(bloom_summer.jpg)。我应该如何填充其余 4 个?
1. 在所有 5 个槽位中重复使用同一张照片
2. 您发给我另外 4 张照片(文件路径)
3. 选择一个更简单的、槽位更少的模板
在负责人选择之前不进行任何生成操作。用空槽位生成 会产生充满 Canva 默认风景占位符的设计。
上传缺失的照片并捕获已验证的 asset ID。 通过
POST /v1/asset-uploads 上传,然后轮询
GET /v1/asset-uploads/{job_id} 直到
status == "success"。记录响应中的
asset.id——这是
唯一能在自动填充图片字段中使用的值。传入空字符串、URL、 文件路径或过期
ID 都会静默渲染 Canva 的库存风景图形 而非照片。
确认清单。 向负责人展示完成的逐槽位表,每个槽位
已解决且每个图片 asset.id 已确认。这是 Canva API 调用
之前的最后一站。
在任何 Canva API 调用之前,重读日历并去掉 路径 不是
Canva(社交) 的所有行。邮件行不经过此阶段。
逐行生成设计,每次一个日历行,每行 3 个候选方案 (或预检时选择的值)。每行遵循相同的循环: 生成候选方案 → 验证 → 导出 → 视觉检查 → 重试失败项 → 展示 → 等待负责人选择 → 下一行。每行之间暂停 30 秒。这将最大并发量限制在每约 30 秒 3 次生成 + 3 次导出 ——远低于 Canva 的 100 次/分钟速率限制。不要并行处理 多行;一次一行是防止负责人在营销活动中途遇到配额限制 的保护措施。
轮询频率。 每 3-5 秒轮询一次任务状态,不要更快。 更频繁的轮询消耗配额而不会加速完成。
预览 URL——只有一种类型可以安全嵌入。 自动填充响应
返回 design.canva.ai 缩略图,几分钟后就会过期;将它们
嵌入为 markdown 图片会产生损坏的"显示图片"占位符。 永久导出
URL(export-download.canva.com 或
export-design MCP 工具)不会过期。原生 Cowork
轮播使用连接器的身份 验证会话来渲染自动填充结果——让它们自行渲染,
不要重新嵌入。
确定模板。(每会话一次——跨行使用相同模板, 除非日历混合了素材类型。)
GET /v1/brand-templates
按素材类型过滤。GET /v1/designs?ownership=any&query={template name},
向负责人展示前 3 个,在生成前确认一个。并行生成该行的候选方案。 同时发起该行的 3 个 候选方案(或预检时的 N 个)。
POST /v1/autofills 每个候选方案带模板 ID
和字段值。同时轮询所有任务。POST /v1/designs 创建副本。描述负责人在
Canva 中应用的文本和图片编辑;收集设计 ID 回来。验证任务状态。 对于每个候选方案,确认
GET /autofills/{job_id} 返回
status == "success" 且 result.design.id
存在。逐设计处理错误:
JOB_FAILED → 读取
job.error.message,修复字段值或 asset
ID,重试一次。
RATE_LIMIT_EXCEEDED(本会话中第一次命中)→ 等待 60
秒, 对该候选方案重试一次。这处理瞬时峰值。
RATE_LIMIT_EXCEEDED(本会话中第二次命中)或任何
quota_exceeded / 日配额错误 → 立即停止生成。
不要重试。展示进度并询问:
Canva 正在对营销活动进行速率限制。当前状态:
✓ 已生成: 帖子 1-4(12 个设计)
⏸ 剩余: 帖子 5-8(12 个设计尚未生成)
我应该如何继续?
1. 剩余行改用每行 1 个候选方案(共 4 个设计)——现在完成
2. 暂停营销活动——60 分钟后配额恢复时继续
3. 停止生成——用现有成果继续,进入文案阶段
等待负责人选择。不要循环重试。
将每个成功候选方案导出为永久 PNG。 并行发起 该行的导出。
POST /v1/exports 带
format.type: "png",轮询
GET /v1/exports/{job_id} 直到成功,捕获
urls[0]。export-design 带设计 ID。这些永久 URL 是嵌入预览并后续附加到 HubSpot 帖子的 内容。自动填充响应缩略图从不在下游使用。
视觉验证每个导出。 查看图片并拒绝以下任何情况 ——它们都表示未填充槽位或错误的素材:
如果候选方案未通过验证:重新检查受影响槽位的清单, 修复
asset.id,重新生成该单个候选方案,重新导出,
重新验证。
部分失败时逐候选方案重试。 如果该行 N 个候选方案中 有 1 个在第 3 或第 5 步失败,只重新生成那个—— 不要重做整行,不要展示部分损坏的轮播。如果第二次 尝试也失败:
6 月 9 日帖子的第三个候选方案持续失败——Canva 返回了
[错误 / 渲染了占位符]。我应该如何继续?
1. 跳过——展示其他 2 个并继续
2. 仅对该候选方案更换一个更简单的模板
3. 用不同的照片再试一次展示该行的候选方案。 让原生 Cowork 轮播 渲染自动填充工具结果。在其下方添加文本提示:
6 月 9 日的候选方案已就绪——向上滚动查看轮播。
我应该使用哪一个作为 6 月 9 日的帖子?
如果轮播未渲染或某个位置损坏,则改用第 4 步的 永久导出 PNG URL
嵌入。最后备选方案:链接到 设计的 Canva 编辑
URL(https://www.canva.com/d/{design_id})。 绝不重新嵌入
design.canva.ai URL。
暂停 30 秒,然后移至下一行。
检查点 2。 负责人为每个日历行选择一个设计后 完成。如果他们想要重新生成,只重新生成那一个候选方案。
为每个日历行起草文案。社交行获得配文;邮件行获得 完整邮件。
社交媒体配文——Instagram、Facebook、X、LinkedIn:
邮件内容——Claude 撰写完整邮件;不使用 Canva:
在每个社交行下方内联展示配文。在每个邮件行下方内联 展示完整邮件:
主题:<主题行>
预标题:<预标题文本>
<正文文本>
完整工作示例见 reference/examples/boutique-brief-campaign.md。
检查点 3。 "有需要重写的文案或邮件吗?标注日期和 要更改的内容。"迭代修改直到批准。
将社交帖子暂存在 HubSpot 中。邮件内容不暂存——内联 展示供负责人复制到他们的邮件工具中。API 字段参考 见 reference/hubspot-staging.md。
创建营销活动。
POST /marketing/v3/campaigns 带
营销活动名称和日历中的开始/结束日期。
暂存每个社交帖子。 对每个
Canva(社交) 行 POST 到 HubSpot Social
API:
channel:将日历渠道映射到 HubSpot 账户 IDscheduledAt:ISO 8601
日期时间——调用前确认是未来时间content.body:已批准的配文attachments:第 3 阶段的永久 Canva 导出 PNG URLstatus:SCHEDULED(绝不使用
PUBLISHED)确认队列。 调用
GET /marketing/v3/social/posts?status=SCHEDULED,展示列表,
提供 HubSpot 营销活动视图的直接链接。
展示邮件内容以供移交。 对于每个邮件行,按发送日期 分组内联展示已批准的主题 + 预标题 + 正文。负责人 将这些复制到他们的邮件工具(HubSpot Marketing Email、 Mailchimp、Gmail)。
最终检查点。
您的社交帖子已在 HubSpot 中排期:[链接]
它们将按计划发布——您可以在 HubSpot 中取消或编辑任何帖子。
邮件内容已起草如下——准备好发送时请逐封复制到您的
邮件工具中:
6 月 5 日—— "Spring projects are booking up"
7 月 15 日—— "Summer maintenance windows are filling"
结束前有需要更改的吗?
路径 列。SCHEDULED 状态暂存; 负责人控制上线。design.canva.ai URL。
它们会过期。