需完成API权限配置、数据提取、提示词工程与工作流编排四步闭环:创建GitLab Personal Access Token并设为Secret环境变量;用HTTP节点拉取提交日志;通过Data Transform清洗字段并分类;调用LLM生成结构化发布说明;最后POST至GitLab Wiki。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中接入GitLab API,自动拉取指定仓库的代码提交日志,并按语义生成结构化版本发布说明,需完成API权限配置、数据提取、提示词工程与工作流编排四步闭环。
创建GitLab Personal Access Token并配置环境变量
进入GitLab账户设置 → Access Tokens → 勾选 api 和 read_repository 权限 → 生成Token → 复制后立即保存(页面关闭后无法再次查看)。
在Dify项目「Settings → Environment Variables」中新增变量:GITLAB_API_URL(如 https://gitlab.com/api/v4),GITLAB_PRIVATE_TOKEN(粘贴刚生成的Token),GITLAB_PROJECT_ID(目标仓库ID,可在仓库主页URL末尾找到,例如 gitlab.com/group/repo → ID为数字)。
【GITLAB_PRIVATE_TOKEN必须设为Secret类型,否则工作流运行时会因权限拒绝而中断】
编写HTTP请求节点拉取最近50条提交记录
在Dify工作流中添加「HTTP Request」节点,Method选GET,URL填:{{GITLAB_API_URL}}/projects/{{GITLAB_PROJECT_ID}}/repository/commits?per_page=50&since={{last_release_time}}。
Headers中添加:Authorization: Bearer {{GITLAB_PRIVATE_TOKEN}};将「Response Data Path」设为 $.data(若返回数组直接可用),否则设为 $ 并在后续用JSONPath提取。
这一步不校验commit message格式,但GitLab默认按时间倒序返回,【若未传since参数,将重复抓取全部历史,导致发布说明冗余】,建议首次运行前手动填入上一版tag时间戳。
用JSONPath提取关键字段并清洗提交信息
添加「Data Transform」节点,输入为上一节点响应体,使用JSONPath表达式提取:
• 提交哈希 → $.[].id
• 提交作者 → $.[].author_name
• 提交时间 → $.[].committed_date
• 提交标题 → $.[].title
• 提交详情 → $.[].message。
对message字段做截断处理:保留首行作为标题,其余内容合并为body;删除含[skip ci]、chore:前缀的条目;将feat:、fix:、docs:等前缀统一转为首字母大写标签(如“Feat”、“Fix”)。
清洗后数据结构示例:[{"type":"Feat","title":"支持多语言切换","author":"zhangsan","date":"2024-06-10T14:22:31.000+00:00"}]。
调用大模型生成结构化发布说明
方法一:使用内置「LLM」节点
选择模型(推荐Qwen2.5-7B-Instruct或GPT-4-turbo),System Prompt写:
「你是一名资深技术文档工程师。根据以下Git提交记录,生成符合Conventional Commits规范的中文版本发布说明。要求:按Feat/Fix/Docs/Refactor/Chore分类,每类下列出条目(含作者名和日期),不添加解释性文字,不虚构内容,严格基于输入数据输出。」
用户输入模板:提交记录:{{cleaned_commits}}
方法二:用「Prompt」节点 + 自定义模板
输入字段填:## {{version}} 版本发布说明({{date}})\n\n### 新增功能\n{{#each feats}}- {{this.title}}(@{{this.author}},{{this.date | date:"MM-dd"}})\n{{/each}}\n\n### 问题修复\n{{#each fixes}}- {{this.title}}(@{{this.author}},{{this.date | date:"MM-dd"}})\n{{/each}}
需提前在Data Transform中将清洗后数据按type分组为feats、fixes等字段。
两种方法均需开启「Stream output」以实时观察生成过程;若输出含Markdown表格,确保下游节点支持HTML渲染。
将生成结果写入GitLab Wiki或GitHub Release
第一步:构造Wiki页面更新Payload
在「HTTP Request」节点中,URL设为:{{GITLAB_API_URL}}/projects/{{GITLAB_PROJECT_ID}}/wikis,Method选POST,Body选JSON,填入:{"title":"Release-{{version}}","content":"{{llm_output}}","format":"markdown"}。
第二步:添加Headers:Authorization: Bearer {{GITLAB_PRIVATE_TOKEN}},Content-Type: application/json。
第三步:勾选「Fail on HTTP error status」,避免静默失败;成功后响应体中的slug字段即为Wiki页面路径,可用于后续链接分发。


















