🧪 Skills
文档整理技能 (document-organizer)
支持批量将旧版 Office 文档(.doc/.xls)高质量转换为 Markdown 并保持目录结构与格式完整。
v1.0.4
Description
文档整理技能 (document-organizer)
概述
专业的文档批量处理技能,支持旧版 Office 文档(.doc/.xls)高质量转换为 Markdown,保持格式结构完整。
核心能力
✅ 格式转换
- Word 文档:
.doc→.md(LibreOffice 直接转换) - Word 文档:
.docx→.md(LibreOffice 直接转换) - Excel 表格:
.xls→.xlsx→.md(保留表格结构) - PowerPoint:
.ppt→.pptx→.md(可选支持) - 现代格式:
.xlsx/.pptx→.md(MarkItDown 直接处理)
✅ 批量处理
- 支持按目录批量转换
- 自动保持原目录结构
- 分类处理不同类型文件
- 错误自动记录,不中断流程
✅ 质量保证
- 完美保留标题层级(H1-H6)
- 表格结构完整(Markdown 表格)
- 加粗/斜体样式保留
- 列表有序/无序完整
- 中文无乱码(UTF-8 编码)
快速开始
1. 环境准备
# 安装 LibreOffice(系统级)
# 下载: https://zh-cn.libreoffice.org/
# 安装 Python 依赖
pip install markitdown[docx,xlsx]
2. 使用方法
# 交互模式(推荐)
npx skills run document-organizer
# 命令行参数
npx skills run document-organizer --source "源目录" --output "输出目录" --type doc,xls
3. 配置
首次运行会检测 LibreOffice 路径,默认:
- Windows:
D:\Program Files\LibreOffice\program\soffice.exe - Linux:
/usr/bin/soffice - macOS:
/Applications/LibreOffice.app/Contents/MacOS/soffice
详细功能
文档类型处理
| 源格式 | 转换流程 | 输出格式 | 质量 |
|---|---|---|---|
.doc |
LibreOffice → Markdown | .md |
✅ 完美 |
.docx |
LibreOffice → Markdown | .md |
✅ 完美 |
.xls |
LibreOffice → .xlsx → MarkItDown → .md | .md |
✅ 完美 |
.xlsx |
MarkItDown → .md | .md |
✅ 完美 |
.ppt |
LibreOffice → .pptx → MarkItDown → .md | .md |
✅ 良好 |
.pptx |
MarkItDown → .md | .md |
✅ 良好 |
.pdf |
MarkItDown → .md | .md |
✅ 优秀(文本+表格) |
批量处理策略
方案一:分类批量(推荐)
批量转换所有 .doc 文件:
soffice --convert-to md *.doc
批量转换所有 .docx 文件:
soffice --convert-to md *.docx
批量转换所有 .xls 文件:
soffice --convert-to xlsx *.xls → markitdown *.xlsx
批量转换所有 .ppt 文件:
soffice --convert-to pptx *.ppt → markitdown *.pptx
方案二:递归处理
扫描目录树,按文件类型分组
分别批量转换每个子目录
保持完整目录结构输出
使用示例
示例 1: 转换单个目录
# 扫描源目录
npx skills run document-organizer --source "G:\历史文档" --output "d:\知识库"
输出结构:
知识库/
├── 项目A/
│ ├── 需求文档.md
│ └── 设计文档.md
└── 项目B/
└── 会议记录.md
示例 2: 仅处理 Word 文档
npx skills run document-organizer --source "G:\docs" --output "d:\md" --filter .doc,.docx
示例 3: 处理 PDF 文档
npx skills run document-organizer --source "G:\pdfs" --type pdf --output "d:\pdf_md"
示例 4: 先扫描统计
npx skills run document-organizer --scan-only "G:\docs"
# 输出: 文件统计,不执行转换
配置选项
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--source |
string | 必需 | 源目录路径 |
--output |
string | ./output |
输出目录 |
--type |
string | doc,xls,docx,xlsx,ppt,pptx,pdf |
处理的文件类型(逗号分隔) |
--soffice-path |
string | 自动检测 | LibreOffice soffice.exe 路径 |
--log-file |
string | conversion.log |
日志文件路径 |
--dry-run |
bool | false |
仅模拟,不实际转换 |
性能参考
测试环境: i5 CPU, 16GB RAM, SSD
| 操作 | 数量 | 耗时 | 吞吐 |
|---|---|---|---|
| .doc → .md (LibreOffice) | 1,000 | ~30 秒 | 33 个/秒 |
| .xls → .xlsx (LibreOffice) | 2,000 | ~1.5 分钟 | 22 个/秒 |
| .xlsx → .md (MarkItDown) | 2,000 | ~2 分钟 | 17 个/秒 |
| .ppt → .pptx (LibreOffice) | 500 | ~30 秒 | 17 个/秒 |
| .pptx → .md (MarkItDown) | 500 | ~1 分钟 | 8 个/秒 |
| .pdf → .md (MarkItDown) | 500 | ~2 分钟 | 4 个/秒 |
| 总计 (3,000文件) | 3,000 | ~10-12 分钟 | - |
常见问题
Q: LibreOffice 找不到?
A: 确保安装并添加到 PATH,或通过 --soffice-path 指定:
npx skills run document-organizer --soffice-path "C:\Program Files\LibreOffice\program\soffice.exe"
Q: 转换失败怎么办?
A: 检查错误日志,常见原因:
- 源文件损坏
- 临时文件(
~$开头)自动跳过 - 权限不足(以管理员运行)
Q: 可以预览而不转换吗?
A: 使用 --dry-run 参数:
npx skills run document-organizer --source "docs" --dry-run
# 输出: 将转换 X 个文件,Y 个目录,跳过 Z 个
Q: 如何只转换特定子目录?
A: 结合 --filter 和路径模式:
npx skills run document-organizer --source "docs" --filter "00_模板/*.doc"
技术架构
┌─────────────────┐
│ 用户命令 │
│ npx skills ... │
└────────┬────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 文档整理技能 (Python) │
│ • 扫描目录树 │
│ • 按类型分组 (doc/xls/docx/xlsx) │
│ • 调用 LibreOffice 批量转换 │
│ • 调用 MarkItDown 结构化转换 │
│ • 保持目录结构 + 重命名 │
│ • 错误处理 + 日志记录 │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────┐ ┌──────────────────┐
│ LibreOffice │ │ MarkItDown │
│ (格式转换) │ │ (结构化输出) │
└─────────────────┘ └──────────────────┘
│ │
└───────────┬───────────┘
▼
┌─────────────┐
│ .md 文件 │
│ (可搜索) │
└─────────────┘
依赖清单
| 工具 | 版本要求 | 用途 |
|---|---|---|
| LibreOffice | 7.0+ | .doc → .docx / .xls → .xlsx |
| Python | 3.10+ | 脚本运行 |
| markitdown | 0.1.5+ | .docx/.xlsx → .md |
| pywin32 | (可选) | Windows COM 自动化(备用) |
脚本文件
本技能包含以下脚本:
| 文件 | 说明 |
|---|---|
scripts/batch_convert.py |
主脚本 - 批量文档转换(支持 .doc/.xls/.docx/.xlsx/.ppt/.pptx/.pdf) |
使用建议
✅ 推荐场景
- 批量转换旧版 Office 文档(.doc/.xls)
- 构建可搜索的知识库
- 文档数字化归档
- 保留原始格式和结构
❌ 不推荐场景
- 仅需提取纯文本(用
strings命令即可) - 扫描图片型 PDF(需 OCR 专用工具)
- 在线实时转换(需启动办公软件)
版本历史
-
v1.0.4 (2026-03-12)
- 修复:移除对不存在的外部 convert-markdown 目录和脚本的依赖
- 修复:移除对特定路径虚拟环境的依赖
- 优化:直接使用 markitdown 命令行工具进行转换
- 优化:增加 markitdown 命令的自动检测逻辑
-
v1.0.3 (2026-03-12)
- 修复:移除不存在的
--temp-dir参数 - 更新:完善所有支持的文件类型说明
- 优化:文档与实际脚本保持一致
- 修复:移除不存在的
-
v1.0.2 (2026-03-11)
- 优化:移除临时目录,直接生成 .md 文件
- 新增:.docx 文件 LibreOffice 直接转换
- 优化:convert_modern 支持参数调用
- 优化:批量转换逻辑,提高速度
- 优化:--dry-run 模式跳过 LibreOffice 检查
-
v1.0.0 (2026-03-11)
- 初始版本
- 支持 .doc/.xls 批量转换
- 优化:LibreOffice 直接转 Markdown
- 分类处理,保持目录结构
最后更新: 2026-03-12
适用平台: Windows/Linux/macOS (需 LibreOffice)
许可证: MIT
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!