• 产品简介
  • 购买指南
    • 计费概览
    • 套餐
      • 套餐选型对比
      • 免费版
      • 专业版
      • 商业版
      • 购买续费指引
    • 套餐消耗与用量
    • 计费规则
      • 资源计费说明
      • MU 计费说明
    • 欠费与退款
      • 欠费与套餐到期
      • 退款说明
    • 计费常见问题
  • 快速开始
    • Agent 开发
    • 导入 Git 仓库
    • 从模板开始
    • 直接上传
    • 从 AI 开始
  • 框架指南
    • Agent
    • 前端
      • Vite
      • React
      • Vue
      • Hugo
      • 其他框架
    • 后端
    • 全栈
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
      • TanStack Start
      • Vike
    • 自定义 404 页面
  • 空间指南
    • 空间管理
  • 项目指南
    • 项目管理
    • edgeone.json
    • 缓存配置
    • 构建输出配置
    • 错误码
  • 构建指南
  • 部署指南
    • 概览
    • 触发部署
    • 管理部署
    • 部署按钮
    • 使用 Github Action
    • 使用 Gitlab CI/CD
    • 使用 CNB 插件
    • 使用 IDE 插件
    • 使用 CodeBuddy IDE
  • 域名管理
    • 概览
    • 自定义域名
    • 配置 HTTPS 证书
      • 概览
      • 申请免费证书
      • 使用 SSL 托管证书
    • 配置 DNS 的 CNAME 记录
  • 可观测性
    • 概览
    • 指标分析
    • 日志分析
  • Makers for Platforms
    • 平台与多租户
    • Vibe Coding 解决方案
    • 平台请求中间件
    • 模板示例
      • Vibe Coding 通用模板
      • Vibe Coding 平台模板
  • Functions
    • 概览
    • Edge Functions
    • Cloud Functions
      • 概览
      • Node.js
      • Python
      • Go
  • Agents
    • 概览
    • 快速开始
    • 会话管理
    • 可观测
    • 沙箱工具
      • 概览
      • Agent 框架使用
      • 沙箱原子 API
      • 网络搜索工具
    • Agent 应用鉴权
  • Models
    • 概览
    • 模型与厂商
      • 概览
      • 使用朱雀模型
      • 使用 Jev 模型
      • 使用厂商密钥
        • OpenAI
        • Anthropic
        • Google AI Studio
        • DeepSeek
        • MiniMax
        • 混元
        • 智谱
        • 月之暗面
    • 常见问题
  • 存储
    • 概览
    • KV
    • Blob
  • 中间件
  • AI 原生开发
    • Skills
    • MCP
    • Plugin
  • Copilot
    • 概览
    • 快速开始
  • API Token
  • EdgeOne CLI
  • Makers SDK
    • 概览
    • 示例
      • 通过 SDK 部署
      • 通过 CLI 部署
      • 项目管理
    • 项目
      • 项目操作
      • 环境变量
    • 部署
    • 域名
  • 消息通知
  • 访问权限
  • 集成指南
    • AI
      • Makers Models 集成
      • 图片大模型集成
    • 数据库
      • Supabase 集成
      • Pages KV 集成
    • 电商
      • Shopify 集成
      • WooCommerce 集成
    • 支付
      • Stripe 集成
      • Paddle 集成
    • CMS
      • WordPress 集成
      • Contentful 集成
      • Sanity 集成
      • Payload 集成
    • 身份验证
      • Supabase 集成
      • Clerk 集成
    • IM
      • 概览
      • 企业微信
      • 飞书
      • 钉钉
      • Telegram
      • Slack
      • Discord
  • 最佳实践
    • 为网站添加 AI 对话助手
    • AI 对话式部署:使用 Skill 一句话部署项目
    • 使用 Makers Agents 快速搭建 Agent 应用
    • 使用 Shopify 搭建电商平台
    • 使用 Supabase 和 Stripe 搭建 SaaS 站点
    • 如何快速搭建公司品牌站点
    • 如何快速搭建博客站点
    • 在 WorkBuddy 中通过免登录部署快速上线
  • 迁移指南
    • 从 Vercel 迁移至 EdgeOne Makers
    • 从 Cloudflare Pages 迁移至 EdgeOne Makers
    • 从 Netlify 迁移至 EdgeOne Makers
  • 排障指南
  • 常见问题
  • 联系我们
  • 产品动态

概览

Makers SDK 提供 TypeScript 与 Python 两种实现,让平台方以代码方式创建项目并完成部署。SDK 提供两种初始化方式:使用 Makers API Token,或使用腾讯云 API 密钥(SecretId / SecretKey)。无论采用哪种方式,项目管理、环境变量配置、部署、及域名等功能的调用方法、参数和返回值均保持一致。

安装

TypeScript 运行环境为 Node.js 20+,仅发布 ESM。Python 运行环境为 3.10+。
Typescript
Python
npm install @edgeone/makers-sdk
pip install makers-sdk

使用 API Token 初始化

1. 在控制台创建 API Token,步骤见 API Token。
2. 写入环境变量 MAKERS_API_TOKEN。
3. 初始化 Makers SDK:
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const apiToken = process.env.MAKERS_API_TOKEN;
if (!apiToken) {
throw new Error("MAKERS_API_TOKEN is required.");
}

const makers = new Makers({
token: apiToken,
region: "china",
});
import os

from makers_sdk import Makers

makers = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)
region 为可选参数,须与签发该 API Token 的工作空间一致:"china" 对应中国站,"global" 对应国际站。若未指定 region,SDK 将依次自动探测中国站(china)与国际站(global)并将结果缓存在当前 Makers 实例中。

使用腾讯云 API 密钥初始化

使用腾讯云 API 密钥初始化时需要 SecretId、SecretKey 和 Makers 工作空间 ID(ZoneId)。
1. 在腾讯云控制台的 API 密钥管理 创建 SecretId 与 SecretKey,写入环境变量 TENCENTCLOUD_SECRET_ID 与 TENCENTCLOUD_SECRET_KEY。
如果是子账号,项目、环境变量、部署与域名需要授予 teo:DescribePagesResources、teo:CreatePagesResources、teo:ModifyPagesResources 与 teo:DeletePagesResources CAM 权限;通过 DescribeZones 查询工作空间 ID 时,需要授予 teo:DescribeZones 权限。
2. 获取 ZoneId。开通 Makers 时会自动创建一个 Makers 工作空间。调用腾讯云 API DescribeZones 并按 zone-type 为 pages 过滤即可查到该工作空间的 ZoneId。将 ZoneId 写入环境变量 EDGEONE_MAKERS_ZONE_ID。
3. 初始化 Makers SDK:
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const secretId = process.env.TENCENTCLOUD_SECRET_ID;
const secretKey = process.env.TENCENTCLOUD_SECRET_KEY;
const zoneId = process.env.EDGEONE_MAKERS_ZONE_ID;

if (!secretId || !secretKey || !zoneId) {
throw new Error(
"TENCENTCLOUD_SECRET_ID, TENCENTCLOUD_SECRET_KEY, and EDGEONE_MAKERS_ZONE_ID are required.",
);
}

const makers = new Makers({
credentials: { secretId, secretKey },
zoneId,
region: "global",
});
import os
from makers_sdk import Makers

makers = Makers(
credentials={
"secret_id": os.environ["TENCENTCLOUD_SECRET_ID"],
"secret_key": os.environ["TENCENTCLOUD_SECRET_KEY"],
},
zone_id=os.environ["EDGEONE_MAKERS_ZONE_ID"],
region="global"
)

构造参数

参数名与类型以 TypeScript / Python 的形式给出。
参数
类型
必填
默认值
说明
token
string / str
-
-
EdgeOne Makers API Token。未传 credentials 时必填
timeout
number / float
否
30
单次请求超时,单位为秒
retries
number / int
否
3
查询类最大重试次数;写操作不重试
logger
Logger
否
-
用于输出 SDK 日志。传入带 debug、info、warn、error 方法的对象,未传入时不输出日志
credentials
CloudApiCredentials / dict
否
-
腾讯云 API 密钥。两个字段都必须是非空字符串。
zoneId / zone_id
string / str
-
-
Makers 工作空间 ID,使用 credentials 鉴权时必填
region
"china" | "global"
否
-
指定 API 请求区域:"china" 为国内站,"global" 为国际站

公开成员

成员
类型
说明
makers.projects
Projects
项目与环境变量操作
makers.deployments
Deployments
部署操作
makers.domains
Domains
自定义域名:创建、查询、删除,以及归属校验、CNAME 检查与 HTTPS 证书。
makers.tokens
Tokens
签发租户 Token(tokens.create)
makers.region
"china" | "global" 或空
只读,构造时传入的中国站(china)或国际站(global)
makers.kv
Kv
KV 命名空间查询与记录管理,仅支持腾讯云 API 密钥鉴权
类型名为 TypeScript 导出的类型,Python 的对应命名空间不作为公开类型导出。

错误处理

SDK 定义的错误类型以 MakersError 为基类,公开字段为 code、cause,以及 requestId / request_id 和 httpStatus / http_status。错误信息在 TypeScript 中通过 error.message 获取,在 Python 中通过 str(error) 获取。
异常类
说明
AuthError
Token 或腾讯云 API 密钥无效,或无权访问
ValidationError
入参不合法或服务端返回校验错误。本地校验在发请求前抛出
NotFoundError
项目、部署或 Makers 工作空间不存在
ConflictError
资源冲突
RateLimitError
触发限流
UploadError
上传制品失败
TimeoutError
单次请求超时
DeploymentTimeoutError
等待部署到达终态超时(继承 TimeoutError)
Typescript
Python
import { Makers, MakersError, NotFoundError } from "@edgeone/makers-sdk";

const apiToken = process.env.MAKERS_API_TOKEN;
if (!apiToken) {
throw new Error("MAKERS_API_TOKEN is required.");
}

const makers = new Makers({
token: apiToken,
region: "china",
});

try {
await makers.projects.get({ projectId: "missing" });
} catch (error) {
if (error instanceof NotFoundError) {
console.error(error.code, error.requestId, error.httpStatus);
} else if (error instanceof MakersError) {
console.error(error.code, error.message, error.requestId);
} else {
throw error;
}
}
import os

from makers_sdk import Makers, MakersError, NotFoundError

makers = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)

try:
makers.projects.get(project_id="missing")
except NotFoundError as error:
print(error.code, error.request_id, error.http_status)
except MakersError as error:
print(error.code, str(error), error.request_id)

签发租户 Token

在需要隔离平台级凭证,降低 Makers API Token 泄漏风险的部署场景中,建议通过 tokens.create 签发权限受限的租户 Token 进行部署。初始化 Makers SDK 时,需传入账号级凭证:在控制台创建的主 API Token,或腾讯云 API 密钥(credentials 与 zoneId),再由 SDK 签发租户 Token。已签发的租户 Token 不支持查询或删除。
调用成功后返回 token、tokenId / token_id 和 expired。expired 为过期时间,格式为 Unix 时间戳(秒)。对同一 tenantId / tenant_id 再次签发时,token 与 tokenId / token_id 不变,expired 可能更新。参数不符合要求时,将在发起请求前抛出 ValidationError。
参数
参数
类型
必填
说明
tenantId / tenant_id
string / str
是
租户标识,长度为 1–64 个字符
name
string / str
是
Token 名称,长度为 1–128 个字符
expiresIn / expires_in
number / int
是
有效期,单位为秒;需为整数,取值范围为 10–315360000
示例
使用 API Token 签发:
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const apiToken = process.env.MAKERS_API_TOKEN;
if (!apiToken) {
throw new Error("MAKERS_API_TOKEN is required.");
}

const platform = new Makers({
token: apiToken,
region: "china",
});

const { token, tokenId, expired } = await platform.tokens.create({
tenantId: "user-open-id",
name: "user-open-id",
expiresIn: 86400,
});
import os

from makers_sdk import Makers

platform = Makers(
token=os.environ["MAKERS_API_TOKEN"],
region="china",
)

created = platform.tokens.create(
tenant_id="user-open-id",
name="user-open-id",
expires_in=86400,
)
使用腾讯云 API 密钥签发:
Typescript
Python
import { Makers } from "@edgeone/makers-sdk";

const secretId = process.env.TENCENTCLOUD_SECRET_ID;
const secretKey = process.env.TENCENTCLOUD_SECRET_KEY;
const zoneId = process.env.EDGEONE_MAKERS_ZONE_ID;

if (!secretId || !secretKey || !zoneId) {
throw new Error(
"TENCENTCLOUD_SECRET_ID, TENCENTCLOUD_SECRET_KEY, and EDGEONE_MAKERS_ZONE_ID are required.",
);
}

const platform = new Makers({
credentials: { secretId, secretKey },
zoneId,
});

const { token, tokenId, expired } = await platform.tokens.create({
tenantId: "user-open-id",
name: "user-open-id",
expiresIn: 86400,
});
import os

from makers_sdk import Makers

platform = Makers(
credentials={
"secret_id": os.environ["TENCENTCLOUD_SECRET_ID"],
"secret_key": os.environ["TENCENTCLOUD_SECRET_KEY"],
},
zone_id=os.environ["EDGEONE_MAKERS_ZONE_ID"],
)

created = platform.tokens.create(
tenant_id="user-open-id",
name="user-open-id",
expires_in=86400,
)

部署方式

在 Vibe Coding 场景中,Makers 提供 SDK 和 CLI 两种部署方式:
部署方式
适用场景
示例
通过 SDK 部署
平台后端拿到生成好的代码,直接发布上线
通过 CLI 部署
需要在沙箱里实时预览,确认效果后再上线
ai-agent