A Watermark and Branding Workflow
Adding watermarks, logos, and brand overlays to a batch of AI-generated assets is tedious when done manually and inconsistent when different team members apply overlays with different positioning or opacity rules. This guide explains how to build a watermark and branding workflow in Floniks: how to configure a Brand Layer node with logo, safe-zone rules, and opacity settings, how to detect image content to dynamically adjust overlay position, how to apply different branding treatments per output format, and how to include a QR code or URL overlay for campaign tracking. The result is a zero-manual-effort branding pipeline that applies consistent, policy-compliant overlays to every output in your asset library.
Why Manual Watermarking Breaks at Scale
Manually applying watermarks and brand overlays to an asset library works for small batches but breaks down quickly at production scale. The problems compound: logo positioning drifts across different team members' outputs because the placement guideline is "upper right corner" rather than a precise pixel offset relative to the safe zone; opacity varies between 70% and 90% depending on who applied it and which asset they were working on; some assets get the color logo while others get the white monochrome version even though the brand standard specifies the white version for dark backgrounds; and none of this inconsistency is caught until a brand audit.
A branding workflow in Floniks codifies every one of these decisions into node configuration: the logo file, its maximum width as a percentage of the canvas, its minimum safe-zone clearance from all edges, its opacity by background luminosity (white logo at 80% on dark backgrounds, color logo at 90% on light backgrounds), and its position priority (upper-right preferred, falls back to lower-right if upper-right has important content). These rules execute identically across every asset in a batch with no variance between runs or operators.
Additionally, a watermarking workflow creates a single update point: when the brand guidelines change — new logo version, updated opacity standard, new campaign URL — you update the Brand Layer node configuration once and re-run the workflow. Every asset in the library is re-processed with the updated branding automatically, without hunting through folders to re-apply changes file by file.
Configuring the Brand Layer Node
The Brand Layer node holds all the parameters that define how branding is applied to an asset. The key configuration fields are: logo file (upload a high-resolution transparent-background PNG of the logo), maximum width (logo width as a percentage of canvas width, typically 15–22%), minimum edge clearance (safe zone in pixels from all canvas edges, typically 40–80px), position anchor (upper-right, lower-right, lower-left, or custom x/y), opacity by background mode (fixed percentage or luminosity-adaptive), and blend mode (normal for most cases, screen blend mode for white logos on photographic backgrounds).
Luminosity-adaptive opacity is the most reliable approach for mixed asset libraries where some outputs have dark backgrounds and others have light backgrounds. Configure the Brand Layer node to sample the average luminosity of the image in the overlay region before placing the logo. If the sampled luminosity is below 0.5 (dark region), use the white monochrome logo at 85% opacity. If it is above 0.5 (light region), use the color logo at 90% opacity and place a semi-transparent background pill behind the logo if the color logo would not be legible against the bright background.
For video assets (such as those produced by the talking-avatar or image-to-video pipeline), configure the Brand Layer node to apply as a persistent overlay across the full video duration rather than as a static image composite. The logo should appear in the first frame and remain throughout, with an optional fade-in during the first 0.5 seconds to avoid a harsh immediate appearance.
Dynamic Position Adjustment Based on Content
A fixed position anchor sometimes conflicts with important content in specific images — a logo in the upper-right corner overlaps a product name text block, or a lower-right watermark obscures a pricing callout. A dynamic position adjustment step prevents these conflicts by analyzing the content of each image before placing the logo.
Connect a Content Saliency node before the Brand Layer node. This node analyzes the input image and identifies regions of high visual importance — text blocks, faces, product labels, critical composition elements. It outputs a safe-placement map: a binary mask where white pixels indicate zones that are safe for overlay placement (low-saliency backgrounds, neutral areas) and black pixels indicate zones that should not be covered. The Brand Layer node then reads this map and selects the highest-priority placement anchor that falls within a safe zone.
This content-aware placement ensures that the logo is always visible and readable (placed in a low-saliency region) while never covering critical visual information. For a library with diverse compositions — some portrait-focused, some product-centered, some text-heavy — this eliminates the category of "logo blocking content" failures entirely without requiring per-image manual adjustment. The priority order for safe zones should be configured as: upper-right → lower-right → lower-left → upper-left, so the most common preferred position is tried first and fallback positions are used only when necessary.
Adding QR Codes and Campaign Tracking URLs
For campaign assets destined for print, out-of-home placements, or physical packaging, adding a QR code linking to a campaign landing page or product page converts the visual asset into an interactive touchpoint. A QR Code Generator node takes a URL input (from the campaign parameters node) and generates a QR code image sized and styled according to the brand guidelines. The QR code is then composited into the Brand Layer node output as a secondary overlay positioned separately from the logo — typically the lower-left or lower-right corner opposite the logo anchor.
For digital campaign assets where QR codes are not displayed, include the campaign tracking URL as a text overlay instead: a small, legible URL in the corner of the asset that is visible in print and PDF but small enough not to distract from the creative. Format it as "floniks.com/campaign/[campaign-id]" in brand typeface at 12–14pt at standard display resolution.
For A/B testing, the Campaign Tracking node can generate unique UTM-parameterized URLs per asset variant — each variant in the batch gets a distinct tracking code embedded in its QR or URL overlay. This makes it trivial to attribute conversion performance to specific creative variants at the asset level in analytics dashboards, without any manual UTM string management.
Batch Branding and Output Organization
After configuring all branding nodes, connect the workflow to a Batch Input List to process an entire asset library in one run. Each row in the list is an asset file path or asset ID from the Floniks creation history. The workflow applies the Brand Layer, dynamic position adjustment, and QR/URL overlay to every asset in the batch and outputs the branded versions to a designated output folder.
Output file naming should include the branding version to enable traceability: "[original-asset-name]_branded_v[brand-version]-[date].png." When brand guidelines are updated and the asset library is re-processed, the version number increments, making it immediately clear which files use the new logo versus the old one.
For ongoing production pipelines, trigger the branding workflow automatically: connect a Webhook Trigger node so that whenever a new asset is added to the production library (via a creation completed webhook from the upstream generation workflow), the branding workflow fires automatically on the new asset. This zero-latency automation ensures no asset ever ships without correct branding — the branded version is available within seconds of the source asset being finalized, with no manual action required from any team member.
FAQ
How do I handle different logo versions for light versus dark backgrounds?+
Use luminosity-adaptive mode in the Brand Layer node. The node samples the average luminosity of the image in the overlay placement region. If the region is below 0.5 (dark), it uses the white monochrome logo version. If above 0.5 (light), it uses the color logo version. Store both logo files in the Brand Layer configuration as "dark-background logo" and "light-background logo" and the node selects between them automatically per asset.
Can the branding workflow apply different logos for different output formats?+
Yes. Build a format-aware routing node before the Brand Layer that reads the output format from the asset metadata (web, social, email, print) and routes the asset to a format-specific Brand Layer configuration. For example, the print Brand Layer uses the full-color logo at 100% opacity with a minimum 5mm clearance from edges (print safe zone), while the social Brand Layer uses the white logo at 80% opacity at a 40px clearance optimized for small-screen legibility.
Related guides
Build it on Floniks
Image, video, digital humans, and reusable workflows on one canvas. Sign up gets you starter credits — no card required.
Explore Floniks