| name | generate-link-post |
| description | 为 Astro 博客项目生成 `type: link` 的链接分享文档。
当用户提供一个 URL 并说“生成 link 文档”“写一篇 link”“为这个链接生成文章”“把这个 URL 写成 link 文档”“把这个链接整理成文章”或类似意思时,使用此技能。
技能会抓取 URL 内容,提炼核心信息,生成符合项目风格的 Markdown 文件,并写入 `posts/YYYY/YYYY-MM-DD-link-<slug>.md`。
|
generate-link-post
为项目 posts/YYYY/*.md 生成 type: link 的链接分享文章。
适用场景
- 用户分享一个 URL,希望将其整理成一篇 link 类型的博客文章。
- 用户说“生成 link 文档”“写一篇 link”“把这个链接写成文章”“为 xxx 生成 link”等。
- 需要基于外部链接快速产出中文摘要、标签和 frontmatter。
输入
用户应提供一个或多个 URL,例如:
https://github.com/excalidraw/excalidraw
https://simonwillison.net/
如果用户没有提供 URL,询问用户要处理的链接地址。
输出
在 posts/YYYY/ 下生成一篇 Markdown 文件(YYYY 为当前年份):
posts/YYYY/YYYY-MM-DD-link-<slug>.md
其中:
YYYY-MM-DD 为当前日期。
<slug> 根据 URL 或页面主题生成,优先使用项目名、仓库名或域名相关的简短英文 slug。
- 如果当天已存在同名文件,覆盖更新,但需告知用户。
执行步骤
1. 抓取并研究 URL 内容
使用 WebFetch 工具抓取用户提供的 URL。若内容不足,可辅以 WebSearch 搜索补充信息。研究时采用 5W2H 通用研究框架对链接指向的项目或内容进行系统分析:
| 维度 | 需要回答的问题 | 应收集的信息示例 |
|---|
| What | 项目/内容是什么?解决什么问题? | 名称、定位、核心功能、输入/输出、主要场景 |
| Why | 为什么存在?与竞品相比的核心差异? | 诞生背景、痛点、独特卖点、竞品对比、基准数据 |
| Who | 维护者背景?社区活跃度?主要贡献者? | 组织/团队、核心人物、Star/Fork/Issue、贡献者、用户规模 |
| When | 创建时间?最近更新频率?版本节奏? | 首次发布时间、最近更新时间、版本历史、发布节奏 |
| Where | 技术栈?部署环境?生态位置? | 编程语言、框架、运行平台、部署方式、集成生态 |
| How | 架构设计?关键模块?数据流? | 系统架构、核心组件、工作流程、关键实现原理 |
| How much | 许可证限制?维护成本?接入门槛? | 许可证类型、商业友好度、硬件/资源要求、安装/使用成本 |
5W2H 的研究结果直接作为 link 文档正文素材,并从中提取 frontmatter 所需信息(标题、项目名称、核心描述、标签候选等)。
如果 URL 无法访问或抓取失败,告知用户失败原因,并停止后续步骤。
2. 风格约定
Link 文档应遵循以下风格:
- 标题格式:
"<名称> - <一句话描述>",中文为主,例如 "Excalidraw - 开源手绘风格虚拟白板"。
- 开篇:首段用 1–2 句话概括项目/链接是什么、解决什么问题,项目名加粗。
- 章节标题:使用三级标题
###;5W2H 维度标题格式为 ### What|是什么、### Why|为什么值得关注 等。
- 列表使用:核心能力、技术栈、生态集成等信息优先使用无序列表呈现;列表项中可用
**粗体** 突出关键词。
- 段落长度:每个 5W2H 维度控制在 1–3 段,全文保持简洁(通常 40–80 行)。
- 结尾:用一句推荐/总结语引导读者访问原链接。
- 语言:全文使用中文;技术术语、项目名、API 名、文件名等保留英文。
- 图片(可选):如需配图,使用相对路径
/images/YYYY/...。
3. 生成 link 文档
Frontmatter 要求
---
type: link
title: "<中文标题>"
date: YYYY-MM-DD HH:MM:SS +0800
tags: [<标签列表>]
linkUrl: <用户提供的 URL>
---
说明:
title 应为中文,突出链接主题,例如 "Excalidraw - 开源手绘风格虚拟白板"。
date 使用当前日期时间,格式为 YYYY-MM-DD HH:MM:SS +0800。
- 固定采用北京时间(东八区)。如果获取到的当前时间是 UTC,必须先加上 8 小时再写入,避免把 UTC 时间直接填成
+0800。
- 例如:UTC 时间为
2026-06-27 01:09:57,则应写成 date: 2026-06-27 09:09:57 +0800。
linkUrl 为用户提供的原始 URL。
tags 控制在 5–10 个,按以下规则生成。
tags 生成规则
- 推断标签:根据链接主题、技术栈和核心概念,推断出一组候选标签。优先使用小写英文标签(如
excalidraw、whiteboard、open-source、collaboration),必要时可混合中文标签。
- 复用已有标签:读取项目根目录的
tags.txt,在候选标签中优先使用已存在的标签。
- 追加新标签:如果某个候选标签在
tags.txt 中不存在,则将其追加到 tags.txt 文件末尾,每个标签独占一行。
- 最终
tags 字段按语义或字母顺序排列。
注意:不要重复添加 tags.txt 中已有的标签;追加新标签时不要在行尾添加多余标点或空行。
正文要求
正文直接基于第 1 步的 5W2H 研究结果组织,通常包含以下章节(可根据链接内容增删,某维度信息不足时可跳过):
- 执行摘要 / 简介:用 1–2 句话概括这个链接是什么、解决什么问题、为什么值得关注(对应 What + Why 的核心)。
- What|是什么:项目/内容的核心定位、主要功能、输入输出、产品形态。
- Why|为什么值得关注:诞生背景、解决的痛点、与竞品的差异、核心亮点、关键数据/基准表现。
- Who|谁在维护:团队/组织背景、社区规模、活跃度、主要贡献者、用户群体。
- When|时间线:创建时间、版本节奏、最近更新、发展趋势。
- Where|技术栈与生态:技术栈、运行环境、部署方式、集成生态、在工具链中的位置。
- How|如何工作(如果适用):关键架构、核心模块、数据流或实现原理的简明说明。
- How much|成本与门槛:许可证类型及商业友好度、硬件/资源要求、安装或使用成本、接入门槛。
- 总结 / 访问链接:一句话总结并引导读者访问原链接。
语言要求:
- 全文使用中文。
- 语气为简洁、信息密度适中的技术博客风格。
- 技术术语可保留英文。
- 博客文章应简洁可读,每个 5W2H 维度通常用 1–3 段呈现,避免写成冗长技术报告。
4. 写入前确认
在调用 Write 工具写入文件之前,必须向用户展示:
- 生成的文件路径
- 生成的 frontmatter
- 正文的简要摘要或完整内容
并明确询问:
是否将这篇 link 文档写入 <文件路径>?
只有用户确认后,才执行 Write。
5. 写入文件
用户确认后,使用 Write 工具创建或覆盖文件。
6. 不处理 git 提交
本技能不执行 git add、git commit 或 git push。
如果用户要求提交,婉拒并说明:
Link 文档已生成。如需提交,请单独使用 git 命令或告诉我帮你执行提交。
边界情况
- URL 无效或无法访问:告知用户失败原因,停止处理。
- 用户提供多个 URL:依次为每个 URL 生成一篇 link 文档,每篇都需确认。
- 当天已存在同名 link 文件:覆盖更新,但需告知用户这是覆盖操作。
- 用户未提供 URL:询问 URL,不自行猜测。
- URL 指向非网页内容(如 PDF、图片):尝试抓取,如失败则告知用户。
示例
用户输入:
https://github.com/excalidraw/excalidraw
或
为 https://github.com/excalidraw/excalidraw 生成 link 文档
技能行为:
- 使用 WebFetch 抓取 GitHub 页面内容,并以 5W2H 框架研究项目(What/Why/Who/When/Where/How/How much)。
- 生成
posts/2026/2026-06-26-link-excalidraw.md,正文按 5W2H 结构组织,遵循本技能的风格约定。
- 向用户展示 frontmatter 和正文摘要,询问是否写入。
- 用户确认后写入文件。
项目约定
- 本项目为 Astro 博客,站点域名为
wangjunjian.com。
- Link 文档统一放在
posts/YYYY/,文件名格式为 YYYY-MM-DD-link-<slug>.md。
- 内容类型使用
type: link。
- 日期时区统一使用
+0800。