- AI 技能
- 人工智能
【免费下载链接】marketingskills
Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.
本文围绕 marketing-skills 仓库中的 Demio 集成文档 及其配套的零依赖 CLI demio.js 展开,系统讲解如何基于 Demio 官方 REST API 完成实时(live)、自动(automated)与按需(on-demand)三类 Webinar 的注册、排期查询、参与者跟踪等核心操作。读完本文,你将掌握 API Key + API Secret 的认证方式、全部常用端点的请求格式、事件与参与者数据模型、速率限制边界,并能直接用仓库自带的demio.jsCLI 在终端里完成从健康检查到批量注册、从查询参与者到触发后续营销流程的完整闭环。
Demio 是什么:Webinar 平台的集成能力总览
Demio 是一个面向营销场景的 Webinar 平台,支持实时直播、自动化(自动重播)和按需点播三种形态,内置注册页与参与者行为跟踪能力。在 集成文档 中,Demio 的能力矩阵如下:
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | Events、Registration、Participants、Sessions |
| MCP | - | Not available |
| CLI | ✓ | demio.js |
| SDK | ✓ | PHP(官方)、Ruby(社区) |
与同一仓库收录的另一款 Webinar 工具 Livestorm 相比,工具注册表 给出的定位是:Demio 适合营销向 Webinar(简单、专注),Livestorm 则是完整的活动参与平台。这一区分决定了集成场景的侧重点——Demio 更适合把"报名 → 到场 → 跟进"这条营销链路程序化。
从仓库角度看,Demio 属于"平台不自带 CLI、由本仓库补足"的一类工具:tools/clis/demio.js是一个单文件、零依赖的 Node.js 脚本,专为 AI Agent 和脚本自动化设计。它没有 MCP Server,所以 Agent 直接走 REST API 或调用本地 CLI 是两种主要接入方式。
认证方式:API Key + API Secret 双头认证
Demio API 的认证非常直接,不需要 OAuth 流程:
- 类型:API Key + API Secret(双凭证)
- 请求头:
Api-Key: {key}与Api-Secret: {secret} - 获取位置:Account Settings > API(需要 Owner 权限)
- 官方文档:托管在 Apiary 的 Public Demio API 文档
所有请求都必须同时携带这两个请求头,缺一不可。仓库的 CLI 实现 demio.js 在启动时就会强制校验这两个环境变量:
const API_KEY = process.env.DEMIO_API_KEY const API_SECRET = process.env.DEMIO_API_SECRET const BASE_URL = 'https://my.demio.com/api/v1' if (!API_KEY) { console.error(JSON.stringify({ error: 'DEMIO_API_KEY environment variable required' })) process.exit(1) } if (!API_SECRET) { console.error(JSON.stringify({ error: 'DEMIO_API_SECRET environment variable required' })) process.exit(1) }凭证安全约定
按照 tools/clis/README.md 的统一安全约定,密钥绝不能硬编码进脚本,所有 CLI 只从环境变量读取凭证:
- 把密钥写入 shell profile(
~/.bashrc/~/.zshrc)或.env文件 .env已在 gitignore 中,但提交前仍需二次确认- 任何命令都可以加
--dry-run预览请求而不真正发出,凭证会被掩码为***
快速上手:安装并运行 demio CLI
demio.js是零依赖的 Node.js 单文件脚本(Node 18+,使用原生fetch),无需npm install。按照 tools/clis/README.md 提供三种运行方式:
方式一:直接运行
node tools/clis/demio.js ping方式二:软链到全局目录
ln -sf "$(pwd)/tools/clis/demio.js" ~/.local/bin/demio demio ping方式三:把整个目录加入 PATH
export PATH="$PATH:/path/to/marketingskills/tools/clis"运行时先导出两个环境变量:
export DEMIO_API_KEY="your_api_key" export DEMIO_API_SECRET="your_api_secret"所有 CLI 遵循统一的命令模式{tool} <resource> <action> [options],输出为 JSON 到 stdout,方便管道处理(tools/clis/README.md):
# 管道给 jq 提取字段 demio events list --type upcoming | jq '.[].name' # 保存到文件 demio participants list --date-id 67890 > participants.json # 在脚本中继续处理 EMAILS=$(demio events list --type all | jq -r '.[].name')demio.js内置的 usage 提示(在无参数或命令错误时输出)如下(tools/clis/demio.js):
ping: ping events: events [list --type <upcoming|past|all> | get --id <id> | date --event-id <id> --date-id <id>] register: register [create --id <event_id> --name <name> --email <email> --date-id <date_id>] participants: participants [list --date-id <id>]常用 Agent 操作:六大 REST API 端点详解
集成文档(tools/integrations/demio.md)定义了 7 个常用操作,下面逐一给出原始 HTTP 请求与等价的 CLI 命令。
1. Ping(健康检查)
验证凭证是否有效、服务是否可达:
GET https://my.demio.com/api/v1/ping Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令:
node tools/clis/demio.js ping2. 列出所有事件
GET https://my.demio.com/api/v1/events Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令(events list不传--type时即为全部):
node tools/clis/demio.js events list3. 按类型筛选事件
GET https://my.demio.com/api/v1/events?type=upcoming Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令:
node tools/clis/demio.js events list --type upcomingtype参数可取upcoming、past、all(详见下文参数章节)。
4. 获取单个事件详情
GET https://my.demio.com/api/v1/event/{event_id} Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令:
node tools/clis/demio.js events get --id 12345注意端点路径的单复数差异:列表端点是/events(复数),单个事件端点是/event/{event_id}(单数)。CLI 源码中的映射完全一致(tools/clis/demio.js):events list走/events,events get走/event/${id}。
5. 获取事件某个日期的详情
GET https://my.demio.com/api/v1/event/{event_id}/date/{date_id} Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令:
node tools/clis/demio.js events date --event-id 12345 --date-id 67890CLI 对缺失参数做了显式校验:--event-id或--date-id缺失会返回{ error: '--event-id required' }之类的错误对象(tools/clis/demio.js)。
6. 为事件注册参会者
POST https://my.demio.com/api/v1/event/register Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET} Content-Type: application/json { "id": 12345, "name": "Jane Doe", "email": "jane@example.com" }CLI 等价命令:
node tools/clis/demio.js register create --id 12345 --name "Jane Doe" --email "jane@example.com"7. 为事件指定日期注册参会者
POST https://my.demio.com/api/v1/event/register Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET} Content-Type: application/json { "id": 12345, "date_id": 67890, "name": "Jane Doe", "email": "jane@example.com" }CLI 等价命令(多一个--date-id):
node tools/clis/demio.js register create --id 12345 --date-id 67890 --name "Jane Doe" --email "jane@example.com"8. 获取某日期的参与者列表
GET https://my.demio.com/api/v1/date/{date_id}/participants Headers: Api-Key: {API_KEY} Api-Secret: {API_SECRET}CLI 等价命令:
node tools/clis/demio.js participants list --date-id 67890API 模式与数据模型
集成文档(tools/integrations/demio.md)总结了 Demio API 的几个核心特征:
- 所有请求都必须携带
Api-Key与Api-Secret两个请求头 - 响应均为 JSON 对象
- 注册接口会返回
join_link——这是参会者进入直播间的唯一加入链接 - 事件包含多个 "dates"(场次),每个场次有独立的
date_id——这解释了为什么注册和参与者查询都要以date_id为粒度
事件指标(Event Metrics)
| 字段 | 含义 |
|---|---|
id | 事件 ID |
name | 事件名称 |
date_id | 场次/日期标识符 |
status | 事件状态(upcoming、past、active) |
type | 事件类型(live、automated、on-demand) |
registration_url | 公开注册页 URL |
参与者指标(Participant Metrics)
| 字段 | 含义 |
|---|---|
name | 参与者姓名 |
email | 参与者邮箱 |
status | 出席状态(registered、attended、missed) |
attended_minutes | 参与时长(分钟) |
join_link | 该参与者的唯一加入链接 |
这两组指标正是"注册 → 到场 → 跟进"营销链路的数据基础:status可以区分注册未到(missed)与真实到场(attended),attended_minutes则用来量化参与深度,为后续的 SDR 跟进或生命周期邮件提供触发条件。
参数详解
事件列表筛选参数
type用于按时间窗口过滤事件列表:
upcoming— 即将开始的事件past— 已结束的事件all— 全部事件
注册字段
| 字段 | 必填 | 说明 |
|---|---|---|
id | 是 | 事件 ID |
name | 是 | 注册者姓名 |
email | 是 | 注册者邮箱 |
date_id | 否 | 指定场次日期 ID |
ref_url | 否 | 用于跟踪的推荐/来源 URL |
CLI 对这组字段的解析在 tools/clis/demio.js:register create会把--id(或--event-id)、--name、--email组装为基础 payload,若传了--date-id或--ref-url则追加到 payload:
const payload = { id, name, email } if (args['date-id']) payload.date_id = args['date-id'] if (args['ref-url']) payload.ref_url = args['ref-url'] result = await api('POST', '/event/register', payload)ref_url字段让 Agent 可以在注册请求里直接埋入渠道归因信息——例如落地页来源、广告 campaign 参数,从而把 Webinar 报名转化直接关联到具体渠道,这是做 Webinar 漏斗归因的关键钩子。
自定义字段(Custom Fields)
- 自定义字段通过其UID(而非显示名)传递
- 需要到事件设置里查看可用的自定义字段 UID
这条限制对自动化很重要:如果直接按显示名传自定义字段,注册请求会失败;必须在事件配置中先取出 UID,再在注册 payload 中按 UID 传值。
CLI 源码剖析:请求封装、dry-run 与命令分发
demio.js的实现很简洁,但覆盖了"可审计、可预览、可脚本化"三个 Agent 场景的关键设计。核心是一个统一的api(method, path, body)封装(tools/clis/demio.js):
async function api(method, path, body) { if (args['dry-run']) { return { _dry_run: true, method, url: `${BASE_URL}${path}`, headers: { 'Api-Key': '***', 'Api-Secret': '***', ... }, body: body || undefined } } const res = await fetch(`${BASE_URL}${path}`, { method, headers: { 'Api-Key': API_KEY, 'Api-Secret': API_SECRET, 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: body ? JSON.stringify(body) : undefined, }) const text = await res.text() try { return JSON.parse(text) } catch { return { status: res.status, body: text } } }值得注意的实现细节:
--dry-run分支:命中时不会真正发请求,而是返回带_dry_run: true标记的请求快照,且请求头中的密钥被掩码为***——这既方便 Agent 审计即将发出的请求,也防止日志泄露凭证。- 容错解析:先取原始文本,能
JSON.parse则返回对象;解析失败时返回{ status, body }包裹原始响应,保证非 JSON 错误响应(如限流或 5xx)不会让脚本崩溃。 - 参数解析器:
parseArgs支持--key value与裸布尔 flag 两种形态,并把非 flag 参数收集到_数组作为cmd/sub(tools/clis/demio.js)。 - 统一 JSON 输出:最终
console.log(JSON.stringify(result, null, 2))带缩进输出,便于人类阅读,也便于jq继续加工。
从源码结构看,命令分发是一个switch (cmd)三层结构:顶层命令(ping/events/register/participants)→ 子命令(如events下的list/get/date)→ 参数校验。未知命令或子命令会返回错误对象并附带完整 usage,符合 tools/clis/README.md 定义的仓库级 CLI 规范。
速率限制与配额
集成文档(tools/integrations/demio.md)给出的官方限制如下:
- 180 requests / 分钟(约 3 次/秒)
- Free Trial:每天 100 次 API 调用
- 付费套餐:每天 5,000 次 API 调用(UTC 零点重置)
- 需要更高每日配额需联系 Demio 申请
- 超过限制会返回错误响应
对 Agent 自动化脚本的意义在于:批量注册或批量拉取参与者时,需要在循环内做节流(例如每批 50 个请求之间 sleep 1~2 秒),并把"限流错误响应"纳入重试逻辑。由于响应是 JSON 错误对象,CLI 的容错解析(返回{ status, body })恰好能在这种情况下把 HTTP 状态码保留下来供调用方判断。
典型应用场景与关联技能
集成文档列出的适用场景(tools/integrations/demio.md)集中在 Webinar 营销漏斗的自动化:
- 从落地页或表单自动触发 Webinar 注册(对应
register create) - 将 Webinar 参会者数据同步进 CRM(对应
participants list+ 后续写入) - 为 Webinar 构建自定义注册流程
- 跟踪 Webinar 出席与参与度(
status、attended_minutes) - 基于出席状态触发跟进序列(如
missed用户触发重播提醒、attended用户触发转化邮件) - 程序化管理多个 Webinar 场次(
events list --type upcoming+events date)
在仓库的技能体系中,该集成文档声明了以下相关 Skills(tools/integrations/demio.md):webinar-marketing、lead-generation、event-marketing、content-strategy、lifecycle-marketing。此外,仓库的营销参考资料中也能看到 Demio 的身影:在 合作营销类型参考 中,Demio 以50% 佣金的推广合作模式出现;在 病毒式裂变机制参考 中,Demio 与 Cometly 一起被用作"围绕发布窗口集中发力联盟推广"的战术案例——这两处可以视为 Demio 在 Webinar 增长玩法中的延伸应用背景。
集成路径速查
| 需求 | 文档/代码 | 说明 |
|---|---|---|
| 官方集成指南(认证、端点、参数、限流) | tools/integrations/demio.md | 本仓库的权威来源 |
| CLI 源码(请求封装、dry-run、usage) | tools/clis/demio.js | 零依赖 Node 18+ 单文件 |
| CLI 安装与通用约定 | tools/clis/README.md | 环境变量、软链、PATH、JSON 输出 |
| 工具注册表(Webinar 分类与选型) | tools/REGISTRY.md | Demio vs Livestorm 定位对比 |
小结
Demio 的 REST API 是一套结构非常规整的接口:双请求头认证、JSON 响应、注册返回join_link、事件以date_id为场次粒度。配合仓库自带的 demio.js CLI,Agent 可以在终端中一条命令完成健康检查、事件查询、参会者注册与参与者跟踪,再结合--dry-run审计每次请求、结合ref_url埋入归因、结合status/attended_minutes驱动生命周期跟进——足以支撑一条从"报名"到"到场"再到"跟进转化"的完整 Webinar 营销自动化链路。
- AI 技能
- 人工智能
【免费下载链接】marketingskills
Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.
相关推荐
Marketing Skills 仓库中的 Beehiiv 集成指南:用 REST API v2 与 CLI 构建 Newsletter 自动化工作流
Marketing Skills 仓库中的 Beehiiv 集成指南:用 REST API v2 与 CLI 构建 Newsletter 自动化工作流 本文面向
AI 技能人工智能Vuetify v-card 卡片组件实战指南:从基础用法到源码级原理
Vuetify v card 卡片组件实战指南:从基础用法到源码级原理 v card 是 Vuetify(Vue 组件框架)中最常用的内容容器组件,它基于 v
AI 技能人工智能Slang 自主测试生成战役模式(Campaign Mode)协议解析:基于文档声明驱动的 conformance / design 双层测试套件
Slang 自主测试生成战役模式(Campaign Mode)协议解析:基于文档声明驱动的 conformance / design 双层测试套件 本文深入解析
AI 技能人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考