ConvertX 命令行:3 条命令搞定 700+ 格式批量转换

ConvertX 命令行:3 条命令搞定 700+ 格式批量转换 ConvertX 命令行3 条命令搞定 700 格式批量转换【免费下载链接】ConvertX Self-hosted online file converter. Supports 1000 formats ⚙️项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX周五下午运营甩给你 200 张商品图说今晚要 webp 版本。你打算一张张另存为吗这种一筐进、一筐出的活儿最适合丢给脚本干。今天聊的就是 ConvertX 的命令行用法这个自托管文件转换服务部署好之后用几条 curl 就能驱动 700 格式官方 README 的说法是一千多种的批量转换。它是什么为什么值得走命令行ConvertX 用 TypeScript 写的跑在 Bun 运行时上服务端是 Elysia 框架。它把一堆专业工具接了进来FFmpeg 管音视频ImageMagick 和 Vips 管图片Pandoc 和 LibreOffice 管文档Calibre 管电子书Assimp 管 3D 模型。格式数看着吓人其实是这些底层工具能力的总和并不是自己硬凑的。说白了它本来是个网页工具浏览器里传文件、选目标格式、点转换。但它的所有交互都只是几个明明白白的 HTTP 接口——上传、转换、下载没有复杂状态机。一次性的转换用网页没问题可当你想把它接进定时任务、目录监听或者构建脚本让格式自动转换跑起来时命令行就顺手多了。五分钟跑起来 ConvertX部署就一条 docker runREADME.md 里有完整的 compose 写法仓库里的 compose.yaml 偏开发用途照抄即可# 启动服务数据落在 ./dataJWT_SECRET 防止重启后会话失效 docker run -d --name convertx -p 3000:3000 -v ./data:/app/data \ -e JWT_SECRETaLongRandomSecretString ghcr.io/c4illin/convertx # 健康检查应输出 {status:ok} curl http://localhost:3000/healthcheck # 登录账号需先建好认证 cookie 存进 ck.txt curl -s -c ck.txt -d emailadminexample.compassword你的密码 \ http://localhost:3000/login /dev/null # 访问一次首页拿到本次job的 jobId cookie curl -s -b ck.txt -c ck.txt -o /dev/null http://localhost:3000/ # 上传一张图并一键转成 webp由 vips 转换器执行 curl -s -b ck.txt -F filecat.png http://localhost:3000/upload curl -s -b ck.txt --data-urlencode convert_towebp,vips \ --data-urlencode file_names[cat.png] http://localhost:3000/convert首次用浏览器打开 3000 端口会引导你创建账号第一个账号是管理员别留着不配置就暴露出去。不想开浏览器的话直接向 /register 发一次表单请求也能建好第一个账号。转换完成后结果在容器的 data/output 里单个文件走 /download 取整批结果走 /archive 打包成 tar 取走。一筐图变 webp最基础的批量转换文件批量转换里最高频的需求其实是最简单的那种一个目录的 jpg 要统一压成 webp。ConvertX 的 job 概念正好对上——一个 job 就是一批文件都传进同一个 job一次转换全部处理HOSThttp://localhost:3000 # 登录并创建空 job一次 job 一批文件 curl -s -c ck.txt -d emailadminexample.compassword你的密码 $HOST/login /dev/null curl -s -b ck.txt -c ck.txt -o /dev/null $HOST/ names() for f in raw/*.jpg; do # 逐个上传原料 curl -s -b ck.txt -F file$f $HOST/upload /dev/null names(\$(basename $f)\) done # 整批转 webp图片批量压缩交给 vips再打包取回 list$(IFS,; echo ${names[*]}) curl -s -b ck.txt --data-urlencode convert_towebp,vips \ --data-urlencode file_names[$list] $HOST/convert /dev/null job$(awk /jobId/{print $NF} ck.txt) curl -s -b ck.txt -o webp_batch.tar $HOST/archive/$job关键在于 file_names 是一个 JSON 数组你上传了什么就列什么不管多少文件一次转完最后拿到一个包含全部结果的 tar直接丢给流程的下一环就行。同源多路输出一张图出三种格式变成一种格式之后紧跟着的问题往往是商品主图要 webp还要 avif另外留一份 heic 给 Apple 端。思路不变每个目标格式开一个独立 job走完全一样的流程只是换 convert_to 参数让不同转换器各领各的格式HOSThttp://localhost:3000 # 同一张源图每个目标格式一个独立 job for target in webp,vips avif,libjxl heic,libheif; do fmt${target%%,*} # 取出格式名如 webp curl -s -c ck.txt -d emailadminexample.compassword你的密码 $HOST/login /dev/null curl -s -b ck.txt -c ck.txt -o /dev/null $HOST/ # 新建一个 job curl -s -b ck.txt -F filecover.jpg $HOST/upload /dev/null curl -s -b ck.txt --data-urlencode convert_to$target \ --data-urlencode file_names[cover.jpg] $HOST/convert /dev/null job$(awk /jobId/{print $NF} ck.txt) curl -s -b ck.txt -o out/cover-$fmt.tar $HOST/archive/$job done # 解包后 out/ 里就是三种格式的 cover同一源文件反复转换的开销主要花在编码上vips、libjxl 这类原生实现速度都不慢几十张图通常很快就完事。docx 到 md 再 html链式接力批量和多路输出都还是一次转换流程拉长时就不一样了比如把 Word 报告先转成 Markdown 做内容分析再把 Markdown 渲染成 HTML 页面。把上传、转换、取回封装成一个函数调用两次就完成了接力HOSThttp://localhost:3000 run_step() { # 通用步骤上传→转换→取回结果 curl -s -c ck.txt -d emailadminexample.compassword你的密码 $HOST/login /dev/null curl -s -b ck.txt -c ck.txt -o /dev/null $HOST/ curl -s -b ck.txt -F file$1 $HOST/upload /dev/null curl -s -b ck.txt --data-urlencode convert_to$2 \ --data-urlencode file_names[\$1\] $HOST/convert /dev/null job$(awk /jobId/{print $NF} ck.txt) curl -s -b ck.txt -o step_$3.tar $HOST/archive/$job } run_step report.docx md,pandoc 1 # 第一步docx → md tar -xf step_1.tar # 解出转换好的 report.md run_step report.md html,pandoc 2 # 第二步md → html注意接力中间必须把文件取回本地再传上去ConvertX 不会自动串接中间结果这一步取回再喂入的动作省不了。几个容易踩的坑并发数怎么定环境变量 MAX_CONVERT_PROCESS 限制同时跑的转换进程数0 表示不限制。做 FFmpeg 批量转码这种吃 CPU 的活设到核心数的一半左右比较稳纯文档、图片任务可以调高些。失败文件怎么兜底一个 job 的结果在独立目录里个别文件失败不会连累整批。脚本里最简单的兜底是把失败文件名记下来攒成小批量重跑一遍不用重传全部。别让 data 目录无限膨胀上传和结果分别落在 data/uploads 和 data/output默认 AUTO_DELETE_EVERY_N_HOURS 每小时清理超过 24 小时的旧 job想留全历史就设成 0定期自己归档。第一个账号与访问环境首个注册的账号就是管理员记得自己第一时间创建如果不用 localhost 或 https 访问要设 HTTP_ALLOWEDtrue否则登录会不通过这点 README 里专门提醒过。最后ConvertX 的命令行玩法一句话就能说清一个 job 就是一批文件剩下的全是 curl。遇到转不动的格式对去 README.md 的格式矩阵里对一眼或者开个 Issue 问问比猜要快。【免费下载链接】ConvertX Self-hosted online file converter. Supports 1000 formats ⚙️项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考