技能 libreoffice-writer
📄

libreoffice-writer

低风险 ⚙️ 外部命令📁 文件系统访问🔑 环境变量⚡ 包含脚本

自动化 LibreOffice Writer 文档

手动编辑文档既耗时又容易出错。本技能通过 UNO 集成实现 LibreOffice Writer 操作自动化,支持程序化文档创建、编辑、格式化和导出。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“libreoffice-writer”。 创建一个包含标题的新文档并导出为 PDF

预期结果:

  • 文档创建成功:/path/to/report.odt
  • 已导出为 PDF:/path/to/report.pdf

正在使用“libreoffice-writer”。 在现有文档中查找并格式化文本

预期结果:

  • 已打开文档:/path/to/draft.odt
  • 已格式化文本范围:粗体,居中对齐
  • 更改已保存并关闭文档

正在使用“libreoffice-writer”。 应用包含多个操作的补丁

预期结果:

  • 补丁已解析:3 个操作
  • 操作 1 (replace_text): 成功
  • 操作 2 (format_text): 成功
  • 操作 3 (insert_table): 成功
  • 总体状态:ok
  • 文档已持久化:true

安全审计

低风险
v2 • 3/19/2026

Static analysis flagged 175 patterns but evaluation confirms these are false positives. The skill legitimately uses subprocess to launch LibreOffice with hardcoded arguments, tempfile for secure temp directories, and importlib for module detection. All external command usage has no user input injection vectors. Risk is low due to filesystem and external command dependencies requiring LibreOffice installation.

14
已扫描文件
2,550
分析行数
7
发现项
2
审计总数
低风险问题 (3)
External Process Execution
subprocess.Popen launches LibreOffice soffice binary. All arguments are hardcoded strings with no user input injection. This is legitimate automation of installed software.
Temporary Directory Creation
Uses tempfile.mkdtemp() to create isolated profile directories for LibreOffice instances. Directories are cleaned up in finally blocks.
Environment Variable Access
Reads LIBREOFFICE_PROGRAM_PATH environment variable to locate UNO module. Value is used only for path resolution, not executed.
审计者: claude 查看审计历史 →

质量评分

64
架构
100
可维护性
87
内容
24
社区
84
安全
91
规范符合性

你能构建什么

自动化报告生成

通过创建文档、插入格式化文本和表格,然后导出为 PDF 进行分发,生成标准化报告。

文档模板处理

加载模板文档,用动态内容替换占位符文本,用新数据更新表格,并导出定制版本。

批量文档操作

使用补丁工作流在多个文档之间应用一致的格式更改,失败时支持原子回滚。

试试这些提示

创建和填充文档
在 /path/to/report.odt 创建一个新的 LibreOffice Writer 文档。插入标题"月度报告",添加章节标题"摘要",然后插入一段描述本月成就的文字。将最终文档导出为 PDF。
使用结构化定位进行编辑
打开 /path/to/draft.odt,找到出现在"财务概览"之后和"下一步"之前的句子"季度收入显著增长"。将其设为粗体并居中。然后在"行动项目"后插入一个包含三个任务的项目符号列表:审查预算、安排会议、发送更新。
带数据的表格操作
打开 /path/to/data-report.odt 处的文档。插入一个名为"销售数据"的 4 行 3 列表格。用标题 [地区,第一季度,第二季度] 和北方、南方、东部地区的数据行填充它。当收到新数据时更新第二季度的值。
原子补丁工作流
以原子模式将此补丁应用到 /path/to/manuscript.odt:首先,将所有"草稿"实例替换为"最终版"。其次,将章节标题格式化为 14 号字体的粗体。第三,插入目录。如果任何操作失败,回滚所有更改并报告错误。

最佳实践

  • 使用基于 UNO 的 Writer API 时始终使用绝对文件路径
  • 使用完整句子或段落级短语锚定文本目标,而不是单个单词
  • 当文本可能出现多次时,使用 after 和 before 边界来约束搜索
  • 在 try/finally 或上下文管理器中包装会话操作以确保正确清理
  • 在切换到生产环境的 atomic 模式之前,先在 best_effort 模式下测试补丁工作流

避免

  • 使用相对路径 - UNO 要求所有文档操作使用绝对文件路径
  • 当相同文本在文档中出现多次时省略 occurrence 参数
  • 在调用 session.close() 后调用会话方法
  • 在补丁项或数据字段中提供格式错误的 JSON
  • 期望段落对齐仅应用于匹配的文本而不是整个段落

常见问题

为什么本技能需要安装 LibreOffice?
本技能使用 LibreOffice 的 UNO(Universal Network Objects)API 与 Writer 文档交互。UNO 是 LibreOffice 的原生自动化接口,需要在本地安装带有 Python UNO 绑定的 LibreOffice。
我可以导出哪些文件格式?
本技能支持开箱即用地导出为 PDF 和 DOCX 格式。其他格式可能因您的 LibreOffice 安装和过滤器可用性而异。
如何修复'ModuleNotFoundError: No module named uno'?
将系统的 LibreOffice Python 路径添加到 PYTHONPATH。在 Linux 上,这通常是 /usr/lib/python3/dist-packages。设置 PYTHONPATH 以同时包含技能脚本目录和 LibreOffice Python 模块。
atomic 和 best_effort 补丁模式之间有什么区别?
atomic 模式在首次失败时停止、重置会话且不持久化任何内容。best_effort 模式继续执行所有操作并记录哪些成功,即使某些操作失败也会持久化成功的更改。
我可以编辑当前在 LibreOffice 中打开的文档吗?
不能。文档在通过 UNO 编辑之前应该关闭。尝试打开已被其他 LibreOffice 实例锁定的文档会失败或导致冲突。
当相同短语出现多次时,如何定位特定文本?
使用 occurrence 字段指定要定位哪个匹配项(从 0 开始索引),或添加 after 和 before 边界将搜索窗口缩小到文档的特定部分。