Release Tracker
Monitor one or more GitHub repositories for new releases, generate prioritized summaries, and deliver them to configured channels.
Prerequisites
- -
gh CLI installed and authenticated (gh auth status) - For Discord delivery: Discord channel configured in OpenClaw
Quick Start
Single Repo Setup
Set up tracking for one repo with a cron job:
CODEBLOCK0
Multi-Repo Setup
Add multiple repos to the repos array in config. Each repo has independent version tracking and priority rules.
Configuration
Store config at <workspace>/release-tracker.json:
CODEBLOCK1
Config Fields
- -
repos[].owner / repos[].repo — GitHub owner/repo - INLINECODE6 — friendly name for output header
- INLINECODE7 — keywords to sort higher in summary (matched against changelog text)
- INLINECODE8 — Discord channel/forum ID for delivery
- INLINECODE9 —
discord-forum | discord-channel | telegram | slack | INLINECODE14
-
discord-forum: create a new forum post per release
-
discord-channel: send a message to a Discord channel
-
telegram: send a message to a Telegram chat/channel/group
-
slack: send a message to a Slack channel
-
text: return plain text (for piping to other tools)
- -
repos[].language — zh | en (summary language) - INLINECODE23 — track pre-release/RC versions
- INLINECODE24 — optional,
stable | all (default: stable) - INLINECODE28 — filename for tracking last-seen versions (relative to workspace)
- INLINECODE29 — cron expression for check frequency
- INLINECODE30 — timezone for cron schedule
Workflow
Check for New Releases
- 1. Read config from INLINECODE31
- Read version state from INLINECODE32
- For each repo:
gh release list --repo <owner>/<repo> --limit 5 --json tagName,publishedAt,isPrerelease
- 4. Compare latest tag against stored version
- If new version found, proceed to summarize
Generate Summary
- 1. Fetch release content:
gh release view <tag> --repo <owner>/<repo> --json body
- 2. If release body is sparse, also check local CHANGELOG if the package is installed:
cat /opt/homebrew/lib/node_modules/<package>/CHANGELOG.md
- 3. Parse and categorize changes into sections:
-
Priority items — lines matching any
priorities keywords, shown first
-
Features — new capabilities
-
Breaking changes — marked with ⚠️
-
Fixes — bug fixes relevant to user (skip internal/CI fixes)
-
Security — collapsed at bottom unless critical
- Skip: CI/test-only changes, dependency bumps, internal refactors
Prioritization Rules
Sort entries within each section:
- 1. Lines matching
priorities keywords → top - User-facing changes → middle
- Internal/infrastructure → bottom
- Omit: trivial fixes, test-only changes, doc typos
Format Output
Discord Forum (discord-forum)
CODEBLOCK5
Discord Channel (discord-channel)
Compact single-message format, max 2000 chars.
Telegram (telegram)
Same structure as Discord Channel but respects Telegram formatting (markdown v2). Max 4096 chars.
Slack (slack)
Same structure, uses Slack mrkdwn formatting. Max 3000 chars.
Text (text)
Plain markdown, no emoji headers.
Deliver
Based on outputFormat:
- -
discord-forum: INLINECODE42 - INLINECODE43 : INLINECODE44
- INLINECODE45 : INLINECODE46
- INLINECODE47 : INLINECODE48
- INLINECODE49 : return as tool result
Update State
After successful delivery, update version store:
CODEBLOCK6
Cron Setup
Create the cron job for automated checking:
CODEBLOCK7
The cron message should instruct the agent to:
- 1. Read
release-tracker.json for config - Read
release-tracker-state.json for last versions - Check each repo via INLINECODE52
- If new releases found, generate summaries and deliver
- Update state file
Manual Check
User can trigger manually: "check for new releases" or "any updates on openclaw?"
The agent should:
- 1. Load config
- Run the check workflow
- Report findings conversationally (not necessarily in forum format)
发布追踪器
监控一个或多个GitHub仓库的新版本发布,生成优先级排序的摘要,并将其发送到已配置的频道。
前置条件
- - 已安装并认证 gh CLI(gh auth status)
- 如需Discord投递:在OpenClaw中配置Discord频道
快速开始
单仓库设置
通过定时任务设置单个仓库的追踪:
- 1. 在 /release-tracker.json 创建配置文件(参见配置说明)
- 创建定时任务(独立运行,每日执行)以运行检查
- 定时任务读取配置、检查GitHub、比较版本、如有新版本则发布
多仓库设置
在配置的 repos 数组中添加多个仓库。每个仓库拥有独立的版本追踪和优先级规则。
配置说明
配置文件存放于 /release-tracker.json:
json
{
repos: [
{
owner: openclaw,
repo: openclaw,
displayName: OpenClaw,
priorities: [discord, voice, telegram, cron, agent],
outputChannel: <你的discord频道ID>,
outputFormat: discord-forum,
language: en,
includePrerelease: false
}
],
versionStore: release-tracker-state.json,
schedule: 0 10 *,
timezone: UTC
}
配置字段说明
- - repos[].owner / repos[].repo — GitHub仓库所有者/仓库名
- repos[].displayName — 输出标题的友好名称
- repos[].priorities — 在摘要中优先排序的关键词(与更新日志文本匹配)
- repos[].outputChannel — 投递目标的Discord频道/论坛ID
- repos[].outputFormat — discord-forum | discord-channel | telegram | slack | text
- discord-forum:每个版本创建新的论坛帖子
- discord-channel:发送消息到Discord频道
- telegram:发送消息到Telegram聊天/频道/群组
- slack:发送消息到Slack频道
- text:返回纯文本(用于管道传输到其他工具)
- - repos[].language — zh | en(摘要语言)
- repos[].includePrerelease — 是否追踪预发布/RC版本
- repos[].filter — 可选,stable | all(默认:stable)
- versionStore — 记录上次已见版本的文件名(相对于工作区路径)
- schedule — 检查频率的cron表达式
- timezone — cron调度时区
工作流程
检查新版本
- 1. 从 release-tracker.json 读取配置
- 从 读取版本状态
- 对每个仓库:
bash
gh release list --repo <所有者>/<仓库名> --limit 5 --json tagName,publishedAt,isPrerelease
- 4. 将最新标签与已存储版本进行比较
- 如果发现新版本,继续生成摘要
生成摘要
- 1. 获取发布内容:
bash
gh release view <标签> --repo <所有者>/<仓库名> --json body
- 2. 如果发布内容较少,同时检查本地CHANGELOG(如果已安装该包):
bash
cat /opt/homebrew/lib/node_modules/<包名>/CHANGELOG.md
- 3. 解析变更内容并按类别分类:
-
优先级项目 — 匹配任意 priorities 关键字的行,优先显示
-
功能特性 — 新功能
-
破坏性变更 — 以 ⚠️ 标记
-
修复 — 与用户相关的错误修复(跳过内部/CI修复)
-
安全 — 除非关键,否则折叠在底部
- 跳过:仅CI/测试变更、依赖升级、内部重构
优先级排序规则
在每个类别内排序:
- 1. 匹配 priorities 关键字的行 → 顶部
- 面向用户的变更 → 中间
- 内部/基础设施 → 底部
- 省略:微小修复、仅测试变更、文档拼写错误
格式化输出
Discord论坛(discord-forum)
标题:📦 v{版本号}
正文:
{显示名称} v{版本号}
⭐ 关键特性
{优先级匹配项 + 功能特性,格式化为带描述的粗体标题}
⚠️ 破坏性变更
{包含迁移说明的破坏性变更}
🔧 修复
{相关修复,按领域分组}
🛡️ 安全
{安全修复,简要说明}
Discord频道(discord-channel)
紧凑的单消息格式,最多2000字符。
Telegram(telegram)
结构与Discord频道相同,但遵循Telegram格式(Markdown v2)。最多4096字符。
Slack(slack)
结构相同,使用Slack mrkdwn格式。最多3000字符。
文本(text)
纯Markdown,无表情符号标题。
投递
基于 outputFormat:
- - discord-forum:message(action=thread-create, channelId=<输出频道>, threadName=<标题>, message=<正文>)
- discord-channel:message(action=send, channel=discord, target=<输出频道>, message=<正文>)
- telegram:message(action=send, channel=telegram, target=<输出频道>, message=<正文>)
- slack:message(action=send, channel=slack, target=<输出频道>, message=<正文>)
- text:作为工具结果返回
更新状态
成功投递后,更新版本存储:
json
{
openclaw/openclaw: {
lastVersion: 2026.2.22-2,
lastCheckedAt: 2026-02-24T10:00:00+09:00,
lastPublishedAt: 2026-02-22T...
}
}
定时任务设置
创建用于自动检查的定时任务:
名称:release-tracker
调度:{config.schedule} 时区 {config.timezone}
会话:独立运行
负载:引用此技能的agentTurn消息
投递:无(技能自行处理投递)
定时任务消息应指示代理:
- 1. 读取 release-tracker.json 获取配置
- 读取 release-tracker-state.json 获取上次版本
- 通过 gh release list 检查每个仓库
- 如果发现新版本,生成摘要并投递
- 更新状态文件
手动检查
用户可以手动触发:检查新版本或openclaw有更新吗?
代理应:
- 1. 加载配置
- 运行检查工作流程
- 以对话方式报告结果(不一定是论坛格式)