docs: 重构 README.md 和 SKILL.md,明确文档职责

- README.md 面向开发者:添加项目概述、核心概念说明、开发指南
- SKILL.md 面向 AI:强化 --advice 作为首选方案,明确三路径执行优先级
- 更新 specs:skill-documentation 和 uv-with-dependency-management
- README 添加 reportlab 测试依赖
This commit is contained in:
2026-03-09 21:56:58 +08:00
parent 9abc0a0707
commit 25d748aa17
4 changed files with 211 additions and 209 deletions

103
SKILL.md
View File

@@ -5,92 +5,89 @@ license: MIT
metadata:
version: "1.0"
author: lyxy
compatibility: Requires Python 3.11+. 使用 uv run --with 方式按需加载依赖
compatibility: Requires Python 3.11+。优先使用 lyxy-runner-python skill次选 uv run --with降级到主机 Python
---
# 统一文档解析 Skill
将 DOCX、XLSX、PPTX、PDF、HTML 文件或 URL 网页内容解析为 Markdown 格式,支持多种查询模式。
## Purpose
**统一入口**:使用 `scripts/lyxy_document_reader.py` 作为统一的命令行入口,自动识别文件类型并执行解析。
**第一步:获取执行建议**
**快速获取建议(必须优先使用)**:使用 `-a/--advice` 参数获取准确的执行建议,包含 `uv run --with ...` 命令和 `python` 命令,无需阅读此文档的后续内容。
```bash
python scripts/lyxy_document_reader.py --advice <文件路径或URL>
```
**支持的文档类型**
- **DOCX**Word 文档
- **XLSX**Excel 表格
- **PPTX**PowerPoint 演示文稿
- **PDF**PDF 文档(支持 OCR
- **HTML/URL**HTML 文件或网页地址
这会输出准确的执行命令,包含所需的依赖配置。
**执行路径优先级**
1. **lyxy-runner-python skill首选** - 自动管理依赖
2. **uv run --with** - 按需加载依赖
3. **主机 Python + pip install** - 手动安装依赖
**支持格式**
- DOCXWord 文档)
- XLSXExcel 表格)
- PPTXPowerPoint 演示文稿)
- PDFPDF 文档,支持 OCR
- HTML / URL网页内容
## When to Use
任何需要读取或解析 Office 文档、PDF、HTML 文件、URL 网页内容的任务都应使用此 skill。
### 典型场景
- **文档转换**:将各类文档转换为可读的 Markdown 文本
- **文档元数据**:获取文档的字数、行数等信息
- **标题分析**:提取文档的标题结构
- **章节提取**:提取特定章节的内容
- **内容搜索**:在文档中搜索关键词或正则模式
### 触发场景
- 文档转换:将各类文档转为 Markdown
- 文档元数据:字数、行数统计
- 标题分析:提取标题结构
- 章节提取:提取特定章节
- 内容搜索:关键词或正则搜索
### 触发词
- **中文**"读取/解析/打开 文档/Word/Excel/PPT/PDF/网页"
- **英文**"read/parse/extract document/docx/xlsx/pptx/pdf/html"
- **文件扩展名**`.docx``.xlsx``.pptx``.pdf``.html``.htm`
- **URL 模式**`http://``https://`
- 中文"读取/解析/打开 文档/Word/Excel/PPT/PDF/网页"
- 英文"read/parse/extract document/docx/xlsx/pptx/pdf/html"
- 文件扩展名:`.docx``.xlsx``.pptx``.pdf``.html``.htm`
- URL`http://``https://`
## Quick Reference
| 参数 | 说明 |
|------|------|
| `-a` / `--advice` | 仅显示执行建议,不实际解析文件(必须优先使用 |
| (无参数) | 输出完整 Markdown 内容 |
| `-c` / `--count` | 字数统计 |
| `-l` / `--lines` | 行数统计 |
| `-t` / `--titles` | 提取所有标题1-6级 |
| `-a/--advice` | 仅显示执行建议**必须先运行此命令** |
| (无) | 输出完整 Markdown |
| `-c/--count` | 字数统计 |
| `-l/--lines` | 行数统计 |
| `-t/--titles` | 提取所有标题1-6级 |
| `-tc <name>` | 提取指定标题的章节内容 |
| `-s <pattern>` | 正则表达式搜索 |
| `-n <num>` / `--context <num>` | 与 `-s` 配合指定上下文行数默认2 |
| `-n <num>/--context <num>` | 与 `-s` 配合,指定上下文行数(默认 2 |
## Workflow
0. **获取执行建议(必须优先执行)**
1. **获取执行建议**
```bash
python scripts/lyxy_document_reader.py --advice <文件路径或URL>
python scripts/lyxy_document_reader.py --advice <文件>
```
- 根据建议中的命令执行即可,无需继续阅读后续内容
1. **检测执行环境**
- 优先检测 **lyxy-runner-python skill** 是否可用
- 可用 → 使用 lyxy-runner-python skill 执行
- 不可用 → 回退到主机 Python 环境
2. **选择执行方式**
- 优先使用 lyxy-runner-python skill
- 其次使用建议中的 uv 命令
- 最后使用建议中的 pip + python 命令
2. **识别文件类型**
- 根据文件扩展名自动选择对应的解析器
- URL 自动识别为 HTML/网页类型
3. **添加需要的参数**
- 如 `-c`、`-t`、`-s` 等
3. **输出结果**
- 返回 Markdown 格式内容或统计信息
### 使用示例
## 参数使用示例
```bash
# 获取执行建议(必须优先执行此命令)
# 获取执行建议
python scripts/lyxy_document_reader.py --advice document.docx
# 读取 Word 文档
# 读取全文
python scripts/lyxy_document_reader.py document.docx
# 解析网页内容
python scripts/lyxy_document_reader.py https://example.com
# 统计字数
python scripts/lyxy_document_reader.py document.docx -c
# 提取所有标题
# 提取标题
python scripts/lyxy_document_reader.py document.docx -t
# 提取指定章节
@@ -102,17 +99,17 @@ python scripts/lyxy_document_reader.py document.docx -s "关键词"
# 正则搜索
python scripts/lyxy_document_reader.py document.docx -s "\d{4}-\d{2}-\d{2}"
# 指定上下文行数
# 指定搜索上下文行数
python scripts/lyxy_document_reader.py document.docx -s "关键词" -n 5
```
## 错误处理
| 错误信息 | 原因 | 解决 |
|---------|------|------|
| 错误 | 原因 | 解决 |
|------|------|------|
| 错误: input_path 不能为空 | 未提供输入 | 提供 file_path 或 URL |
| 错误: 不支持的文件类型 | 无对应 reader | 检查文件扩展名 |
| 所有解析方法均失败 | 所有解析器失败 | 检查文件是否损坏 |
| 错误: 无效的正则表达式 | 正则语法错误 | 检查正则语法 |
| 错误: 未找到匹配 | 搜索无结果 | 检查搜索词或正则 |
| ModuleNotFoundError: No module named 'xxx' | 缺少依赖 | 使用 lyxy-runner-python 或 pip 安装对应依赖 |
| ModuleNotFoundError | 缺少依赖 | 使用 --advice 获取正确的依赖命令 |