بنقرة واحدة
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 المهني
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.
| 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。