nextcloud-powertools — tag a file, get it extracted / zipped / rendered (pure WebDAV, no shared volumes)

Hi all,

I needed this for myself so I built it, and figured it might be useful to someone here.

nextcloud-powertools is a small, isolated, Dockerized Python worker that performs file operations on your Nextcloud files when you tag them — entirely over Nextcloud’s WebDAV/OCS API. No shared volumes, no Docker socket, no access to the Nextcloud app container.

Add a trigger tag to a file or folder in the web UI. The worker notices (webhook or polling), downloads the file over WebDAV, runs the matching action, uploads the result back into the same parent folder, then removes the trigger tag to mark it done and make it re-runnable.

Tag Action
extract Decompress an archive (zip, rar, 7z, tar, tar.gz, tar.bz2/xz, gz) into a new subfolder
zip Compress the tagged file/folder → <name>.zip
render-png Render/convert → PNG with transparency (PSD, camera RAW, TIFF, PDF/AI/EPS, HEIC/AVIF/WEBP, SVG, and more)
render Same sources → JPG, flattened onto white

The render actions are the reason I wrote it: they cover a lot of the “files Nextcloud can’t preview” list, and the renderer registry is extensible in a few lines.

The original is never deleted. extract writes into a new subfolder beside the archive; the archive stays. No action issues a WebDAV DELETE on your content. (There’s an opt-in destructive shred action, off by default and confined to a configured directory — documented in the README.)

Multi-arch image on ghcr.io/lirankor/nextcloud-powertools.

GitHub: GitHub - lirankor/nextcloud-powertools: Isolated Dockerized worker that runs file operations (extract / zip / render) on Nextcloud files when you tag them — pure WebDAV/OCS, no shared volumes or Docker socket. · GitHub

Happy to hear if this is useful, or what actions you’d want added.

fyi: with a bit of fiddling you could turn this into a one-click install for people by packaging it as an exApp :slight_smile:

Thank you, new to the ecosystem so I don’t even know how (yet), also not sure if it is valuable to others like it is for me, I will consider investing more into it if it gains traction.