announce
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRelease Announcement Generator
版本发布公告生成工具
Draft social media posts for Twitter/X and LinkedIn by analyzing what actually changed — not just parroting commit messages.
通过分析实际变更内容(而非照搬提交信息),生成适用于Twitter/X和LinkedIn的社交媒体帖子。
Gathering Context
收集上下文信息
Step 1: Determine what's being announced
步骤1:确定要公告的内容
bash
undefinedbash
undefinedGet the most recent tag
获取最新标签
CURRENT_TAG=$(git describe --tags --abbrev=0)
PREVIOUS_TAG=$(git describe --tags --abbrev=0 "$CURRENT_TAG^")
CURRENT_TAG=$(git describe --tags --abbrev=0)
PREVIOUS_TAG=$(git describe --tags --abbrev=0 "$CURRENT_TAG^")
Get the date of the previous tag for filtering PRs/issues
获取上一个标签的日期,用于过滤PR和问题
SINCE_DATE=$(git log -1 --format=%aI "$PREVIOUS_TAG")
undefinedSINCE_DATE=$(git log -1 --format=%aI "$PREVIOUS_TAG")
undefinedStep 2: Gather signals (in order of usefulness)
步骤2:收集信号(按有用性排序)
PRs merged since last release:
bash
gh pr list --state merged --search "merged:>=$SINCE_DATE" --json number,title,body,labels --limit 100Issues closed since last release:
bash
gh issue list --state closed --search "closed:>=$SINCE_DATE" --json number,title,body,labels --limit 100Diff between tags:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- '*.ts' '*.js' '*.tsx' '*.jsx' '*.py' '*.go' '*.rs' ':!*.lock' ':!*.min.*'Files changed (reveals scope):
bash
git diff --name-only "$PREVIOUS_TAG".."$CURRENT_TAG"New or changed test descriptions:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- '**/*.test.*' '**/*.spec.*' '**/test_*' '**/*_test.*'Config and dependency changes:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- 'package.json' '*.toml' '*.yaml' '*.yml' '*.env.example' '*.config.*'Commit messages (last resort):
bash
git log --oneline "$PREVIOUS_TAG".."$CURRENT_TAG"上次发布后合并的PR:
bash
gh pr list --state merged --search "merged:>=$SINCE_DATE" --json number,title,body,labels --limit 100上次发布后关闭的问题:
bash
gh issue list --state closed --search "closed:>=$SINCE_DATE" --json number,title,body,labels --limit 100标签间的差异:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- '*.ts' '*.js' '*.tsx' '*.jsx' '*.py' '*.go' '*.rs' ':!*.lock' ':!*.min.*'变更的文件(显示范围):
bash
git diff --name-only "$PREVIOUS_TAG".."$CURRENT_TAG"新增或修改的测试描述:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- '**/*.test.*' '**/*.spec.*' '**/test_*' '**/*_test.*'配置和依赖变更:
bash
git diff "$PREVIOUS_TAG".."$CURRENT_TAG" -- 'package.json' '*.toml' '*.yaml' '*.yml' '*.env.example' '*.config.*'提交信息(最后手段):
bash
git log --oneline "$PREVIOUS_TAG".."$CURRENT_TAG"Step 3: Also check for existing release notes
步骤3:同时检查现有发布说明
bash
undefinedbash
undefinedCheck if there's a GitHub release with notes already
检查是否已有带说明的GitHub发布
gh release view "$CURRENT_TAG" --json body --jq '.body' 2>/dev/null
If release notes already exist, use them as the primary source and supplement with the gathered context.gh release view "$CURRENT_TAG" --json body --jq '.body' 2>/dev/null
如果已有发布说明,将其作为主要来源,并结合收集到的上下文信息进行补充。Selecting What to Announce
选择要公告的内容
Not everything in a release is announcement-worthy.
并非发布中的所有内容都值得公告。
Include
需包含
- Major new features users asked for (check closed issues)
- Significant performance improvements with real numbers
- Long-standing bug fixes that affected many users
- New integrations or platform support
- 用户要求的主要新功能(查看已关闭的问题)
- 有真实数据支撑的显著性能提升
- 影响大量用户的长期存在的bug修复
- 新的集成或平台支持
Skip
需跳过
- Internal refactors
- Minor bug fixes
- Dependency updates
- CI/CD changes
- Test improvements
- 内部重构
- 小bug修复
- 依赖更新
- CI/CD变更
- 测试改进
Newsworthiness check
新闻价值检查
Ask: "Would a user of this product care enough to click through?" If no, skip it.
问自己:"产品用户是否会足够关心而点击查看?"如果答案是否,就跳过。
Writing Rules
撰写规则
- Lead with the single most compelling change
- Write about benefits, not features: "Ship 3x faster" not "Add parallel build pipeline"
- Never mention file names, function names, or technical internals
- Use active voice
- Sound human — not like a corporate press release
- Include a link to the release or changelog if available
- Keep Twitter/X posts under 280 characters
- For LinkedIn, keep it to 3-5 short paragraphs max
- 以最吸引人的单一变更点开头
- 撰写收益而非功能:比如写"发布速度提升3倍"而非"添加并行构建流水线"
- 绝不提及文件名、函数名或技术内部细节
- 使用主动语态
- 语气要人性化——不要像企业新闻稿
- 如果有链接,包含指向发布版本或变更日志的链接
- Twitter/X帖子控制在280字符以内
- LinkedIn帖子最多3-5个短段落
Output Format
输出格式
Generate both formats:
生成两种格式:
Twitter/X
Twitter/X
ProjectName v2.4.0 is out!
Biggest addition: bulk CSV export for any report type — custom date ranges, filters, the works.
Also: keyboard shortcuts, faster search, and bug fixes.
→ https://github.com/org/repo/releases/tag/v2.4.0ProjectName v2.4.0 已发布!
最大更新:支持任意报告类型的批量CSV导出——自定义日期范围、筛选条件,全部支持。
此外:添加了键盘快捷键、更快的搜索功能和bug修复。
→ https://github.com/org/repo/releases/tag/v2.4.0ProjectName v2.4.0 just shipped with a feature our users have been asking for: bulk CSV export.
You can now export any report — including custom reports — to CSV with full control over date ranges and filters. No more copying data by hand.
We also added keyboard shortcuts for common actions, improved search performance for large workspaces, and fixed several bugs.
Check out the full release notes: https://github.com/org/repo/releases/tag/v2.4.0ProjectName v2.4.0 已发布,带来了用户一直请求的功能:批量CSV导出。
现在你可以导出任意报告——包括自定义报告——为CSV格式,完全控制日期范围和筛选条件。无需再手动复制数据。
我们还添加了常用操作的键盘快捷键,优化了大型工作区的搜索性能,并修复了若干bug。
查看完整发布说明:https://github.com/org/repo/releases/tag/v2.4.0Example: Bad Commits → Good Announcement
示例:从糟糕的提交信息到优质公告
Typical commit messages:
fix stuff
wip
update deps
john's changes
PR #89What the skill produces by analyzing PRs, issues, and diffs:
典型提交信息:
修复问题
工作中
更新依赖
John的修改
PR #89通过分析PR、问题和差异生成的优质公告:
Twitter/X
Twitter/X
ProjectName v3.0 just dropped 🚀
Real-time collaboration — edit documents with your team, see their cursors live.
Plus: Slack notifications for deploys and a bunch of bug fixes.
→ https://github.com/org/repo/releases/tag/v3.0.0ProjectName v3.0 正式发布 🚀
实时协作功能——与团队成员共同编辑文档,实时看到他们的光标位置。
此外:部署通知集成Slack,以及一系列bug修复。
→ https://github.com/org/repo/releases/tag/v3.0.0Excited to share ProjectName v3.0 — our biggest release this year.
The headline: real-time collaboration. You can now edit documents with your team simultaneously, with live cursors and instant syncing.
We also added Slack integration for deployment notifications, fixed duplicate search results, and resolved an issue with SSO password resets.
Full release notes: https://github.com/org/repo/releases/tag/v3.0.0很高兴向大家分享ProjectName v3.0——我们今年最大的版本更新。
核心亮点:实时协作。现在你可以与团队成员同时编辑文档,支持实时光标显示和即时同步。
我们还添加了部署通知的Slack集成,修复了重复搜索结果的问题,并解决了SSO密码重置的相关问题。
完整发布说明:https://github.com/org/repo/releases/tag/v3.0.0Final Steps
最终步骤
- Present both Twitter/X and LinkedIn drafts
- Ask the user if they want to adjust tone, add hashtags, or mention specific accounts
- Offer to copy to clipboard
- 展示Twitter/X和LinkedIn两种格式的草稿
- 询问用户是否需要调整语气、添加话题标签或提及特定账号
- 提供复制到剪贴板的选项