首页龙虾技能列表 › format-markdown-mkdocs — Markdown 格式化与 MkDocs 兼容性修复

format-markdown-mkdocs — Markdown 格式化与 MkDocs 兼容性修复

v1.0.0

此技能格式化 Markdown 文件并应用 MkDocs/Material 兼容的结构间距修复,适用于数学、列表和表格块。输出文件默认以 `_formatted` 后缀命名。

0· 98·0 当前·0 累计
by @smilingwayne·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/24
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
high confidence
技能目的(Markdown 格式化和 MkDocs 间距修复)与代码和指令一致,但存在显著不一致:未声明 Node 运行环境依赖和安装要求,且运行时会读写文件(包括原地编辑和主目录配置),SKILL.md 未完全披露。
评估建议
此技能看似正常工作,但存在重要实践不匹配,应在使用前解决: - **运行环境要求**:需要 Node >= 18 和 npm 包,但技能元数据未列出 Node 作为必需二进制或提供安装步骤。建议在 Node 18+ 环境中运行,并先执行 `npm ci`(推荐在沙盒或隔离环境中)。 - **文件写入和原地编辑**:工具可以创建分析文件、备份文件,并在选择“仅结构修复”选项时修改原始文件。若担心原始文件,应运行在副本上或启用备份。 - **本地配置查找**:脚本将在 cwd、$HOME 和技能目录中查找 `EXTEND.md`。运行前应审查这些文件以避免意外配置更改。 - **安全步骤**:自行检查 `EXTEND.md` 和脚本 (`scripts/format-structure.mjs`)。先使用小测试文件和干运行(如果支持)或在副本上运行。如果需要技能更透明,应要求维护者添加明确的安装规范(Node 二进制要求和 npm 安装指令)并记录是否使用网络访问或其他文件路径。...
详细分析 ▾
用途与能力
技能名称、描述、SKILL.md 和脚本均描述了一个 Markdown 格式化器和结构修复器(一致)。然而,package.json 需要 Node >=18 和几个 npm 包,但技能元数据未声明必需的二进制或安装步骤 —— 一个不一致。
指令范围
SKILL.md 工作流程专注于读取和格式化用户指定的文件,生成分析文件,可能创建备份,并可选编辑原始文件原地。
安装机制
没有安装规范(仅指令),但仓库包含 package.json 和 package-lock.json 以及依赖项(unified、remark-parse、remark-math、remark-gfm、unist-util-visit 等)和一个 Node 脚本。
凭证需求
技能不请求凭证或秘密环境变量。
持久化与权限
技能不请求持久的平台级权限(始终为 false)。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/24
● 无害

安装命令 点击复制

官方npx clawhub@latest install format-markdown
镜像加速npx clawhub@latest install format-markdown --registry https://cn.clawhub-mirror.com

技能文档

具有两层处理功能的 Markdown 格式化技能:

  • 内容格式化:分析内容,提高可读性,并在需要时添加元数据或结构辅助。
  • 结构兼容性修复:为数学公式、列表和表格块应用 mkdocs/material 安全的间距修复,而不重写文本内容。

您必须遵循下方 工作流程 部分中的工作流程,不得跳过任何必需步骤。

核心原则

  • 尽可能保留原始含义和措辞。
  • 内容格式化模式(步骤 2-5)中,可以添加元数据和结构辅助,例如标题、摘要、标题、强调、列表、表格和警告框。
  • 步骤 6 结构修复模式中,脚本仅执行空白字符更改,绝不重写文本内容。
原则要求
含义保留尽可能保留作者的意图、语气和措辞。
结构添加在格式化模式下,仅添加可提高可读性的元数据或格式结构。
仅修改空白字符步骤 6 只能修改空白字符、空行和结构间距。
渲染安全性确保所有更改都能提高 mkdocs/material 样式中 Markdown 渲染的稳定性。
可追溯性每个有意义的更改都必须在最终报告中总结。

使用方法

工作流程有两个阶段:

  • 分析和格式化内容(步骤 1-5)
  • 应用结构兼容性修复,以支持 mkdocs/material 渲染(步骤 6)

Claude 首先执行内容分析和格式化,然后将结构兼容性脚本作为最终清理步骤运行。

工作流程

步骤 1:读取并检测内容类型

读取用户指定的文件,然后检测内容类型:

指示符分类
包含 --- YAML 头信息Markdown
包含 ###### 标题Markdown
包含 粗体斜体、列表、代码块、引用块Markdown
以上均无纯文本
如果检测到 Markdown,请询问用户:

检测到现有的 markdown 格式。您想怎么做?
  • 优化格式(推荐)- 分析内容,改进标题、粗体、列表、表格和可读性
- 之后运行结构兼容性脚本 - 输出:{filename}_formatted.md
  • 保持原始格式 - 保留现有的 markdown 结构
- 仅在复制的文件上运行结构兼容性脚本 - 输出:{filename}_formatted.md
  • 仅进行结构修复 - 直接在原始文件上运行结构兼容性脚本
- 不创建副本;直接修改原始文件

根据用户选择:

  • 优化:继续步骤 2(完整工作流程)
  • 保持原始:跳到步骤 5,复制文件,然后运行步骤 6
  • 仅结构修复:跳到步骤 6,直接在原始文件上运行

Typos Found - [list any obvious typos with corrections, or "None found"]

---

Step 3: 检查/创建 Frontmatter、标题和摘要

检查 YAML frontmatter(--- 块)。如果缺失则创建。

字段处理方式
title参见下面的标题生成
slug从文件路径推断或从标题生成
summary参见下面的摘要生成
coverImage检查同目录下是否存在 imgs/cover.png;如果存在,使用相对路径

标题生成

无论标题是否已存在,始终运行标题优化流程,除非设置了 auto_select_title

准备工作 — 阅读完整文本并提取:

  • 核心论点(一句话:"这篇文章是关于什么的?")
  • 最有影响力的观点或结论
  • 读者的痛点或好奇心触发点
  • 最令人难忘的比喻或金句

生成 3-4 个风格差异化的候选标题:

风格特征示例
颠覆式否定常见做法,制造冲突"All de-AI-flavor prompts are wrong"
解决方案直接给出答案,承诺价值"One recipe to make AI write in your voice"
悬念式揭示一半,激发好奇心"It took me six months to find how to remove AI flavor"
具体数字用数字增加可信度"150 lines of docs taught AI my writing style"
呈现给用户:

Pick a title:
  • [Title A] — (recommended)
  • [Title B] — [style note]
  • [Title C] — [style note]
Enter number, or type a custom title:

将最强的钩子放在第一位并标记为推荐。

标题原则:

  • 前 5 个字符内设置钩子:制造信息缺口或认知冲突
  • 具体 > 抽象:"150 lines" 优于 "a document"
  • 否定 > 肯定:"you're doing it wrong" 优于 "the right way"
  • 会话式:像和朋友聊天,而不是写论文标题
  • 最多约 25 个字符:较长的标题在信息流中会被截断
  • 准确,不做标题党:文章必须兑现标题的承诺

禁止的模式:

  • "浅谈 XX"、"关于 XX 的思考"、"XX 的探索与实践"
  • "震惊!"、"万字长文"、"建议收藏"
  • 没有方向性的纯问题:"AI 写作的未来在哪里?"

如果 frontmatter 中存在 title 且正文内容中没有 H1,你必须将标题作为第一个 H1 插入(# {{title}}。不要删除它。

如果 frontmatter 已有 title,将其作为上下文包含,但仍需生成新的候选标题,除非配置允许跳过。

摘要生成

从不同角度生成 3 个候选摘要。呈现给用户:

Pick a summary:
  • [Summary A] — [focus note]
  • [Summary B] — [focus note]
  • [Summary C] — [focus note]
Enter number, or type a custom summary:

摘要原则:

  • 80-150 个字符,精确且信息丰富
  • 传达对读者的核心价值,而不仅仅是主题
  • 角度多样化:问题驱动型、结果驱动型、洞察驱动型
  • 吸引读者:让他们想阅读完整文章
  • 使用具体细节(数字、结果、特定方法)而非模糊描述

禁止的模式:

  • "本文介绍了..."、"本文探讨了..."
  • 纯主题描述,没有价值主张
  • 用不同措辞重复标题

如果 frontmatter 已有 summary,跳过选择环节,直接使用它。

为了让摘要可见显示,请按照警告语法规则生成它。将其放在 H1 标题之后:

!!! example "Summary"
    Here is the summary you generated.

EXTEND.md 跳过行为:

如果 EXTEND.md 中设置了 auto_select: true,跳过标题和摘要选择,直接生成最佳候选而不询问用户。用户也可以独立设置 auto_select_title: trueauto_select_summary: true


Step 4: 格式化内容

根据 Step 2 的分析指导进行格式化。目标是使内容易于扫描,关键要点易于理解。

格式化工具包

元素使用时机格式
标题自然的话题边界、章节分隔##### 层级
粗体关键结论、重要术语、核心要点bold
无序列表并列项、功能列表、示例- item
有序列表顺序步骤、排名项目、流程1. item
高亮关键细节、需要快速注意的重要比较==text==
颜色高亮标准粗体不足以表达的颜色强调text
表格比较、结构化数据、选项矩阵Markdown 表格
代码命令、文件路径、技术术语、变量名` inline 或 fenced 块
引用块值得注意的引用、重要警告、引用的文本> blockquote
警告框定义、示例、值得注意的警告、结论遵循下面的警告语法规则
分隔符主要主题转换---

警告语法规则

严格强制执行。当使用 MkDocs 风格的警告框(如 !!! note!!! example!!! warning)时,必须严格遵循这些缩进规则。Markdown 解析器要求块内的内容必须缩进。

正确的格式:

!!! note "Title Text"
    This is the content. It must start with 4 spaces, and the above line is empty.

This is a second paragraph. It also needs 4 spaces indentation.

- List items also follow.

The end line should have an empty line with no indent below.

This is the line outside admonition (correct).

错误的格式(请勿这样做):

!!! note "Title Text"
This content has no indent. (Wrong - breaks indentation rule)

!!! note "Title Text" First paragraph ok. Second paragraph has no indent. (Wrong - breaks the block)

语法规则:

  • 缩进:属于警告框的所有内容必须相对于 !!! 行缩进 4 个空格
  • 段落分隔:块内的空行也必须保持块结构;确保下一段以 4 个空格开头。
  • 嵌套列表/代码:如果在警告框内使用列表或代码,总共缩进 8 个空格
  • 一致性:不要混合制表符和空格。始终使用 4 个空格。

格式化原则 — 不要做什么

  • 不要添加编造的事实、解释或评论
  • 不要在用户未明确要求的情况下删除或缩短有效的原始内容
  • 除非任务明确要求,否则不要改写或重写作者的措辞
  • 不要添加带有主观评价的标题(例如 "Amazing Discovery");使用中性的描述性标题
  • 不要过度格式化:不是每个句子都需要粗体,也不是每个段落都需要标题

格式化原则 — 应该做什么

  • 尽可能保留作者的 voice、tone 和措辞
  • 将关键结论和核心要点加粗——读者可能会高亮的句子
  • 当结构清晰时,将散文中的并列项提取为列表
  • 在话题真正转换的地方添加标题
  • 将散文中埋藏的比较或结构化数据使用表格
  • 将金句、令人难忘的声明或重要警告使用引用块
  • 仅在修正明确无误时修复明显的拼写错误

Step 5: 保存格式化文件

将格式化内容保存为新文件。输出文件名由原始文件名加上 EXTEND.md 中定义的后缀组成。

  • 默认后缀_formatted{original-filename}_formatted.md
  • 通过 EXTEND.md 覆盖:设置 output_suffix: _formatted{original-filename}_formatted.md

覆盖前备份现有文件:

if [ -f "{filename}_formatted.md" ]; then
    mv "{filename}_formatted.md" "{filename}_formatted.backup-$(date +%Y%m%d-%H%M%S).md"
fi

Step 5 保存格式化文件后,Step 6 必须在该保存的输出文件上原地运行。


Step 6: 执行结构渲染兼容性脚本

脚本存储在 scripts/ 子目录中。${SKILL_DIR} 是包含此 SKILL.md 的根目录。

此脚本专为 MkDocs + Material 渲染兼容性设计。它修复数学公式、列表和表格块周围的结构间距,同时保留文档内容。

运行时要求

  • Node.js 18+
  • ${SKILL_DIR} 中一次性安装本地 npm 依赖

如果尚未安装依赖:

cd ${SKILL_DIR}
npm install

如果 package-lock.json 已存在,优先使用:

cd ${SKILL_DIR}
npm ci

脚本执行

node ${SKILL_DIR}/scripts/format-md.js "${output_file}"

其中 ${output_file}` 是 Step 5 中保存的格式化文件的路径。

脚本将:

  • 读取输出文件
  • 应用 MkDocs + Material 兼容性修复:
- 列表和表格周围的适当间距 - 数学公式块的渲染兼容性 - 嵌套结构的缩进一致性
  • 将修改后的内容写回同一文件

Step 7: 最终检查与输出

完成所有格式化步骤后,进行最终检查:

  • [ ] YAML frontmatter 完整且格式正确
  • [ ] 标题已生成并呈现给用户选择
  • [ ] 摘要已生成并按要求显示
  • [ ] 所有格式化元素正确应用
  • [ ] 警告框语法正确
  • [ ] 文件已保存到正确位置
  • [ ] 结构渲染兼容性脚本已执行

向用户报告完成状态和输出文件位置。


📋 步骤 7:完成报告

格式化完成

文件:

  • 分析报告:{filename}-analysis.md
  • 格式化文件:{filename}_formatted.md

内容分析摘要:

  • 发现亮点:X 个关键见解
  • 精彩引用:X 个令人难忘的句子
  • 修复的格式问题:X 项

应用的更改:

  • Frontmatter:[已添加/已更新](标题、slug、摘要)
  • 添加的标题:X 个(##: N,###: N)
  • 添加的粗体标记:X 个
  • 创建的列表:X 个(从散文转换为列表)
  • 创建的表格:X 个
  • 添加的警告提示:X 个
  • 修复的拼写错误:X 个 [逐项列出:"原内容" → "正确内容"]

结构兼容性脚本:

  • 处理的数学块:X 个
  • 处理的列表块:X 个
  • 处理的表格块:X 个
  • 添加的空行:X 个
  • 移除的数学内部空行:X 个
  • 创建备份:[是/否]
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务