需通过扣子生成标准化文案并用Canva API自动填充模板导出海报:先在扣子建Bot并配置HTTP插件与知识库,设定纯文本输出格式;再在Canva创建含{{headline}}、{{body}}占位符的模板,获取Template ID;最后用Python脚本调用双方API完成文案获取、OAuth鉴权、设计创建与高清PNG导出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让社交媒体海报的文案内容和视觉设计自动匹配,避免每次都要手动调整文字排版、字体大小或配色来适配不同尺寸的封面图。扣子(Coze)负责生成符合平台调性、带话题标签和行动号召的文案,Canva API 负责将文案实时注入模板并导出高清图——整个流程不打开网页、不点鼠标,全部由 API 驱动。
在扣子中搭建文案生成 Bot
第一步:登录扣子后台 → 创建新 Bot → 选择「空白 Bot」模板。
第二步:在「技能」里添加「HTTP 请求」插件,用于后续调用 Canva API;同时开启「知识库」,上传你整理好的各平台文案风格示例(如小红书偏口语化+emoji,LinkedIn 偏正式+数据支撑)。
第三步:编写 Bot 的提示词,明确约束输出格式:必须只返回纯文本,不含任何 Markdown、JSON 包裹或说明性语句,例如“标题:春日焕新计划|正文:3 款新品同步上线→点击预约早鸟价→#春季上新 #限时福利”。【若输出含换行符或冒号后空格不一致,Canva API 将无法准确定位占位符】
第四步:发布 Bot,复制其「Bot ID」和「API Key」,这两个值后续要在 Canva 请求头中使用。
在 Canva 开发者平台配置 API 权限
进入 Canva for Developers → 登录账号 → 点击「Create app」→ 填写应用名称(如 “SocialPoster-AutoSync”)→ 选择「Backend」类型 → 提交后获取 Client ID 和 Client Secret。
在「Permissions」中勾选三项必要权限:`designs:read`、`designs:write`、`templates:use`。注意:不勾选 `teams:read` 会导致无法访问团队模板库,但个人模板仍可用。
在「Webhooks」页留空不配置——本次流程无需事件回调,纯单向推送。
准备可变量替换的 Canva 模板
方法一:在 Canva 网页端新建设计 → 选择「Instagram 帖子」尺寸(1080×1080)→ 插入两个文本框,分别命名为 `{{headline}}` 和 `{{body}}`(命名必须含双大括号,且全小写、无空格)→ 保存为团队模板或个人模板。
方法二:若已有设计稿,用 Canva「模板编辑器」打开 → 点击文本框 → 右侧属性栏点击「Make this text dynamic」→ 输入字段名如 `headline` → 重复操作设置 `body` 字段。这一步不能跳过,否则 API 无法识别占位符。
获取该模板的 Template ID:打开模板链接,URL 中 `template/` 后面一串字符就是 ID,例如 `https://www.canva.com/templates/CA1B2c3D4e5/` → ID 为 `CA1B2c3D4e5`。【ID 区分大小写,复制时务必保留原始大小写】
用 Python 脚本串联扣子与 Canva API
第一步:安装依赖 → 打开终端运行 `pip install requests python-dotenv`。
第二步:创建 `poster_sync.py` 文件,填入以下核心逻辑:
① 读取 `.env` 文件中的 `COZE_BOT_ID`、`COZE_API_KEY`、`CANVA_CLIENT_ID`、`CANVA_CLIENT_SECRET`、`CANVA_TEMPLATE_ID`;
② 调用扣子 Bot 接口(POST `https://api.coze.com/open_api/v2/chat`),携带 `bot_id` 和 `user_id`(可固定为测试用字符串),获取返回文案;
③ 解析扣子返回的纯文本,按冒号分割提取标题与正文(如 `"标题:xxx|正文:yyy"` → `headline=xxx`, `body=yyy`);
④ 用 Canva OAuth2 流程换取 access_token:先 POST 到 `https://api.canva.com/v1/oauth/token`,传入 client_id、client_secret 和 grant_type=client_credentials;
⑤ 调用 Canva 创建设计接口:POST `https://api.canva.com/v1/designs`,Body 中包含 `template_id` 和 `variables` 字典,键名必须与模板中定义的动态字段完全一致(如 `"headline": "春日焕新计划", "body": "3 款新品同步上线→点击预约早鸟价→#春季上新 #限时福利"`);
⑥ 获取返回 JSON 中的 `design_id`,再调用 `https://api.canva.com/v1/designs/{design_id}/export` 发起导出任务,`type` 设为 `"png"`,`scale` 设为 `2`(确保高清);
⑦ 轮询 `https://api.canva.com/v1/exports/{export_id}` 直到 `status` 变为 `"succeeded"`,再从 `result.url` 下载 PNG 文件到本地 `output/poster_$(date +%Y%m%d_%H%M%S).png`。


















