OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  markdown-formatter:格式化并美化 Markdown 文档

markdown-formatter:格式化并美化 Markdown 文档

 
  workflow ·  2026-02-07 00:41:52 · 3 次点击  · 0 条评论  

名称: markdown-formatter
描述: 使用可配置的样式格式化和美化 Markdown 文档。保持结构,修复格式,确保一致性。
元数据:
{
"openclaw":
{
"version": "1.0.0",
"author": "Vernox",
"license": "MIT",
"tags": ["markdown", "formatter", "beautifier", "text", "formatting", "documentation"],
"category": "tools"
}
}


Markdown-Formatter - 美化你的 Markdown

Vernox 实用工具技能 - 让你的 Markdown 文档更专业。

概述

Markdown-Formatter 是一个功能强大的工具,用于格式化、检查和美化 Markdown 文档。它支持多种样式指南(CommonMark、GitHub Flavored Markdown、自定义规则),并能处理从简单清理到复杂重构的所有任务。

功能特性

✅ 格式化引擎

  • 支持多种样式指南(CommonMark、GitHub、自定义)
  • 保持文档结构不变
  • 处理嵌套列表、代码块和表格
  • 可配置的行宽和缩进
  • 智能标题规范化
  • 链接引用优化

✅ 检查与清理

  • 移除尾部空格
  • 规范化行尾符(LF 与 CRLF)
  • 修复不一致的列表标记
  • 移除末尾空行
  • 修复连续多个空行

✅ 美化功能

  • 改进标题层级结构
  • 优化列表格式
  • 为代码块添加适当的间距
  • 按配置宽度自动换行长行
  • 在强调文本周围添加适当间距

✅ 验证功能

  • 检查 Markdown 语法有效性
  • 报告检查错误
  • 提供改进建议
  • 验证链接和引用

安装

clawhub install markdown-formatter

快速开始

格式化单个文档

const result = await formatMarkdown({
  markdown: '# My Document\n\n\n## Section 1\nContent here...',
  style: 'github',
  options: {
    maxWidth: 80,
    headingStyle: 'atx'
  }
});

console.log(result.formattedMarkdown);

批量美化多个文件

const results = await formatBatch({
  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],
  style: 'github',
  options: { wrapWidth: 80 }
});

results.forEach(result => {
  console.log(`${result.file}: ${result.warnings} 条警告`);
});

检查并修复

const result = await lintMarkdown({
  markdown: '# My Document\n\n\nBad list\n\n- item 1\n- item 2',
  style: 'github'
});

console.log(`发现错误: ${result.errors}`);
console.log(`已修复: ${result.fixed}`);

工具函数

formatMarkdown

根据样式指南格式化 Markdown 内容。

参数:
- markdown (字符串,必需): 要格式化的 Markdown 内容
- style (字符串,必需): 样式指南名称('commonmark'、'github'、'commonmark'、'custom')
- options (对象,可选):
- maxWidth (数字): 行换行宽度(默认: 80)
- headingStyle (字符串): 'atx' | 'setext' | 'underlined' | 'consistent'(默认: 'atx')
- listStyle (字符串): 'consistent' | 'dash' | 'asterisk' | 'plus'(默认: 'consistent')
- codeStyle (字符串): 'fenced' | 'indented'(默认: 'fenced')
- emphasisStyle (字符串): 'underscore' | 'asterisk'(默认: 'asterisk')
- strongStyle (字符串): 'asterisk' | 'underline'(默认: 'asterisk')
- linkStyle (字符串): 'inline' | 'reference' | 'full'(默认: 'inline')
- preserveHtml (布尔值): 保持 HTML 原样(默认: false)
- fixLists (布尔值): 修复不一致的列表标记(默认: true)
- normalizeSpacing (布尔值): 修复格式周围的间距(默认: true)

返回值:
- formattedMarkdown (字符串): 格式化后的 Markdown
- warnings (数组): 警告消息数组
- stats (对象): 格式化统计信息
- lintResult (对象): 检查错误和修复结果
- originalLength (数字): 原始字符数
- formattedLength (数字): 格式化后的字符数

formatBatch

一次性格式化多个 Markdown 文件。

参数:
- markdownFiles (数组,必需): 文件路径数组
- style (字符串): 样式指南名称
- options (对象,可选): 与 formatMarkdown 选项相同

返回值:
- results (数组): 格式化结果数组
- totalFiles (数字): 已处理的文件总数
- totalWarnings (数字): 所有文件的总警告数
- processingTime (数字): 处理时间(毫秒)

lintMarkdown

检查 Markdown 问题但不进行格式化。

参数:
- markdown (字符串,必需): 要检查的 Markdown 内容
- style (字符串): 样式指南名称
- options (对象,可选): 额外的检查选项
- checkLinks (布尔值): 验证链接(默认: true)
- checkHeadingLevels (布尔值): 检查标题层级(默认: true)
- checkListConsistency (布尔值): 检查列表标记一致性(默认: true)
- checkEmphasisBalance (布尔值): 检查强调符号配对(默认: false)

返回值:
- errors (数组): 错误对象数组
- warnings (数组): 警告对象数组
- stats (对象): 检查统计信息
- suggestions (数组): 建议的修复方案

样式指南

CommonMark(默认)

  • 标准 CommonMark 规范
  • ATX 标题(ATX 风格)
  • 引用式链接 [文本]
  • 下划线强调
  • 星号强调

GitHub Flavored Markdown

  • 使用 ``` 的围栏式代码块
  • 使用竖线的表格
  • 任务列表 [ ] 带 x
  • 删除线 ~~文本~~
  • 使用 https://url 的自动链接

Consistent(默认)

  • 一致的 ATX 标题层级
  • 一致的列表标记
  • 一致的强调样式
  • 一致的代码块样式

自定义

  • 用户定义的规则
  • 基于正则表达式的转换
  • 自定义标题样式

使用场景

文档清理

  • 修复 README 文件中不一致的格式
  • 规范化标题样式
  • 修复列表标记
  • 清理多余的空格

内容创作

  • 以一致的样式格式化文章
  • 在发布前美化博客文章
  • 确保一致的标题层级结构

技术写作

  • 格式化代码文档
  • 美化 API 规范
  • 清理来自 LLM 的混乱 Markdown

README 生成

  • 格式化和美化项目 README 文件
  • 确保结构一致
  • 为开源项目提供专业外观

Markdown 转换

  • 将 HTML 转换为 Markdown
  • 从一种样式重新格式化为另一种样式
  • 从其他格式提取并格式化 Markdown

配置

编辑 config.json

{
  "defaultStyle": "github",
  "maxWidth": 80,
  "headingStyle": "atx",
  "listStyle": "consistent",
  "codeStyle": "fenced",
  "emphasisStyle": "asterisk",
  "linkStyle": "inline",
  "customRules": [],
  "linting": {
    "checkLinks": true,
    "checkHeadingLevels": true,
    "checkListConsistency": true
  }
}

示例

简单格式化

const result = await formatMarkdown({
  markdown: '# 我的标题\n\n\n这是内容。',
  style: 'github'
});

console.log(result.formattedMarkdown);

复杂美化

const result = await formatMarkdown({
  markdown: '# 标题 1\n## 标题 2\n\n段落...',
  style: 'github',
  options: {
    fixLists: true,
    normalizeSpacing: true,
    wrapWidth: 80
  }
});

console.log(result.formattedMarkdown);

检查与修复

const result = await lintMarkdown({
  markdown: '# 标题\n\n- 项目 1\n- 项目 2\n\n## 第 2 节',
  style: 'github'
});

console.log(`错误数: ${result.errors.length}`);
result.errors.forEach(err => {
  console.log(`  - ${err.message} 在第 ${err.line} 行`);
});

// 自动修复
const fixed = await formatMarkdown({
  markdown: result.fixed,
  style: 'github'
});

批量处理

const results = await formatBatch({
  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],
  style: 'github'
});

console.log(`已处理 ${results.totalFiles} 个文件`);
console.log(`总警告数: ${results.totalWarnings}`);

性能

速度

  • 小型文档 (<1000 字): <50ms
  • 中型文档 (1000-5000 字): 50-200ms
  • 大型文档 (5000+ 字): 200-500ms

准确性

  • 结构保持: 100%
  • 样式指南遵从性: 95%+
  • 空格规范化: 100%

错误处理

无效输入

  • 清晰的错误消息
  • 建议检查文件路径
  • 在格式化前验证 Markdown 内容

Markdown 解析错误

  • 清晰地报告解析问题
  • 建议手动修复
  • 出错时优雅降级

文件 I/O 错误

  • 包含文件路径的清晰错误
  • 检查文件是否存在
  • 建议修复权限问题
  • 批量处理在出错时继续

故障排除

格式未生效

  • 检查样式是否正确
  • 验证选项是否被遵循
  • 检查是否存在冲突规则
  • 使用简单示例测试

检查显示过多错误

  • 某些错误是样式选择,而非真正问题
  • 考虑禁用特定检查
  • 为特定需求使用自定义规则

提示

最佳效果

  • 使用一致的样式指南
  • 启用 fixLists、normalizeSpacing 选项
  • 根据输出媒介设置适当的 maxWidth
  • 首先在小样本上测试

性能优化

  • 分批处理大文件
  • 禁用未使用的检查功能
  • 为常见模式使用更简单的规则

许可证

MIT


格式化 Markdown。让你的文档保持美观。 🔮

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor