asc-whats-new-writer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseasc What's New Writer
asc What's New 撰写工具
Generate engaging, localized release notes from flexible input. Optionally pair with promotional text updates.
从灵活的输入内容生成引人入胜的本地化发布说明,还可搭配更新推广文本。
Preconditions
前置条件
- Metadata pulled locally via or
asc migrate export(for keyword reading). OR: user provides keywords manually.asc localizations download - Auth configured for upload (or
asc auth loginenv vars).ASC_* - The primary locale is unless the user specifies otherwise.
en-US
- 通过或
asc migrate export从本地拉取元数据(用于读取关键词)。或者:用户手动提供关键词。asc localizations download - 已配置上传权限(或
asc auth login环境变量)。ASC_* - 除非用户另行指定,否则主区域设置为。
en-US
Before You Start
开始前准备
- Read for tone, structure, and examples.
references/release_notes_guidelines.md - Identify the latest version directory under (highest semver). Use this for all metadata reads.
metadata/version/ - Enumerate existing locales by listing the JSON files in that version directory.
- 阅读了解语气、结构和示例。
references/release_notes_guidelines.md - 找到下的最新版本目录(语义化版本号最高的目录),所有元数据读取操作均使用该目录。
metadata/version/ - 列出该版本目录下的JSON文件,枚举现有区域设置。
Phase 1: Gather Input
第一阶段:收集输入信息
Accept one of three input modes (auto-detect):
接受以下三种输入模式(自动检测):
Git Log
Git日志
Parse commits since the last tag:
bash
undefined解析上次标签之后的提交记录:
bash
undefinedFind latest tag
查找最新标签
git describe --tags --abbrev=0
git describe --tags --abbrev=0
List commits since that tag
列出该标签之后的所有提交
git log $(git describe --tags --abbrev=0)..HEAD --oneline --no-merges
Filter out noise: merge commits, dependency bumps, CI changes, formatting-only commits. Extract user-facing changes.git log $(git describe --tags --abbrev=0)..HEAD --oneline --no-merges
过滤掉无效内容:合并提交、依赖版本更新、CI流程变更、仅调整格式的提交。提取面向用户的变更内容。Bullet Points
项目符号列表
User provides rough bullets like:
- "improved search"
- "fixed crash on launch"
- "added sleep timer"
用户提供大致的项目符号内容,例如:
- "搜索功能优化"
- "修复启动崩溃问题"
- "新增睡眠计时器"
Free Text
自由文本
User describes changes conversationally:
"We made search faster, fixed that annoying crash when you open the app, and added a sleep timer feature"
The skill extracts and structures the changes from the text.
用户用自然语言描述变更内容,例如:
"我们优化了搜索速度,修复了打开应用时烦人的崩溃问题,还新增了睡眠计时器功能"
本工具会从文本中提取并整理变更内容。
No Input Provided
未提供输入
Prompt the user: "What changed in this release? You can paste git log output, bullet points, or just describe the changes."
向用户提示:"本次版本有哪些变更?您可以粘贴git日志输出、项目符号列表,或者直接描述变更内容。"
Phase 2: Draft Notes (Primary Locale)
第二阶段:撰写主区域版本的说明草稿
Step 1: Classify Changes
步骤1:分类变更内容
Group changes into sections per the guidelines:
- New — new features or capabilities
- Improved — enhancements to existing features
- Fixed — bug fixes users would notice
Omit empty sections. If all changes are fixes, only show "Fixed."
根据指南将变更内容分组为以下板块:
- 新增 — 新功能或新能力
- 优化 — 现有功能的增强
- 修复 — 用户可感知的Bug修复
省略内容为空的板块。如果所有变更均为Bug修复,仅保留「修复」板块。
Step 2: Write Benefit-Focused Copy
步骤2:撰写以用户收益为核心的文案
Follow the tone rules from :
references/release_notes_guidelines.md- Describe user impact, not implementation details
- Use direct address ("you") and action verbs
- Be specific — mention concrete improvements
遵循中的语气规则:
references/release_notes_guidelines.md- 描述对用户的实际影响,而非技术实现细节
- 使用第二人称「你」和动作动词
- 内容具体明确 — 提及可感知的改进点
Step 3: Front-Load the Hook
步骤3:前置核心亮点
The first ~170 characters are the only visible part before "more." Lead with the single most impactful change in a complete, compelling sentence.
发布说明的前约170字符是「查看更多」按钮前的可见内容。用完整且有吸引力的句子开头,突出最具影响力的变更。
Step 4: Echo Keywords for Conversion
步骤4:融入关键词提升转化
- Read from
keywordsmetadata/version/{latest}/{primary-locale}.json - If the field is empty or missing, skip this step
- Identify keywords relevant to the changes being described
- Weave them naturally into the notes — never force or stuff
- 从读取
metadata/version/{latest}/{primary-locale}.json字段keywords - 如果该字段为空或不存在,跳过此步骤
- 识别与本次变更相关的关键词
- 将关键词自然融入说明内容中 — 切勿生硬堆砌
Step 5: Respect Character Limits
步骤5:遵守字符限制
- Keep total length between 500-1500 characters in the primary locale
- This leaves room for localized expansions (some languages expand 30-40%)
- Hard limit: 4,000 characters
- 主区域版本的发布说明总长度保持在500-1500字符之间
- 这为本地化后的内容扩展留出空间(部分语言的内容长度会增加30-40%)
- 硬性限制:4000字符
Step 6: Optionally Draft Promotional Text
步骤6:可选:撰写推广文本
If the user wants it, draft a 170-char promotional text that:
- Summarizes the update's theme in one punchy line
- Can reference seasonal events
- Is updatable without a new submission
如果用户需要,撰写170字符以内的推广文本,要求:
- 用一句有力的话总结本次更新的主题
- 可结合季节性活动
- 无需重新提交应用即可更新
Present Draft
展示草稿
Show the draft to the user with character count. Wait for approval before localizing.
向用户展示草稿内容及字符数,在本地化前等待用户批准。
Phase 3: Localize
第三阶段:本地化
Translate the approved notes to all existing locales.
将已批准的草稿翻译为所有现有区域的版本。
Translation Rules
翻译规则
- Use formal register and formal "you" forms (Russian: вы, German: Sie, French: vous, Spanish: usted, Dutch: u, Italian: Lei)
- Adapt tone to local market — playful English may need adjustment for formal markets (ja, de-DE)
- Do NOT literally translate idioms — adapt them to local equivalents
- A playful tone in English may need to be more respectful or formal in other cultures
- 使用正式语体和正式的「你」称谓(俄语:вы,德语:Sie,法语:vous,西班牙语:usted,荷兰语:u,意大利语:Lei)
- 根据本地市场调整语气 — 活泼风格的英语版本可能需要调整为更正式的风格(如日语、德语-德国区域)
- 不要直译习语 — 改用当地文化中的等效表达
- 英语中的活泼语气在其他文化中可能需要调整为更尊重或正式的风格
Locale-Specific Keyword Echo
区域特定关键词融入
For each locale:
- Read from
keywordsmetadata/version/{latest}/{locale}.json - Echo locale-specific keywords naturally in the translated notes
- If keywords field is empty, skip echo for that locale
针对每个区域设置:
- 从读取
metadata/version/{latest}/{locale}.json字段keywords - 在翻译后的说明内容中自然融入该区域的特定关键词
- 如果关键词字段为空,跳过该区域的关键词融入步骤
Validate
验证
- All translations must be ≤ 4,000 characters
- Promotional text must be ≤ 170 characters per locale
- If a translation exceeds the limit, shorten it — never truncate mid-sentence
- 所有翻译内容的字符数必须≤4000
- 每个区域的推广文本字符数必须≤170
- 如果翻译内容超出限制,进行精简 — 切勿在句子中间截断
Phase 4: Review & Upload
第四阶段:审核与上传
Step 1: Present Summary
步骤1:展示摘要
Show a table of all locales with their notes and character counts:
| Locale | What's New (first 80 chars...) | Chars | Promo Text | Chars |
|--------|-------------------------------|-------|------------|-------|
| en-US | Search just got faster — ... | 847 | New sleep… | 142 |
| ar-SA | البحث أصبح أسرع — ... | 923 | نوم جديد… | 138 |
| ... | ... | ... | ... | ... |用表格显示所有区域的说明内容和字符数:
| 区域设置 | What's New(前80个字符...) | 字符数 | 推广文本 | 字符数 |
|--------|-------------------------------|-------|------------|-------|
| en-US | 搜索速度大幅提升 — ... | 847 | 全新睡眠… | 142 |
| ar-SA | البحث أصبح أسرع — ... | 923 | نوم جديد… | 138 |
| ... | ... | ... | ... | ... |Step 2: Wait for Approval
步骤2:等待批准
Do not upload without user confirmation.
未经用户确认不得上传。
Step 3: Upload
步骤3:上传
Upload via (verify exact syntax with ):
ascasc --helpbash
undefined通过工具上传(用验证确切语法):
ascasc --helpbash
undefinedIndividual locale
单个区域上传
asc app-info set --app "APP_ID" --locale "en-US" --whats-new "Your release notes here"
asc app-info set --app "APP_ID" --locale "en-US" --whats-new "Your release notes here"
Bulk via .strings files
通过.strings文件批量上传
asc localizations upload --version "VERSION_ID" --path "./localizations"
If promotional text was drafted, upload it separately (no app submission required).asc localizations upload --version "VERSION_ID" --path "./localizations"
如果撰写了推广文本,单独上传该内容(无需提交新的应用版本)。Step 4: Handle Failures
步骤4:处理失败
On partial upload failure:
- Report which locales succeeded and which failed
- Offer to retry failed locales
出现部分上传失败时:
- 报告哪些区域上传成功,哪些失败
- 提供重试失败区域的选项
Metadata File Paths
元数据文件路径
- Keywords: →
metadata/version/{latest-version}/{locale}.jsonfieldkeywords - Current What's New: →
metadata/version/{latest-version}/{locale}.jsonfieldwhatsNew - Latest version: highest semver directory under
metadata/version/ - Follows the same metadata resolution conventions as
asc-aso-audit
- 关键词: →
metadata/version/{latest-version}/{locale}.json字段keywords - 当前What's New内容: →
metadata/version/{latest-version}/{locale}.json字段whatsNew - 最新版本: 下语义化版本号最高的目录
metadata/version/ - 遵循与相同的元数据解析规则
asc-aso-audit
Notes
注意事项
- What's New is not indexed for App Store search — write for humans, not algorithms.
- Promotional text is the only metadata field updatable without a new submission.
- The 170-char visible window is the most important part of your release notes.
- Each app update triggers algorithm re-evaluation — the act of updating matters, even if the text doesn't affect ranking.
- Ideal update cadence: every 2-4 weeks.
- For full metadata translation (all fields), use instead.
asc-localize-metadata - For keyword research and optimization, use first.
asc-aso-audit
- What's New不会被App Store搜索索引——为用户撰写,而非算法。
- 推广文本是唯一无需重新提交应用即可更新的元数据字段。
- 170字符的可见窗口是发布说明中最重要的部分。
- 每次应用更新都会触发算法重新评估——更新行为本身很重要,即使文本内容不影响排名。
- 理想的更新频率:每2-4周一次。
- 如需完整元数据翻译(所有字段),请改用。
asc-localize-metadata - 如需关键词研究和优化,请先使用。
asc-aso-audit