用途:在容器内把一个文件从一种格式转换为另一种格式,涵盖文档、图片、音频、视频。核心并非运行引擎,而是挑选正确引擎,本技能用脚本内置路由规则避免每次重新判断。
主要能力与路由:标记语言互转(md、html、rst、latex、epub、rtf、ipynb 等)以及标记语言与 Office、PDF 之间转换使用 pandoc;Office 转 PDF、Office 互转及旧版二进制格式(.doc/.ppt/.xls)使用 LibreOffice(保留版式,pandoc 会破坏版式且无法读旧格式);图片互转与图片转 PDF 使用 ImageMagick;音频互转、视频互转、mp4 转 gif、gif 转 mp4 使用 ffmpeg。gif 按来源族拆分:png 转 gif 走 ImageMagick,mp4 转 gif 走 ffmpeg。
使用方式:脚本 scripts/convert.py 是四个二进制的调度器,不是新引擎。先规划再执行:python3 /mnt/skills/user/converting-files/scripts/convert.py --plan in.docx out.pdf;执行:python3 .../convert.py in.docx out.pdf、notes.md notes.docx、clip.mp4 clip.gif。OUTPUT 之后的参数透传给引擎,例如 photo.png photo.jpg -quality 85、song.wav song.mp3 -b:a 192k、paper.md paper.pdf --pdf-engine=xelatex;可用 --engine pandoc 强制指定引擎。退出码:0 成功,2 无路由,3 引擎失败,4 参数或输入错误。批量由 shell 循环完成,一次一个文件以便定位失败。
限制与注意事项:需要改内容而非改格式时,应使用 docx/pptx/xlsx/pdf 等内容技能;读取 PDF 文本用 pdf-reading;合并填写 PDF 用 pdf 技能;上下文中已有文件直接读取。LibreOffice 会自行按输入名输出,调度器随后重命名;其 headless 为单实例,并发调用会冲突,需串行执行。标记语言转 PDF 依赖 LaTeX 引擎,特殊 Unicode 建议 xelatex,若 LaTeX 报错可先转 docx 再转 PDF。此处 ImageMagick 为 IM6(convert),部分格式可能被 policy.xml 安全策略拦截。markup 转 jira 会出现标题锚点,可用 -f markdown-auto_identifiers 抑制。--plan 只校验路由,不验证转换结果。本技能为容器内原生方案,不依赖 Web 转换器。