← 返回
沟通协作 中文

Release Tracker

Track GitHub repository releases and generate prioritized summaries. Supports multiple repos, custom priority keywords, and delivery to Discord (forum posts...
追踪 GitHub 仓库发布并生成优先级摘要。支持多仓库、自定义优先关键词及推送到 Discord(论坛帖子……)。
jo9900
沟通协作 clawhub v1.1.0 1 版本 99904 Key: 无需
★ 0
Stars
📥 1,041
下载
💾 13
安装
1
版本
#latest

概述

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:

1. Create a config file at <workspace>/release-tracker.json (see Configuration)
2. Create a cron job (isolated, daily) that runs the check
3. The cron reads config, checks GitHub, compares versions, posts if new

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 /release-tracker.json:

{
  "repos": [
    {
      "owner": "openclaw",
      "repo": "openclaw",
      "displayName": "OpenClaw",
      "priorities": ["discord", "voice", "telegram", "cron", "agent"],
      "outputChannel": "<your-discord-channel-id>",
      "outputFormat": "discord-forum",
      "language": "en",
      "includePrerelease": false
    }
  ],
  "versionStore": "release-tracker-state.json",
  "schedule": "0 10 * * *",
  "timezone": "UTC"
}

Config Fields

  • repos[].owner / repos[].repo — GitHub owner/repo
  • repos[].displayName — friendly name for output header
  • repos[].priorities — keywords to sort higher in summary (matched against changelog text)
  • repos[].outputChannel — Discord channel/forum ID for delivery
  • repos[].outputFormatdiscord-forum | discord-channel | telegram | slack | text
  • 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[].languagezh | en (summary language)
  • repos[].includePrerelease — track pre-release/RC versions
  • repos[].filter — optional, stable | all (default: stable)
  • versionStore — filename for tracking last-seen versions (relative to workspace)
  • schedule — cron expression for check frequency
  • timezone — timezone for cron schedule

Workflow

Check for New Releases

  1. Read config from release-tracker.json
  2. Read version state from
  3. For each repo:

```bash

gh release list --repo / --limit 5 --json tagName,publishedAt,isPrerelease

```

  1. Compare latest tag against stored version
  2. If new version found, proceed to summarize

Generate Summary

  1. Fetch release content:

```bash

gh release view --repo / --json body

```

  1. If release body is sparse, also check local CHANGELOG if the package is installed:

```bash

cat /opt/homebrew/lib/node_modules//CHANGELOG.md

```

  1. 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
  2. User-facing changes → middle
  3. Internal/infrastructure → bottom
  4. Omit: trivial fixes, test-only changes, doc typos

Format Output

Discord Forum (discord-forum)

Title: 📦 v{version}

Body:
## {displayName} v{version}

### ⭐ Key Features
{priority matches + features, formatted as bold headers with descriptions}

### ⚠️ Breaking Changes
{breaking changes with migration notes}

### 🔧 Fixes
{relevant fixes, grouped by area}

### 🛡️ Security
{security fixes, brief}

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: message(action=thread-create, channelId=, threadName=, message=<body>)</code></li><li><code>discord-channel</code>: <code>message(action=send, channel=discord, target=<outputChannel>, message=<body>)</code></li><li><code>telegram</code>: <code>message(action=send, channel=telegram, target=<outputChannel>, message=<body>)</code></li><li><code>slack</code>: <code>message(action=send, channel=slack, target=<outputChannel>, message=<body>)</code></li><li><code>text</code>: return as tool result</li></ul><h3>Update State</h3><p>After successful delivery, update version store:</p><pre><code>{ "openclaw/openclaw": { "lastVersion": "2026.2.22-2", "lastCheckedAt": "2026-02-24T10:00:00+09:00", "lastPublishedAt": "2026-02-22T..." } } </code></pre><h2>Cron Setup</h2><p>Create the cron job for automated checking:</p><pre><code>Name: release-tracker Schedule: {config.schedule} with tz {config.timezone} Session: isolated Payload: agentTurn with message referencing this skill Delivery: none (skill handles its own delivery) </code></pre><p>The cron message should instruct the agent to:</p><ol><li>Read <code>release-tracker.json</code> for config</li><li>Read <code>release-tracker-state.json</code> for last versions</li><li>Check each repo via <code>gh release list</code></li><li>If new releases found, generate summaries and deliver</li><li>Update state file</li></ol><h2>Manual Check</h2><p>User can trigger manually: "check for new releases" or "any updates on openclaw?"</p><p>The agent should:</p><ol><li>Load config</li><li>Run the check workflow</li><li>Report findings conversationally (not necessarily in forum format)</li></ol></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.1.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-03-29 15:47 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=7f851ab597dc2a4efd0f21ef71b7bb7b" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/25/400090_3a4766527ef789f1c29f9bfb2a402d77.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781290089%3B1812826089&q-key-time=1781290089%3B1812826089&q-header-list=host&q-url-param-list=&q-signature=5f7c6cd5353676473497f1c02e97824d57a7f131" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">communication-collaboration</span> <h3><a href="/s/slack">Slack</a></h3> <div class="rec-owner">steipete</div> <div class="rec-desc">当需要通过 slack 工具从 Clawdbot 控制 Slack 时使用,包括在频道或私信中回复消息或置顶/取消置顶项目。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 157</span> <span style="color:#5b6abf;">📥 47,748</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">communication-collaboration</span> <h3><a href="/s/himalaya">Himalaya</a></h3> <div class="rec-owner">lamelas</div> <div class="rec-desc">{"answer":"通过IMAP/SMTP管理邮件的CLI。可在终端使用 `himalaya` 收发、回复、转发、搜索及整理邮件。支持多账户与MML(MIME元语言)编写邮件。"}</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 68</span> <span style="color:#5b6abf;">📥 45,630</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">communication-collaboration</span> <h3><a href="/s/gmail">Gmail</a></h3> <div class="rec-owner">byungkyu</div> <div class="rec-desc">Gmail API 集成,托管 OAuth,支持读取、发送和管理邮件、线程、标签及草稿,适用于需要与 Gmail 交互的场景。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 72</span> <span style="color:#5b6abf;">📥 37,750</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>