一键导入
dify-deploy
通过 ADMIN_API_KEY 自动化调用 Dify Console API,创建工作流应用、导出 DSL、导入 DSL。适用于不想走浏览器登录 cookie、需要脚本化测试或自动化工作流导入导出的场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
通过 ADMIN_API_KEY 自动化调用 Dify Console API,创建工作流应用、导出 DSL、导入 DSL。适用于不想走浏览器登录 cookie、需要脚本化测试或自动化工作流导入导出的场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | dify-deploy |
| description | 通过 ADMIN_API_KEY 自动化调用 Dify Console API,创建工作流应用、导出 DSL、导入 DSL。适用于不想走浏览器登录 cookie、需要脚本化测试或自动化工作流导入导出的场景。 |
| disable-model-invocation | true |
当用户想通过 ADMIN_API_KEY 自动化调用 Dify Console API 时使用,包括:
配置保存在项目根目录下:.dify_key/config.json
如果配置文件不存在,直接运行脚本自动获取三个 key:
node .claude/skills/dify-deploy/scripts/fetch_keys.js
.dify_key/config.json 并写入初始值,同时将 .dify_key/ 加入 .gitignoreREADME.md 进行手动配置每次执行前先检查并加载配置:
const fs = require('fs');
const path = require('path');
const configPath = path.join('.dify_key', 'config.json');
if (fs.existsSync(configPath)) {
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
process.env.DIFY_BASE_URL = config.DIFY_BASE_URL;
process.env.ADMIN_API_KEY = config.ADMIN_API_KEY;
process.env.WORKSPACE_ID = config.WORKSPACE_ID;
console.log(`已加载配置:DIFY_BASE_URL=${config.DIFY_BASE_URL}`);
} else {
console.log('配置文件不存在,请先运行 fetch_keys.js');
}
用户要求更新参数时,读取现有配置、合并更新、重新保存:
const fs = require('fs');
const path = require('path');
const configPath = path.join('.dify_key', 'config.json');
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
config.WORKSPACE_ID = '新的-workspace-id'; // 按需修改对应字段
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
ADMIN_API_KEY 写入仓库文件、PR 描述、日志或长期保存的脚本.dify_key/ 加入 .gitignore加载配置后,确认操作类型和附加参数:
APP_NAME,可选 APP_DESCRIPTIONAPP_ID,可选 INCLUDE_SECRET、WORKFLOW_IDYAML_CONTENT 或 YAML_URLAPP_ID,且只能覆盖 workflow 或 advanced-chat 应用IMPORT_ID运行中的 API 进程必须启用:
ADMIN_API_KEY_ENABLE=true
ADMIN_API_KEY=<admin-key>
修改后必须重启 API 进程。如果请求返回 401 Invalid token,通常表示运行中的进程没有加载 admin key,或者 key 不正确。
让用户先设置环境变量,再执行后续命令:
process.env.DIFY_BASE_URL = 'https://dify.example.com';
process.env.ADMIN_API_KEY = 'your-admin-key';
process.env.WORKSPACE_ID = 'your-workspace-id';
如果用户明确是在本地开发环境测试,DIFY_BASE_URL 常见值是:
process.env.DIFY_BASE_URL = 'http://127.0.0.1:5001';
所有通过 admin key 鉴权的 Console API 请求都要带:
Authorization: Bearer ${ADMIN_API_KEY}
X-WORKSPACE-ID: ${WORKSPACE_ID}
admin key 生效时不需要 X-CSRF-Token,也不需要登录 cookie。API 会在指定 workspace 中找到一个 owner 账号,并以该账号身份执行。
如果用户不知道 WORKSPACE_ID,最简单的方式是在 Dify 网页上按 F12 打开开发者工具,找到 /console/api/workspaces 接口的响应,其中 id 字段即为 WORKSPACE_ID:
{
"workspaces": [
{
"id": "d4e26a01-162f-4366-9a25-1c2c1bdd15dz",
"name": "admin's Workspace",
"current": true
}
]
}
先确认:
process.env.APP_NAME = 'admin-key-test-workflow';
process.env.APP_DESCRIPTION = 'created by admin api key test';
curl -i -X POST "${DIFY_BASE_URL}/console/api/apps" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}" -H "Content-Type: application/json" -d "{\"name\": \"${APP_NAME}\", \"mode\": \"workflow\", \"description\": \"${APP_DESCRIPTION}\"}"
成功时应返回:
HTTP/1.1 201 CREATED
先确认:
process.env.APP_ID = 'your-app-id';
process.env.INCLUDE_SECRET = 'false';
curl -sS -X GET "${DIFY_BASE_URL}/console/api/apps/${APP_ID}/export?include_secret=${INCLUDE_SECRET}" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}"
如果要导出指定草稿 workflow,追加 workflow_id:
process.env.WORKFLOW_ID = 'your-workflow-id';
curl -sS -X GET "${DIFY_BASE_URL}/console/api/apps/${APP_ID}/export?include_secret=${INCLUDE_SECRET}&workflow_id=${WORKFLOW_ID}" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}"
响应结构:
{
"data": "version: 0.6.0\nkind: app\n..."
}
从 YAML 内容导入:
curl -i -X POST "${DIFY_BASE_URL}/console/api/apps/imports" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}" -H "Content-Type: application/json" -d "{\"mode\": \"yaml-content\", \"yaml_content\": \"<YAML 内容>\"}"
从 URL 导入:
curl -i -X POST "${DIFY_BASE_URL}/console/api/apps/imports" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}" -H "Content-Type: application/json" -d "{\"mode\": \"yaml-url\", \"yaml_url\": \"https://example.com/workflow.yml\"}"
如果要覆盖已有 workflow 或 advanced-chat 应用,传入 app_id:
curl -i -X POST "${DIFY_BASE_URL}/console/api/apps/imports" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}" -H "Content-Type: application/json" -d "{\"mode\": \"yaml-content\", \"yaml_content\": \"<YAML 内容>\", \"app_id\": \"${APP_ID}\"}"
如果导入返回 202 且 status: pending,需要确认导入:
curl -i -X POST "${DIFY_BASE_URL}/console/api/apps/imports/${IMPORT_ID}/confirm" -H "Authorization: Bearer ${ADMIN_API_KEY}" -H "X-WORKSPACE-ID: ${WORKSPACE_ID}" -H "Content-Type: application/json" -d "{}"
201 CREATED:创建应用成功。200 OK:导出或导入完成,或已返回数据。202 ACCEPTED:导入进入 pending,需要调用 confirm 接口。401 Invalid token:admin key 缺失、未启用、值不正确,或配置变更后 API 进程未重启。DIFY_BASE_URL 不可达,或 API 服务未运行。ModuleNotFoundError: werkzeug.utils:.venv 里的 Werkzeug 安装损坏;重装 Werkzeug==3.1.6 或重建 api/.venv。scan a document's local image references and upload to ImgBB / Freeimage / UploadMe / ImgLink, replacing links in-place. Use when the user says "上传图片", "replace local image links", "全量转存", "mirror images", "scan and upload images", "图床化".
根据用户需求设计并生成 Dify 应用 DSL,支持创建或更新 workflow/advanced-chat 应用并部署到 Dify 平台。当用户要求从需求构建 Dify 工作流、生成 DSL、从 DSL 创建应用、更新现有应用 DSL、或通过 Admin API 自动化创建/更新 Dify 应用时使用。
为用户生成思想汇报文档。当用户要求写思想汇报、入党积极分子季度汇报、预备党员思想汇报或类似政治汇报材料时触发使用。用户提及"思想汇报"、"季度汇报"、"入党积极分子汇报"或类似场景时,必须调用此技能。
mkdocs-shadcn 主题 Markdown 排版与项目编排。当用户需要编写或修改 mkdocs-shadcn 主题的文档、配置 mkdocs.yml、或询问排版语法时,使用此技能。触发词:mkdocs、shadcn、排版、配置、Markdown、文档、admonition、details、tab、提示框、折叠、标签页、格式化、模板。
去除中文文本中的 AI 腔、翻译腔、套话、黑话和公式化表达。Use when drafting, editing, polishing, or reviewing Chinese prose to make it more direct, natural, concise, specific, and human-sounding.