Deno Deploy — 直接部署到 Deno Deploy
v0.1.0使用 Deno Deploy REST API 直接部署简单网页和 HTML 应用到互联网。适用于用户需要使内容“上线”、“托管”、“分享 URL”、“部署”或“在线访问”时触发, 无需 Deno MCP 工具,完全独立使用 Deno API。
0· 397·0 当前·0 累计
安全扫描
OpenClaw
安全
medium confidence该技能通过捆绑的 Python 脚本和组织访问令牌上传代码到 Deno Deploy,但包元数据未声明配置文件要求,源头未知。使用前请审查凭证和来源。
评估建议
["验证来源(官方 Deno 源或信任仓库)","检查脚本(已可检查)并仅在信任时运行","使用最小权限访问令牌和专用子主机组织","注意 SKILL.md/清单不匹配:技能实际需要本地凭证文件","安全存储令牌(限制文件系统权限)并考虑使用短期令牌","如果不确定,使用沙盒环境或自信任工具重现 HTTP 调用"]...详细分析 ▾
ℹ 用途与能力
技能的声明目的(部署到 Deno Deploy)与代码和指令匹配:脚本调用 https://api.deno.com/v1 创建项目和部署。然而,包元数据未声明所需的配置路径或凭证,而 SKILL.md 和 scripts/deploy.py 需要在 ~/.config/deno-deploy 下保存的凭证(access_token 和 org_id)。元数据中的此遗漏是一个不一致。
✓ 指令范围
SKILL.md 和脚本坚持在声明的范围内:它们指示创建一个组织,在本地配置目录中存储令牌和组织 ID,写入 TypeScript 代码到一个文件,并调用 Deno REST API。指令不请求其他系统文件、无关的环境变量,或超出 deno.com 和最终 deno.dev 项目 URL 之外的意外外部端点。
✓ 安装机制
未提供安装步骤(仅指令,带有捆绑的 Python 脚本)。没有从任意 URL 下载或存档提取。该安装配置文件风险低。
ℹ 凭证需求
技能所需的唯一敏感工件是 Deno Subhosting 的访问令牌和组织 ID,这与任务成比例。但清单未声明所需的配置路径或凭证;相反,脚本期望在 ~/.config/deno-deploy 中找到凭证。SKILL.md 建议将令牌存储在明文文件中,这是预期的,但这是用户应考虑的敏感做法(使用最小权限令牌并保护文件)。
✓ 持久化与权限
技能不请求始终在线的存在,不修改其他技能或系统范围的配置,并且仅从用户配置目录读取凭证文件。它根据部署的要求进行 Deno API 的网络调用。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv0.1.02026/2/28
● 可疑
安装命令 点击复制
官方npx clawhub@latest install deno-subhosting-deploy-skill
镜像加速npx clawhub@latest install deno-subhosting-deploy-skill --registry https://cn.clawhub-mirror.com
技能文档
使用捆绑的 Python 脚本将简单的网页和 HTML 应用部署到 Deno Deploy,该脚本直接调用 Deno REST API。无需 MCP 工具。
凭据设置(首次使用)
在部署之前,用户必须创建 Deno Subhosting 组织 并获取凭据:
- 访问 dash.deno.com/subhosting/new_auto 并创建新的 subhosting 组织
- 从组织仪表板中复制 org ID 和 access token
然后将它们保存到 ~/.config/deno-deploy/ 下的配置文件中:
mkdir -p ~/.config/deno-deploy
echo "your_token_here" > ~/.config/deno-deploy/access_token
echo "your_org_id_here" > ~/.config/deno-deploy/org_id
如果这些文件不存在,部署脚本将打印清晰的错误和设置说明。引导用户访问 dash.deno.com/subhosting/new_auto 开始使用。
步骤 1:规划应用
在编写代码之前,请考虑:
- 需要哪些 HTML/CSS/JS?
- 是否需要外部库?(使用 CDN 链接 — 无需 npm 安装)
- 是纯静态的,还是需要一个简单的后端(例如 API 路由)?
对于简单的页面:从单个 main.ts 文件提供所有内容,使用内联 HTML。
步骤 2:编写兼容 Deno 的优质代码
标准模式
所有 Deno Deploy 应用必须导出一个 fetch 处理器:
export default {
async fetch(req: Request): Promise {
const html =
My App
;
return new Response(html, {
headers: { "Content-Type": "text/html; charset=utf-8" },
});
},
};
关键规则
- 不要使用 Node.js API — 不要使用
require()、fs、path - 不要使用 npm 包 — 使用 CDN 链接(例如
https://cdn.tailwindcss.com) - 单文件 — 将所有 HTML、CSS、JS 作为模板字面量内联在
main.ts中 - 始终设置 Content-Type — 为 HTML 响应包含
charset=utf-8 - 路由 — 对于多路由应用,使用
new URL(req.url).pathname
有用的 CDN 库
| 用途 | URL |
|---|---|
| Tailwind CSS | https://cdn.tailwindcss.com |
| Alpine.js | https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js |
| Chart.js | https://cdn.jsdelivr.net/npm/chart.js |
| Marked (markdown) | https://cdn.jsdelivr.net/npm/marked/marked.min.js |
步骤 3:将代码保存到文件
将 TypeScript 代码写入临时文件,例如 /tmp/main.ts:
cat > /tmp/main.ts << 'EOF'
export default {
async fetch(req: Request): Promise {
...
},
};
EOF
步骤 4:使用脚本部署
运行捆绑的部署脚本:
python scripts/deploy.py \
--name \
--code /tmp/main.ts
项目命名建议:
- 使用主题/用途:
birthday-card、sales-dashboard、quiz-game - 仅使用小写字母和连字符,最多约 30 个字符
- 避免使用通用名称如
app或test
脚本将:
- 创建新的 Deno Deploy 项目
- 上传代码
- 打印实时 URL
步骤 5:验证部署
部署脚本运行后,您必须验证部署是否成功:
- 检查脚本输出 — 查看脚本打印的部署响应 JSON:
"status" 不应该是 "failed"。如果是,则代码有错误 — 修复并重新部署。
- 如果状态是 "pending",请等待几秒钟,然后继续下一步检查。- Curl 实时 URL 确认它是否正确提供内容:
curl -s -o /dev/null -w "%{http_code}" https://.deno.dev
- 200 = 成功,页面已上线
- 404 或 500 = 出错了 — 检查脚本打印的部署日志 URL
- 任何其他错误 = 部署可能仍在传播,等待 5 秒后重试一次- 如果部署失败,请检查以下常见原因:
export default { fetch } 处理器
- 使用了 Node.js API(require、fs 等)
- 修复代码文件中的问题并重新部署在通过 curl 确认之前,不要告诉用户部署成功。
步骤 6:分享结果
在验证部署成功后,始终:
- 突出显示实时 URL 作为可点击的链接
- 简要说明 用户打开它时会看到什么
示例:
您的页面已在 https://your-project.deno.dev 上线>
它显示 [简要描述]。如果您想更改任何内容,请告诉我!
常见陷阱
- 不要忘记
— 没有它浏览器可能会以 quirks 模式渲染 - 不要在模板字面量内部使用反引号而不转义它们
- 不要忘记
export default { fetch }— 没有它应用将无法启动 - 如果项目名称已被占用,请尝试更具体的名称或添加后缀
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制