mcpField
O
odt

odt

github.com/sungkhum文档处理037 次安装37 周前更新
代码仓库

关于 odt

ODT Document Skill 为需要读取、创建、编辑或验证 ODT 文档的用户提供工作流程指南。它根据任务选择适用的库或原始 XML 操作,并涵盖包结构、修订跟踪和语言设置。

主要功能

  1. 01使用转换工具提取文本
  2. 02通过 odfdo 创建和编辑文档
  3. 03处理修订跟踪和批注
  4. 04支持直接编辑 XML 包
  5. 05提供验证与格式转换流程

适用场景

  1. 01汇总 ODT 文件中的文本和表格
  2. 02保留修订记录地编辑文本
  3. 03设置文档样式的语言和字体
  4. 04检查包文件与架构有效性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sungkhum/agent-skills --skill odt

安装后在 Claude Code 中输入/odt确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
Test-Format-ODT-Khmer.odt
Test-Format-ODT.odt
odf/schemas/odf-1.3/
OpenDocument-v1.3-dsig-schema.rng
OpenDocument-v1.3-manifest-schema.rng
OpenDocument-v1.3-metadata.owl
OpenDocument-v1.3-package-metadata.owl
odf/scripts/
annotation_smoke_test.py
example_tracked_changes.py
fetch_schemas.py
pack.py
set_language.py
unpack.py
validate_changes.py
validate_rng_all.py
validate_rng.py
validate.py
references/
odf-schemas.md
odf-xml.md
odfdo.md
odt-change-tracking.md
odt-document.md
odt-language.md
odt-structure.md
tools.md
scripts/
__init__.py
annotation_smoke_test.py
example_tracked_changes.py
fetch_odf_schemas.py
odt_document.py

详细介绍

ODT 文档技能

.odt 文件是一个包含 XML 文件和资源的 ZIP 包。尽可能使用高级库;对于复杂格式、修订或精确控制,则回退到原始 XML。

参考文件

主题文件
包结构references/odt-structure.md
修订references/odt-change-tracking.md
语言/区域设置references/odt-language.md
XML 模式references/odf-xml.md
odfdo 库references/odfdo.md
ODTDocument APIreferences/odt-document.md
架构验证references/odf-schemas.md
工具概览references/tools.md

示例提示词

  • “从此 ODT 中提取所有文本,并总结标题和表格。”
  • “应用修订来替换这些短语,同时保留修订痕迹。”
  • “为所有段落样式设置高棉语语言/区域设置和字体。”
  • “验证此 ODT 包并报告缺失的文件。”
  • “解包、编辑 content.xml,然后重新打包,且不破坏样式。”

工作流决策树

任务方法
读取/提取文本使用 pandoc 或 odfdo-markdown
创建新文档阅读 references/odfdo.md,使用 odfdo 库
简单编辑阅读 references/odfdo.md,使用 odfdo 库
修订/注释阅读 references/odt-document.md,使用 ODTDocument API
复杂 XML 编辑阅读 references/odf-xml.md,直接编辑 XML

核心操作

文本提取
pandoc document.odt -o document.md      # Convert to Markdown
odfdo-markdown document.odt > out.md    # Alternative
解包/打包工作流
python scripts/unpack_odt.py <file.odt> <dir>   # Unpack
# ... edit XML files ...
python scripts/pack_odt.py <dir> <file.odt>     # Repack
使用 ODTDocument 库

使用 ODTDocument 的脚本需要将 PYTHONPATH 设置为技能根目录。如果从仓库根目录运行,请将其明确指向技能文件夹:

PYTHONPATH=/path/to/repo/skills/odt python your_script.py
# example from repo root
PYTHONPATH=skills/odt python your_script.py
使用 odfdo 创建文档

请先阅读 references/odfdo.md。基本示例:

from odfdo import Document, Paragraph
doc = Document('text')
doc.body.append(Paragraph('Hello'))
doc.save('output.odt')
原始 XML 编辑

请先阅读 references/odf-xml.md。关键文件:

  • content.xml — 文档主要内容
  • styles.xml — 文档样式
  • META-INF/manifest.xml — 包清单(添加文件时需更新)

修订工作流

请阅读 references/odt-change-tracking.md 了解结构详情。关键原则:

  • 批量更改:每批将 3–10 项相关更改分组,便于调试
  • 尽量少标记:仅标记实际更改的文本

工作流:

  1. 转换为 Markdown:pandoc doc.odt -o doc.md
  2. 识别更改并将其分批
  3. 使用 ODTDocument.suggest_replacement() / suggest_insertion() / suggest_deletion()
  4. 验证:python scripts/validate_changes.py content.xml
  5. 重新打包并在 LibreOffice 中验证

语言支持(高棉语、泰语、阿拉伯语等)

参见 references/odt-language.md。辅助脚本:

python scripts/set_language.py styles.xml --lang km --country KH --font "Khmer OS System"

将 ODT 转换为 PDF/图像

soffice --headless --convert-to pdf document.odt    # ODT → PDF
pdftoppm -jpeg -r 150 document.pdf page             # PDF → images

依赖项

必需

  • odfdo:pip install odfdo(创建/编辑 ODT)
  • defusedxml:pip install defusedxml(安全解析 XML)

可选

  • pandoc:brew install pandoc(Markdown 转换)
  • LibreOffice:brew install --cask libreoffice(ODT → PDF)
  • jing:用于 validate_rng.py 的 Relax NG 验证器
  • Poppler:brew install poppler(用于 PDF → 图像的 pdftoppm)

验证脚本

python scripts/validate_odt.py <dir> --original <file.odt>     # Package validation
python scripts/validate_changes.py <dir>/content.xml           # Change tracking
python scripts/validate_rng.py <dir>/content.xml               # RNG schema (needs jing)
python scripts/smoke_test.py <file.odt> <work_dir>             # Full roundtrip

评论

支持 Markdown