resource-to-markdownlisted
Install: claude install-skill q8886b/loom
# resource-to-markdown Skill
## 何时触发
- 用户给一个任意格式文件,要求转成 markdown
- 用户要"消化一本书/PDF/视频"且没有现成 markdown
- Loom 的 DIGEST 流程第 0 步需要前置转换时
- 批量处理 sources/<领域>/ 下的资源
## 核心承诺
- **任意格式**:PDF(文本型 + 扫描型)、EPUB、视频/音频、HTML、docx/pptx、markdown/txt
- **最佳质量**:按格式选最佳引擎(pymupdf/docling/rapidocr/pandoc/markitdown/faster-whisper)
- **最快速度**:文本型 PDF < 10s/100 页;扫描型 PDF OCR ~1s/页;视频转写 ~30s/分钟
- **最优成本**:全本地,零 API 费用;模型用本地缓存
- **成功率保证**:三层兜底 + harness 校验,失败时清晰报告"罕见情况"
## 用法
```bash
# 基础用法
python3.11 skills/resource-to-markdown/scripts/convert.py <input> --out-dir=<dir>
# 指定音视频语言
python3.11 skills/resource-to-markdown/scripts/convert.py video.mp4 --out-dir=out --language=zh
# 不切章节(只产出 raw.md)
python3.11 skills/resource-to-markdown/scripts/convert.py file.pdf --out-dir=out --no-split
# 自定义章节大小
python3.11 skills/resource-to-markdown/scripts/convert.py book.epub --out-dir=out --min=1000 --max=30000
```
## 输出
每个文件产出 3 类输出到 `<out-dir>/`:
```
<stem>.raw.md # 原始转换(完整 markdown)
<stem>.quality.json # 质量报告(引擎/字数/校验结果/警告)
ch01.md, ch02.md, ... # 按章节切分(默认切,--no-split 跳过)
```
`quality.json` 关键字段:
```json
{
"status": "ok|ok_with_warnings|quality_failed|convert_failed",
"convert": {"engine": "...", "chars": ..., "strategy": "..."},
"raw_summary": {"passed": ..., "failures": [...]},
"unit_summary": {"passed": ..., "failures": [...]},
"warnings": [...],
"duration_sec": ...
}
```
## 路由策略(按扩展名 + 内容)
| 格式 | 主引擎 | 兜底 |
|---|---|---|
| `.md`/`.txt` | 直接复制(去 BOM、统一换行) | - |
| `.pdf`