| name | expand-to-article |
| description | 将 Markdown 笔记扩写为带 frontmatter、Obsidian 双链且已脱敏的正式技术文章。Use when 用户提供 md 文件路径并希望整理草稿或半结构化笔记;真实信息需用 mock 信息替代,同时保留数量、结构和技术含义。 |
Expand to Article
将笔记内容扩写为专业技术文章,直接覆盖原文件。
输入
用户会提供:文件路径(绝对路径或相对于当前目录的路径)
工作流程
1. 读取文件
读取用户指定的文件,获取完整内容。如果文件不存在或无法读取,告知用户错误。
2. 分析内容
分析原文,判断:
- 文章主题/标题
- 技术领域(前端、后端、AI、DevOps 等)
- 现有结构(是否有标题层级、代码块、列表等)
- 内容深度(概念解释、教程、经验分享、还是笔记片段)
- 需要脱敏的真实信息或敏感信息
3. 脱敏规则
如果原文包含真实信息或可能暴露内部上下文的信息,必须先脱敏,再扩写成文。
需要脱敏的内容包括:真实公司、团队、客户、人员、项目、产品、业务线、内部系统、仓库、服务、任务、工单、域名、IP、账号、密钥、手机号、邮箱、地址、会议链接、订单、合同、财务、指标明细、用户数据、日志、错误样本,以及能够组合推断真实身份或业务对象的上下文细节。
处理原则:
- 使用中性的 mock 名称替代真实信息,例如
示例客户 A、项目 Alpha、任务类型 Y、内部系统 X
- 同一真实对象全文使用同一个 mock 名称
- 保留技术问题、架构关系、流程结构、数量、时间顺序和结论;除非数字本身构成敏感业务指标
- 代码块、配置、日志和表格也必须脱敏;密钥类内容使用
<REDACTED> 或 mock 值
- 不确定是否敏感时,按敏感信息处理
示例:39 条 xxxx 任务 改为 39 条任务类型 Y,保留 39 条,替换具体任务名称。
4. 添加 Frontmatter
在文件顶部添加 YAML frontmatter:
---
title: 文章标题
date: YYYY-MM-DD
tags: [tag1, tag2, tag3]
description: 一句话描述文章内容
---
规则:
title:从内容中提取或推断,无标题则基于主题生成
date:当前日期(YYYY-MM-DD 格式)
tags:根据内容推断技术标签,1-4 个为宜,标签内不带空格,用 - 连接多词标签(如 ai-tools)
description:一句话概括核心内容,不超过 100 字
title、description 和 tags 也不得包含未脱敏的真实信息
5. 设置 Obsidian 双链
新文档需要尽量建立 Obsidian 双链,让文章能融入知识库上下文。
处理规则:
- 优先根据当前对话上下文、用户提供的关联文档、同目录相邻文档和文章主题判断应链接的笔记
- 使用 Obsidian 双链格式:
[[文档名]]
- 双链应放在自然位置,不要强行添加无关双链
- 如果上下文不足、同目录文档无法判断关联关系,先询问用户希望链接哪些文档
- 当文章属于系列文档时,优先链接总览、上一篇、下一篇或上下游流程文档
- 不要新增会暴露真实信息的双链
示例:
关联文档:[[000 示例系统产研流程总体设计]]、[[002 示例系统交付工程流程]]
6. 扩写内容
保持原文核心信息,扩展为结构清晰、已脱敏的技术文章。
结构:正文标题从 H2 开始,frontmatter 中的 title 作为文章主标题。
风格:
- 简短专业,口吻直接
- 不使用"当今"、"现如今"等号召类开头
- 描述完内容即结束,不留 Q&A、关注引导等
- 根据原文方向调整:概念类解释原理、教程类步骤清晰、笔记片段整理归类、经验分享结构化表述
要求:
- 不改变原文核心观点
- 扩写而非改写,保持作者原意
- 删除口语化表达,改为书面语
- 精炼表达,讲清楚即可
7. 写回文件
将处理后的完整内容(frontmatter + 正文)覆盖写入原文件。
错误处理
- 文件不存在:告知用户
- 文件为空:告知用户
- 读取失败:提示检查权限