🎬🧹AGSoft Video Strip Metadata
Your exported MP4 is hiding the full generation prompt — strip it without a re-encode
- filepath
- report
Images aren't the only thing carrying a prompt around. When a video-gen workflow - LTX, MiniMax, Wan, whatever you're running - saves an MP4, the generation data gets stashed in the container's metadata boxes (udta, meta, encoder tags). Someone who knows where to look can pull your prompt, your model, your settings straight out of the file. And unlike images, the usual "just screenshot it" answer doesn't exist for a video.
🎬🧹AGSoft Video Strip Metadata removes that data from MP4, MOV, WebM, and MKV - without re-encoding. The streams are copied through unchanged, so you keep every frame at full quality. Your render doesn't get touched; a clean copy lands in output/ instead.
How it works
Same byte-surgery philosophy as its sibling 🖼️AGSoft Image Strip Metadata, but for container formats. It parses the MP4/MOV atom tree and the MKV/WebM EBML structure in pure Python, drops the metadata boxes and tags, and reassembles the rest 1:1. No ffmpeg, no PyAV, no external tools, no quality loss. That "no re-encode" part is the whole pitch: a re-encode fix would cost you a generation pass worth of detail, and this costs you nothing.
The inputs
Only four, and they're identical to the image version:
file_path- absolute path to one video or a folder; folders process every supported file inside (MP4/MOV/WebM/MKV).write_mode-clean_copywrites the stripped file;scan_onlyonly reports what metadata each file carries, writes nothing. Do the scan first - it's a two-second dry run and it'll tell you which files even have metadata worth removing.subfolder- optional, auto-created insideoutput/;a/bnesting works.filename_prefix-clean(default) givesclean_<name>.mp4; empty gives<name>_clean.mp4.
You get back filepath (the written copy) and report - one line per file showing what was found before, what's left after, and where the clean copy went. Pipe report into a Show Text for a readable log.
Installing it
It's in the comfyui-AGSoft pack, same install as every other AGSoft node:
cd ComfyUI/custom_nodes
git clone https://github.com/Art-xmaster/comfyui-AGSoft
restart, or search comfyui-AGSoft in ComfyUI Manager. This node needs zero extra dependencies - the pack's declared numpy/opencv/translators aren't involved.
Where people get burned
Mainly by expecting it to re-encode: it won't, and that's the feature. Unsupported formats throw a clear error; a folder with no supported videos raises too. The bigger trap is thinking of this as "cleaning up my files" - it's really a release tool. Stripped video won't reveal your pipeline to whoever downloads it, which is exactly what you want before posting public samples, but remember the original (with its metadata) is your only copy of that generation's provenance. Keep both: this node never modifies the source, so it's easy to strip a copy for sharing and keep your master intact.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | Absolute path to a video file or a folder (all supported videos inside). --- Абсолютный путь к видеофайлу или папке (все поддерживаемые видео внутри). | |
| write_mode | COMBO | clean_copy | clean_copy = write a clean copy into OUTPUT (original untouched); scan_only = report only, no writes. --- clean_copy = чистая копия в OUTPUT (оригинал не трогается); scan_only = только отчёт, без записи. |
| subfolder | STRING | Optional subfolder inside OUTPUT (created automatically; nested 'a/b' allowed). --- Опциональная подпапка внутри OUTPUT (создаётся автоматически; можно 'a/b'). | |
| filename_prefix | STRING | clean | Prefix for the clean copy: '<prefix>_<name><ext>'. Empty -> '<name>_clean<ext>'. --- Префикс чистой копии: '<префикс>_<имя><ext>'. Пусто -> '<имя>_clean<ext>'. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| filepath | STRING | — |
| report | STRING | — |