Media is where automation pipelines quietly fall apart.
This post walks through six importable n8n workflows, built on the Cloudinary community node, that hand those media steps back to the pipeline.
You've wired up a beautiful no-code flow β a new product lands in your PIM, a webhook fires, records sync. Then someone has to resize the hero image for the storefront, cut the launch video into a square for the feed and a vertical for Reels, export a poster frame, and add captions for accessibility. So the "automated" pipeline stops and waits for a human with Photoshop and a video editor.
The Cloudinary community node for n8n just closed that gap. The latest release turns Cloudinary's transformation, delivery, and video player engine into native n8n steps, so media work becomes just another node in the flow.
Below are six ready-to-import example workflows β two clicks to load β designed to run on a free Cloudinary account, subject to usage limits (credits, video processing, and some add-ons count against your plan). Each one is self-describing (every workflow ships with a sticky-note README inside n8n) and contains no credentials β you add your own. Each one below links straight to its JSON.
πΎ One-time setup gotcha worth knowing up front: after you import a workflow and pick your Cloudinary credential on the first node, press Cmd/Ctrl+S to save before running. That single save persists the credential to every Cloudinary node in the flow at once β so a full Execute Workflow run finds credentials everywhere. Skip the save and the run can fail node-after-node with "Node does not have any credentials set," even though the credential looks selected. (More in Add your Cloudinary credentials.)
What you'll build
- One master video cut for every social platform
- Uniform, AI-filled catalog images at scale
- A paste-in responsive srcset
- An embeddable, adaptive video player
- An automated media-library governance audit
- Accessible video with AI-generated captions
What's new in the Cloudinary n8n node
The release adds three things that matter for automation:
1. A Transform resource that builds delivery URLs β with no upload and no API call. Optimize, Resize and Crop with an additional conversion option for images and trimming and thumbnails for video. Each operation returns a finished secure_url and a reusable transformation string. Because they're pure URL construction, they're instant and free of round-trips.
2. Transformations that compose three ways.
- Compose: Combine Transformations chains several steps (trim β crop β optimize) inside a single node.
- Continue From Transformation chains steps across nodes β wire one node's transformation output into the next node's input and they compound into one URL.
- And the same transformation string drops straight into the Video Player widget.
3. Advanced media features β no code required:
- Generative Fill β extend an image to a new shape with AI-painted background instead of cropping.
- Video Player widget β generate an embeddable player with HLS adaptive streaming (and an MP4 progressive fallback), a poster, picture-in-picture, and on-demand AI captions, transcripts, and chapters.
- Asset Search β paginate through all matching assets, one n8n item per asset, for governance and audits.
Now let's put them to work.
1. One source video β a cut for every platform
The problem: marketing ships one master video. It needs a 9:16 for TikTok/Reels, a 1:1 for the feed, and a 16:9 for YouTube β each trimmed, each with a poster frame, each optimized. Today that's a manual export-fest.
The workflow: 01-social-video-variations.json
Upload the master once, then three Compose: Combine Transformations nodes each build a single delivery URL that trims β crops to the platform's aspect ratio (with auto-focus to keep the subject in frame) β auto-optimizes. A matching Video: Thumbnail generates each poster. A final Code node collects everything into a tidy list of {platform, video_url, poster_url}.
The win: one trigger produces every platform's asset, ready to hand to a social scheduler or CMS. Add a platform by copying a node and changing one aspect ratio.
2. Bulk product photos β uniform, AI-filled catalog images
The problem: product photography arrives in every shape and on every background. Your storefront wants identical, square, optimized product images for thousands of SKUs.
The workflow: 02-ecommerce-image-pipeline.json
For each product, the flow ingests the photo, then runs Image: Crop with Generative Fill β instead of cropping the product, Cloudinary extends the canvas to a perfect 1200Γ1200 square and paints a matching background with AI (guided by a prompt like "clean seamless studio background"). It then chains a Convert β WebP step onto that same transformation. Out comes one catalog-ready URL per product.
The win: consistent, optimized product imagery with zero designer time β and it scales to your whole catalog by swapping the input list for a Cloudinary Search or a PIM lookup.
Generative Fill is a generative-AI effect: it uses a special transformation count, is subject to your plan limits, and may render asynchronously on the first request. Create a free account to try it.
3. One image β a responsive srcset you can paste into any page
The problem: you're still hand-exporting @1x/@2x assets, and shipping desktop-sized images to phones.
The workflow: 03-responsive-srcset.json
Point it at one source image and a list of widths. It builds an Image: Resize URL per width (using Limit fit so it never upscales), chains Optimize (f_auto/q_auto) onto each so Cloudinary serves AVIF/WebP/JPEG per browser at the right quality, and assembles a ready-to-paste <img srcset=β¦> block.
The win: crisp Retina displays and lightweight mobile loads from a single asset β with the markup generated for you. Change a breakpoint by editing one array.
4. A source video β a polished, embeddable player
The problem: putting a real video player on a landing page or CMS usually means a JS build step and a streaming setup.
The workflow: 04-embeddable-video-player.json
The flow trims a preview cut, grabs a matching poster frame (chained onto the trim), and generates a Video Player embed with HLS adaptive streaming and an MP4 progressive fallback, picture-in-picture, playsinline, and muted autoplay-on-scroll. It outputs both an embed_url and a responsive <iframe> snippet.
The win: a production-grade, adaptive player as a paste-in snippet β no front-end code.
The workflow feeds the player the trim transformation, not an optimize one β adaptive streaming (HLS/DASH) can't be combined with a format-pinned transform (f_auto:video). Helpfully, the node catches that exact conflict and tells you how to fix it.
5. Audit and govern a sprawling library β automatically
The problem: at scale, media libraries rot. Untagged assets, oversized files, content nobody owns. Cleaning it up by hand doesn't happen.
The workflow: 05-asset-governance-audit.json
Asset β Search Assets with Return All paginates through all matching assets (it handles pagination and surfaces rate-limit errors clearly), emitting one n8n item per asset with its tags. The template is scoped to tags=n8n-blog so it's safe to run as-is β change or remove that expression (e.g. folder:products/*, or leave it empty) to scan more broadly, up to your whole library. A Code node applies your governance rules β here, flag anything untagged or over 1 MB. Flagged assets get a needs-review tag appended (existing tags preserved); everything rolls up into an audit report you can send to Slack or email.
The win: continuous, policy-driven hygiene that works identically on 50 assets or 50,000. Swap the tag action for structured-metadata updates or (carefully) deletes.
6. Accessible video with AI-generated captions β no .vtt files
The problem: captions are often required by accessibility standards and regulations (such as WCAG, the ADA, and the European Accessibility Act), and a global audience needs subtitles in several languages. Authoring caption files for every video, by hand, doesn't scale.
The workflow: 06-accessible-video-player.json
This is the workflow that shows what Cloudinary's video features can do. The Video Player node ships an accessibility-first config β keyboard controls on, no autoplay-with-sound, playsinline, chapters button visible β plus an AI-Generated Content section that's just a set of toggles:
- Generate Captions β the player auto-generates a transcript and shows it as toggleable captions.
- Generate Title / Description / Chapters β AI-generated metadata and chapter markers for navigation.
These are enabled by default on most accounts, so there's nothing to switch on. The player only generates content that doesn't already exist, returning a 202 while it works and caching the result. Nobody writes a caption file: no code is needed to generate captions β the workflow's Code node only formats the player embed snippet.
Need subtitles in other languages? Set Subtitle Languages (e.g. es, fr-FR) for auto-translated tracks. Translation uses the Google Translate add-on: register for it (free tier available) on the Cloudinary Add-ons page, then enable it under Settings β Security β Unsigned add-on transformations. The original-language captions above need no add-on.
The win: videos with dialogue can get captions, chapters, and optional translated tracks automatically β as part of the same flow that published them, with no caption files to author.
Auto-generation lives in the player's JS config (not iframe URL params), so this workflow outputs a player.source(...) snippet for the Cloudinary Video Player SDK. On most accounts the unsigned actions for generating video details, transcripts, and chapters are enabled by default β see the customization docs.
How to import these workflows
Every workflow is a single .json file β each section above links straight to it. Importing one takes a few seconds.
1. Install the Cloudinary node (once)
Follow these instructions to install the Cloudinary community node (n8n-nodes-cloudinary).
2. Import the workflow
Open the workflows list, click the β― menu (top-right) β Import from Fileβ¦, and select one of the .json files. (You can also drag the file onto the canvas.)
The workflow opens with its sticky-note README already on the canvas explaining what every node does.
3. Add your Cloudinary credentials
The templates contain no connection details β they're yours to add.
First, create the credential once: in the Credentials sidebar β Add Credential β Cloudinary API, and paste your Cloud name, API Key, and API Secret from the Cloudinary Console β API Keys. Save it. Now it's offered in the dropdown on every Cloudinary node, in this template and every one you import later.
Then, on the imported workflow, open the first Cloudinary node and pick that credential from the Credential dropdown. n8n back-fills the other nodes that share it β you'll see "Added this credential to N other node(s)."
πΎ Then save before you run β this is the important bit. Press Cmd/Ctrl+S right after picking the credential. The save persists the binding to every Cloudinary node at once, so a full Execute Workflow run finds credentials everywhere.
If you don't save first, the full run can fail one node at a time with "Node does not have any credentials set" β even though the credential clearly looks selected on the node. (Tell-tale sign: running a node on its own with Execute step works, but Execute Workflow fails.) A save fixes it in one shot.
4. Run it
Click Test workflow. The first few workflows upload a public Cloudinary demo asset into your account so everything downstream resolves against your cloud β so they run out of the box, then become yours the moment you point them at your own media.
Where to take it next
These six are starting points, not end points. Because every Transform op emits a reusable transformation string and every node speaks plain n8n JSON, you can drop these media steps into any pipeline:
- Trigger the social-variations flow from a webhook when a new video lands in your CMS.
- Feed the e-commerce pipeline from a Google Sheet or your PIM.
- Schedule the governance audit to run nightly and post the report to Slack.
- Chain the player + AI-captions flow onto the end of any video upload.
Install the node, import a workflow, and let the media steps run themselves.
Which Cloudinary feature are you missing in the n8n integration? We're actively expanding the node β tell us what you'd build next by opening an issue on GitHub or reaching out through Cloudinary Support.
| Cloudinary β€οΈ developers |
|---|
| Ready to level up your media workflow? Start using Cloudinary for free and build better visual experiences today. |
| π Create your free account |
π Get the node: n8n-nodes-cloudinary on npm
π Request a feature / report a bug: GitHub issues
π How to import a workflow: n8n's import & export guide







Top comments (0)