写作与公文
为 R/Python 包发布公告博客时,按…
适用于为 R 或 Python 包在 tidyverse.org 或 shiny.posit.co 撰写发布公告博客,将 NEWS/changelog 转换为博文格式并生成致谢。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
为 R/Python 包发布公告博客时,特定
解决思路
- 确定博客平台:Tidyverse(tidyverse.org)或 Shiny(shiny.posit.co)。
- 验证包的 NEWS.md 或 changelog 是否存在。
- 收集包信息:名称、版本、仓库(例如 "tidyverse/dplyr")。
- 遵循下方工作流。
- 使用 `scripts/get_contributors.R` 生成致谢。
- 参考相应格式化指南进行最终润色。
- 若为 Tidyverse 博客:使用 hugodown,主要面向 R 包,遵循更严格的结构和约定,参考 `references/tidyverse-formatting.md`。
- 若为 Shiny 博客:使用 Quarto,支持 R 和 Python 包,采用更灵活、以功能为中心的结构,参考 `references/shiny-formatting.md`。
- 先确定文章面向哪个平台,然后遵循通用工作流并应用平台特定格式。
- 收集平台:Tidyverse 还是 Shiny 博客?
- 收集包名和版本:例如 "dplyr 1.2.0" 或 "shiny 1.9.0"。
- 收集仓库:GitHub 仓库,格式为 "owner/repo"。
- 收集包语言:R 或 Python。
- 收集 NEWS 内容:读取包的 NEWS.md、CHANGELOG 或 NEWS。
- 收集包描述:一句话核心目的。
- 收集上一个发布标签:用于获取贡献者(可选)。
- 收集特色图片:用于 frontmatter(可选但推荐)。
- 创建文章大纲,按以下顺序:Frontmatter(平台特定 YAML)。
- 标题:包名和版本。
- 开头:公告并附一句话包描述。
- 安装:包含安装命令的代码块。
- 概述:简要总结并附完整发布说明链接。
- 主体内容选择合适章节:迁移指南(如果有破坏性变更)——出现时始终放在最前面。
- 生命周期变更(弃用、软弃用、失效)。
- 功能章节(每个主要功能一节,使用描述性标题)。
- 次要改进(项目符号列表)。
- 致谢(适当时):使用 `scripts/get_contributors.R`。
- 致谢格式:"A big thank you to all the folks who helped make this release happen:"。
- 致谢中使用逗号分隔的 GitHub 链接。
- 遵循 `references/content-guidelines.md` 中的最佳实践。
- 开头风格:"We're [random adjective expressing excitement] to announce the release of..."。
- 章节组织:迁移 → 生命周期 → 功能 → 改进 → 致谢。
- 语气:对话式、专业、热情但真诚。
- 技术精确:在反引号中使用精确的函数名。
- 聚焦收益:解释“为什么”而不仅仅是“是什么”。
- 代码示例:真实、注释良好、格式正确。
- 将 NEWS.md 项目符号转换为博客友好内容。
- 彻底研究功能:不要只复制 NEWS 项目符号——阅读函数文档、检查 PR、理解上下文。
- 扩展上下文:为什么变更重要,而不仅仅是改了什么。
- 添加完整代码示例:展示真实用法和完整工作流,而不仅仅是函数签名。
- 先解释概念:对于不熟悉的功能,在展示代码前解释它们是什么以及如何工作。
- 按主题分组:将相关 NEWS 条目合并为连贯的章节。
- 使用对话语气:将简洁的项目符号转化为散文。
- 链接文档:添加相关文档和资源链接。
- 突出破坏性变更:使迁移路径清晰。
- 多语言对等(仅 Shiny):对于 Shiny 博客上的 R+Python 包,确保所有示例在 tabsets 中显示两种语言。
- 对于 Tidyverse 文章,阅读 `references/tidyverse-formatting.md` 并应用。
- hugodown frontmatter 包含 `slug`、`photo.url`、`photo.author`。
- 特定 slug 格式:`packagename-x-y-z`(连字符替换点)。
- R 代码块使用 `r` 语言标识符。
- 致谢始终作为最后章节包含。
- 对于 Shiny 文章,阅读 `references/shiny-formatting.md` 并应用。
- Quarto frontmatter 使用 YAML 锚点用于社交媒体。
- 灵活标题格式。
- 使用 tabsets 展示 Python/R 或 Express/Core 变体。
- 平台特定代码块属性。
- 致谢可选,因文章类型而异。
- 可使用引导段落、标注、嵌入媒体。
- 运行贡献者脚本:`Rscript scripts/get_contributors.R "owner/repo"`。
- 或指定上一个版本的起始标签(或上次发布文章使用的标签):`Rscript scripts/get_contributors.R "owner/repo" "v1.0.0"`。
- 将 markdown 输出复制到致谢章节。
- 平台无关检查清单:Frontmatter 完整包含所有必填字段。
- 开头清晰说明包的目的。
- 安装代码块存在(如适用,包含两种语言)。
- 章节逻辑组织。
- 代码示例使用正确语法高亮。
- 函数名在反引号中带括号:`` `function()` ``。
- 包名不加反引号或其他样式。
- 语气对话式但不是营销话术。
- 没有最高级词汇("powerful"、"rich"、"seamless" 等)。
- 功能解释附上下文,而不仅仅是列出。
- 在展示代码前解释概念。
- 所有示例显示 R 和 Python 变体(如适用)。
- 包含完整发布说明链接。
- 平台特定检查清单 Tidyverse:Slug 格式 `package-x-y-z`(连字符,不是点)。
- 包含照片 URL 和作者。
- 致谢章节是最后章节。
- 所有贡献者按字母顺序列出。
- 平台特定检查清单 Shiny:YAML 锚点用于描述(`&desc`、`*desc`)。
- 社交媒体卡片配置(`open-graph`、`twitter-card`)。
- 如使用 tabsets/shinylive,指定适当的过滤器。
- 使用 tabsets 展示成对变体(Python/R、Express/Core)。
- 多语言 tabsets 一致使用(仅适用于 R+Python 包)。
- 按需加载 `references/content-guidelines.md`:通用最佳实践。
- 按需加载 `references/tidyverse-formatting.md`:Tidyverse 博客要求。
- 按需加载 `references/shiny-formatting.md`:Shiny 博客要求。
- 使用 `scripts/get_contributors.R`:通过 `usethis::use_tidy_thanks()` 获取格式化贡献者列表。
- 参考 Tidyverse 文章模板:输出 `hugodown::hugo_document`,slug 为 `package-x-y-z`,标题为 `package x.y.z`,日期、作者、描述、照片 URL 和作者、分类和标签,正文包含安装代码块和致谢。
- 参考 Shiny 文章模板:标题为 `Package Name x.y.z`,描述使用 YAML 锚点 `&desc`,作者、日期、图片,`open-graph` 和 `twitter-card` 使用 `*desc`。
- 破坏性变更优先:将迁移指南放在功能之前。
- 突出亮点:以最令人兴奋的功能开头。
- 展示而非说教:大量使用代码示例。
- 慷慨链接:帮助读者找到更多信息。
- 保持对话式:像向同事解释一样写作。
- 保持真诚:热情应真实,而不是营销话术。
适用边界 · 注意事项
- 不适用于非 R 或 Python 包的发布公告。
- 不适用于非 Tidyverse 或 Shiny 博客平台。
- 如果包没有 NEWS.md/CHANGELOG 且无法获取变更信息,则不适用。