Coze 实战 · 第9课 / 共 10 课 · ≈40 min · 开源部分可用

P08 · 发布 · PAT · OpenAPI 调用工作流

上级:实战总目录 · 本地:http://localhost:8888
把调试好的智能体/应用「发布」出去,创建个人访问令牌(PAT),用 curl 调 /v1/workflow/run,再用 crontab 做每日调度。

🎯 第9课目标发布智能体/应用(勾选 API + Chat SDK),创建 PAT,抄出 workflow_id,用 curl 调通 /v1/workflow/run,并配置外部 crontab(开源无内置定时)。

为什么第 9 课才发布?

学习路径说明 发布与 OpenAPI 调用需要已有可运行的工作流(P01 试运行通过)。否则 curl 调了也是空跑或 404。
本步目的 / 作用开源版发布渠道:主要是 APIChat SDK没有微信、飞书机器人、应用商店等社交/商业渠道 — 页面上看不到是正常的(IS_OPEN_SOURCE 裁剪)。
开源版没有内置工作流定时触发(Start 节点 Cron 被关掉)。「每天 9 点跑日报」要靠本课第 5 步的外部 crontab 调 OpenAPI。
0

前置检查

本步目的 / 作用:确认上一课产物(登录态、模型、智能体等)已就绪,本课才不会踩空。
  • P01 工作流 daily_competitor_report 试运行成功
  • □ 终端能执行 curl(macOS / Linux 自带)
  • □ 已登录 http://localhost:8888
1

发布:勾选 API + Chat SDK 渠道

本步目的 / 作用:草稿只在 IDE 里能玩;发布后 OpenAPI / SDK 才能调已上线版本。

路径 A · 发布智能体(P02 的 Bot)

  1. 项目开发 → 打开你的智能体(如「竞品分析」)
  2. 看页面右上角,找到蓝色或主色按钮 发布 → 单击
  3. 进入发布页 / 抽屉
  4. 「发布记录」或「版本说明」填:实战教程首发
  5. 找到「选择发布平台」或「发布渠道」列表
  6. 勾选 API(应显示「已授权」或类似绿字)
  7. 勾选 Chat SDK(同样应已授权)
  8. 不要找微信、抖音、飞书机器人 — 开源版没有
  9. 点页面右上角或底部 发布 确认
智能体发布页

图 1:智能体发布 — API / Chat SDK 已勾选。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

发布面板

图 2:发布面板总览 — 渠道选择与发布记录。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

路径 B · 发布应用(含 P01 工作流 · 调 API 通常走这条)

  1. 项目开发 → 打开应用「竞品日报实战」
  2. 进入应用 IDE(/project-ide/...
  3. 右上角 发布 → 同上勾选 API + Chat SDK
  4. 确认发布
应用发布

图 3:应用侧发布入口与渠道勾选。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

API 配置

图 4:API 渠道配置说明(若有)。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

✅ 发布成功 toast / 发布记录里出现新版本;渠道 API 为已启用状态。
2

设置 → API 授权 → 创建 PAT

本步目的 / 作用:OpenAPI 请求头需要 Authorization: Bearer <PAT>。PAT = Personal Access Token,个人访问令牌。
  1. 在任意工作空间页面(如项目开发),看左下角你的头像
  2. 左键单击头像 → 弹出菜单
  3. 设置账号设置
  4. 弹出设置窗口;看左侧标签
  5. API 授权(英文可能是 API Authorization)
  6. 右侧点 添加新令牌(空状态时中间也可能有大按钮)
  7. 名称填:local-cron(方便以后辨认)
  8. 创建 / 确认
  9. 弹窗显示一长串 token → 立刻全选复制到密码管理器或本地安全笔记
  10. 关闭弹窗(token 明文通常只显示一次
头像菜单

图 5:左下角头像 → 设置入口。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

账号设置

图 6:账号设置弹窗 — 左侧多个 Tab。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

API 授权

图 7:API 授权 Tab — 添加新令牌。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

安全 · 必读 不要把 PAT 写进前端 HTML、公开 Git 仓库或本教程网页里。泄露后立即到本页删除旧令牌并新建。
3

从浏览器 URL 抄 workflow_id

本步目的 / 作用POST /v1/workflow/run 的 JSON 里必须带 workflow_id。最稳的拿法:打开工作流画布看地址栏。
  1. 打开应用「竞品日报实战」→ 左侧资源树 → 点工作流 daily_competitor_report
  2. 进入画布编辑页
  3. 看浏览器地址栏完整 URL
  4. 找到路径里 /workflow/ 后面那一串纯数字 — 那就是 workflow_id
  5. 复制到记事本,下面 curl 要用
# 示例 URL(数字换成你自己的)
http://localhost:8888/space/7490000000000000000/project-ide/7490000000000000001/workflow/7662919178956832768
#                                                                              ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#                                                                              这就是 workflow_id
工作流 URL 中的 ID

图 8:工作流编辑页 — 从 URL 末段数字抄 workflow_id。

数字 1→2→3 = 操作顺序 · 请按编号依次点击 / 填写

curl 参数从哪来本教程示例
workflow_idURL 中 /workflow/ 后数字7662919178956832768(勿照抄,用你自己的)
parameters.report_dateP01 开始节点输出变量名2026-07-16$(date +%F)
parameters.lark_hintP01 开始节点变量增长情报群
Authorization步骤 2 创建的 PATBearer <你的PAT>
参数名大小写parameters 里的 key 必须与工作流「开始」节点定义的变量名完全一致(如 report_date 不是 report_data)。
4

终端 curl 调用工作流(复制改三处)

本步目的 / 作用:模拟外部系统(cron、后端服务)调 Coze,无需打开浏览器。
  1. 打开终端(macOS:Spotlight 搜 Terminal)
  2. 复制下面脚本
  3. COZE_PAT 换成步骤 2 的令牌
  4. WF_ID 换成步骤 3 的数字
  5. 粘贴到终端回车执行
export COZE_PAT='粘贴你的PAT_不要带尖括号'
export WF_ID='7662919178956832768'   # 换成你从 URL 抄的 workflow_id

curl -sS -X POST 'http://localhost:8888/v1/workflow/run' \
  -H "Authorization: Bearer ${COZE_PAT}" \
  -H 'Content-Type: application/json' \
  -d "{
    \"workflow_id\": \"${WF_ID}\",
    \"parameters\": {
      \"report_date\": \"$(date +%F)\",
      \"lark_hint\": \"增长情报群\"
    }
  }" | python3 -m json.tool
✅ 验收:HTTP 200;JSON 里有 code 成功字段;data 或输出里能看到 report / lark_status 等。若 P01 接了 httpbin / 真飞书,对应侧也有记录。
HTTP / 报错原因处理
401 UnauthorizedPAT 错、过期、复制不完整重新创建 PAT;检查 Bearer 后有空格
找不到工作流未发布或 workflow_id 错回步骤 1 发布;重抄 URL 数字
参数无效开始节点变量名不一致打开 P01 开始节点核对 key
连接拒绝Coze 没启动coze-studio 根目录 make web
5

crontab 每日定时(替代内置 Cron)

本步目的 / 作用原因:开源版工作流画布里的「定时触发」不可用。Linux/macOS 用系统 crontab 每天调同一个 curl 即可。
  1. 终端输入 crontab -e 回车(首次可能让你选编辑器,选 nano 最简单)
  2. 在文件末尾新起一行,粘贴下面(改 PAT 和 WF_ID)
  3. 保存退出(nano:Ctrl+O 保存,Ctrl+X 退出)
  4. crontab -l 确认规则已写入
# 每天上午 09:00 跑竞品日报(PAT 和 workflow_id 换成你的)
0 9 * * * curl -sS -X POST 'http://localhost:8888/v1/workflow/run' \
  -H "Authorization: Bearer 你的PAT粘贴在这里" \
  -H 'Content-Type: application/json' \
  -d "{\"workflow_id\":\"你的WF_ID\",\"parameters\":{\"report_date\":\"$(date +\%F)\",\"lark_hint\":\"增长情报群\"}}" \
  >> /tmp/coze-comp-daily.log 2>&1
注意 crontab 里的 % crontab 中 date 的格式串要写 \%F(反斜杠转义),否则 cron 会报错。上面示例已写好。
电脑关机则 cron 不会跑;生产环境应部署在常开服务器,并保证 localhost:8888 对该机器可达(或改成内网域名)。
6

验收清单

本步目的 / 作用:用清单自检本课是否真正做完;全部勾上再进入下一课。
  • □ 智能体或应用发布成功,渠道含 API + Chat SDK
  • □ 确认开源版无社交渠道,未误找飞书机器人发布
  • □ 设置 → API 授权 → 已创建 PAT 并安全保存
  • □ 从工作流 URL 正确抄下 workflow_id
  • □ 终端 curl 至少成功跑通 1 次
  • □(可选)crontab 已写入每日 9:00 规则
全部打勾 → 下一课 P09 Chatflow 与 Chat SDK(第 10 课 · 完结篇)。