LibreOffice Skill:在 Agent 里用 headless 做文档转换与批量导出

前言

在自动化流水线或对话式 Agent 里处理 Office 文档,常见做法是各自写脚本、拼 unoconv 或在线 API,环境不一致时格式映射和批量通配符也容易踩坑。下面介绍 SkillHub 上的 LibreOffice Skill(@user_eba395de/libreoffice):把本机 LibreOffice 无界面(headless) 能力和封装脚本写进通用 SKILL.md,让 Agent 在「转 PDF」「批量 docx」「导出 HTML/EPUB」等意图下按同一套步骤执行。

这是什么

LibreOffice 是 SkillHub 分类 office-efficiency 下的社区 Skill(来源:community),当前版本 1.1.0,发布者坐标 user_eba395de,页面作者显示为 TanYiLuo。Skill 标签标明 requires_api_key=false,不依赖外部 API Key。

一句话定位:面向 LibreOffice 24.2 办公套件的 headless 命令行操作——文档格式转换、批量处理,以及导出 PDF / HTML / EPUB 等;适用于 Word、Excel、PPT、PDF 之间的互转与批量任务。SkillHub 页面简介与包内 SKILL.md 描述一致。

官方入口:

  • API 页:https://api.skillhub.cn/user_eba395de/libreoffice
  • 展示页:https://www.skillhub.cn/skills/user_eba395de/libreoffice

(页面统计以 SkillHub 抓取为准:评分 100000,下载 6024。)

核心功能

经包内 SKILL.md 核实,Skill 提供两层能力:

  1. 推荐路径:Skill 目录下的 libreoffice_ops.py,封装安装检测、路径与格式映射,支持五种子命令:convert、batch、merge、extract-text、info。
  2. 备用路径:直接调用 soffice --headless --convert-to,并给出常见过滤器名(如 PDF 的 writer_pdf_Export、HTML 的 XHTML Writer File、EPUB 的 EPUB 等)。

脚本声明的可用目标格式包括:pdf, html, epub, docx, odt, xlsx, ods, pptx, png, jpg, txt, csv。执行前应先检测本机是否已安装 LibreOffice(soffice --version);未安装时 Skill 文档给出了 apt / yum / brew 的安装示例。

Agent 侧触发语义(Skill 原文):用户提到「转换文档」「导出 PDF」「批量转格式」「Word 转 Excel」等时,先确认输入路径与目标格式,再执行命令并回报输出路径或文件。

安装与启用

1. 安装 SkillHub CLI(若尚未安装)

先检查是否已有 CLI:

command -v skillhub && skillhub --version

未安装时,可按 SkillHub 官方说明执行完整安装(CLI + 默认 Skill):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

仅安装 CLI 时:

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash -s -- --cli-only

说明见:https://skillhub.cn/install/skillhub.md

2. 安装 LibreOffice Skill 到当前 Agent 的 skills 目录

安装技能时必须用 --dir 指向当前 Agent 识别的 skills 目录;否则默认落在 ./skills/,Agent 可能读不到。官方文档列出的路径示例:

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/

在 Cursor 中可执行:

skillhub install @user_eba395de/libreoffice --dir ~/.cursor/skills/

SkillHub 页面也支持让 AI 按 https://skillhub.cn/install/skillhub.md 安装同一坐标。

3. 本机 LibreOffice

Skill 依赖系统已安装的 soffice。检测示例:

soffice --version 2>&1 | head -1

Debian/Ubuntu 可参考 Skill 文档:

sudo apt install -y libreoffice-core libreoffice-writer libreoffice-calc libreoffice-impress

安装或更新 Skill 后,按你所用客户端的要求重启或刷新 Agent,使其加载新 Skill。

典型用法

以下示例来自 Skill 包内 SKILL.md,将 <skill_dir> 替换为安装后的 Skill 目录(例如 ~/.cursor/skills/@user_eba395de/libreoffice)。

用 Python 封装脚本(推荐)

python3 <skill_dir>/libreoffice_ops.py convert report.docx pdf --outdir /tmp/output

批量把当前目录下 docx 转为 pdf:

python3 <skill_dir>/libreoffice_ops.py batch "*.docx" pdf --outdir /tmp/output

从 PDF 或 Office 文件提取纯文本:

python3 <skill_dir>/libreoffice_ops.py extract-text contract.pdf --outdir /tmp/output

查看文件信息:

python3 <skill_dir>/libreoffice_ops.py info document.docx

直接调用 soffice(备用)

单文件 Word 转 PDF:

soffice --headless --convert-to pdf /path/to/document.docx --outdir /tmp/output/

同一文档同时导出 PDF 与 HTML:

soffice --headless \
  --convert-to pdf:"writer_pdf_Export" \
  --convert-to html:"XHTML Writer File:UTF8" \
  /path/to/document.docx \
  --outdir /tmp/output/

适用场景与注意

适合谁

  • 需要在 Agent 对话或本地自动化里完成 Office/PDF 互转、批量导出、抽文本,且希望统一走本机 LibreOffice、不绑定商业转换 API 的团队或个人。
  • 已使用 Cursor、Claude Code、Codex 等支持 Skill 目录的客户端,并愿意用 SkillHub 管理技能包。

限制与注意

  • Skill 不包含 LibreOffice 本体;libreoffice_ops.py 只调用已安装的套件,版本升级需自行 apt upgrade 或 brew upgrade --cask libreoffice。
  • headless 转换大文件时启动较慢;--headless 应放在首位;--outdir 未指定时输出到当前工作目录。
  • 批量 *.docx 依赖 shell 展开通配符。
  • 文档中的 javaldx 类 Java 警告一般可忽略;乱码时可尝试带 :UTF8 的文本过滤器;转换失败时建议用 GUI 打开源文件确认是否损坏。

结尾

LibreOffice Skill 把 headless 转换命令、格式表和 libreoffice_ops.py 五类操作 收敛进一份 Skill,适合在 Agent 里处理文档批量化任务。安装与坐标以 SkillHub 为准:@user_eba395de/libreoffice,展示页 https://www.skillhub.cn/skills/user_eba395de/libreoffice ,API 页 https://api.skillhub.cn/user_eba395de/libreoffice 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜