Oct 24, 2025

Automate YouTube Descriptions with n8n

Automate Your YouTube Description Updates with n8n Updating dozens or hundreds of YouTube video descriptions by hand is time-consuming and error-prone. This tutorial shows how to use a simple n8n workflow — the “YouTube Description Updater” — to automatically append or replace a templated footer in all your videos’ descriptions. You’ll learn setup steps, the […]

Automate YouTube Descriptions with n8n

Automate Your YouTube Description Updates with n8n

Updating dozens or hundreds of YouTube video descriptions by hand is time-consuming and error-prone. This tutorial shows how to use a simple n8n workflow — the “YouTube Description Updater” — to automatically append or replace a templated footer in all your videos’ descriptions. You’ll learn setup steps, the expressions used, best practices, and troubleshooting tips so you can deploy the workflow safely and efficiently.

Why automate YouTube descriptions?

Automating description updates saves time, keeps branding and links consistent, and ensures every video contains the latest calls-to-action (CTAs), affiliate links, or updated resource lists. Using an n8n workflow with the YouTube API makes it repeatable and auditable.

Workflow overview

The workflow follows a linear flow that is easy to understand and adapt:

  • Manual Trigger – run when you want to update descriptions
  • Config node – define the delimiter and the footer text you want applied to each description
  • List Videos – retrieve all videos from your channel
  • Generate Description – build the new description by merging the current description (up to a delimiter) with the new footer
  • Description Changed (IF) – compare generated description with the existing one
  • Update Video Description – call the YouTube API to update the video only if the description changed
  • Notify Slack – optional notification after each update

Prepare: credentials and configuration

1. Add YouTube credentials

In n8n, add a Google/YouTube OAuth2 credential. The API credentials must have permission to update videos on your channel. When creating OAuth credentials, ensure the scope allows updating video metadata (for example, the YouTube Data API scopes).

2. Configure the workflow

Open the Config node and set two values:

  • splitter — a unique delimiter string that separates your editable description body from the footer block (e.g., --- n8ninja ---). Use a delimiter unlikely to appear in regular descriptions.
  • description — the footer text or template you want appended to every video. This can include CTAs, links, and social accounts.

How the Generate Description node works

The key expression used to generate the new description is:

=\{\{ $json.snippet.description.split($('Config').item.json.splitter)[0] }\}\{\{ $('Config').item.json.splitter }\}\n\n\{\{ $('Config').item.json["description"] }\}

Explanation:

  • $json.snippet.description: the current description for the video fetched by the List Videos node.
  • .split($(‘Config’).item.json.splitter)[0]: keeps everything before the delimiter. If the delimiter isn’t present, the entire current description is used.
  • Then the splitter is reinserted, followed by two newlines and the configured footer text from the Config node.

This approach preserves the original description body while replacing or adding a consistent footer block.

Conditional update: only change when needed

Use an IF node (Description Changed) to compare the generated description with the current one. If they differ, the workflow triggers the Update Video Description node to call the YouTube API. This avoids unnecessary API calls and helps you stay within quotas.

Step-by-step setup

  1. Clone/import the workflow JSON into your n8n instance.
  2. Set up credentials: Add your YouTube OAuth2 credential in n8n.
  3. Configure the Config node: Choose a unique splitter and craft your footer description (links, CTA, social handles).
  4. Test on a single video: In List Videos, limit results or run manually on one video to verify changes.
  5. Run the workflow: Use the Manual Trigger to process all videos. Monitor the output and Slack notifications if enabled.

Customization ideas

  • Personalize the footer with dynamic fields: include {{ $json.snippet.title }} or publish dates in the footer using n8n expressions.
  • Use conditional footers: add logic to apply different footers to playlists or tags.
  • Schedule automatic runs: replace Manual Trigger with a Cron node to run weekly or monthly.
  • Keep a backup: before updating, store the original descriptions in an external file or Google Sheet for auditing.

Best practices and safety

  • Choose a clear, unique delimiter to avoid accidentally chopping description content.
  • Test extensively on a small subset of videos first.
  • Respect YouTube API quotas and rate limits — batch updates or add pauses if needed.
  • Keep a history of changes for rollback (e.g., save originals to a Google Sheet or database).
  • Limit the OAuth token scope to the minimum necessary for safety.

Troubleshooting

Common issues

  • Authentication errors: re-authorize the Google credential and ensure you have permission to update videos on the target channel.
  • Rate limit or quota errors: add delays or process fewer videos at a time. Consider using a Cron schedule.
  • Delimiter not found: if the splitter isn’t in the original description, the workflow will treat the entire description as the body — double-check that behavior before bulk runs.

Helpful debugging tips

  • Use the n8n execution preview to inspect node output and verify the generated description before the update node runs.
  • Temporarily disable the Update Video Description node and log the new description to a webhook or Google Sheet to confirm formatting.

Advanced: dynamic templating example

If you want to insert the video title and a link to the video into the footer, you can use expressions like:

{{ $json.snippet.title }}

Example footer template inside the Config node (very simple):

⭐️ Try n8n for free: https://n8n.io
📌 Watch this video: https://youtu.be/{{ $json.id.videoId }}
Follow me on X: https://twitter.com/yourhandle

Depending on how you structure the Generate Description node, you may need to reference fields from the List Videos node or use additional Set nodes to pass the videoId into the template context.

Wrap-up and call to action

Using this n8n YouTube Description Updater saves time and ensures consistent branding across your channel. Start by testing on a few videos, choose a safe delimiter, and keep backups of original descriptions.

Ready to try it? Import the workflow into n8n, add your YouTube OAuth2 credential, and run the Manual Trigger to update your descriptions. If you want the ready-to-use workflow and templates, visit the original creator’s page or download the template to get started quickly.

If you need help customizing this workflow for dynamic fields, playlist-based footers, or scheduling, get in touch or leave a comment — I’ll guide you through the changes.

Pro tip: Consider pairing this workflow with a monitoring routine that periodically checks for broken links or outdated affiliate codes in descriptions.

Call-to-action: Try this workflow now in your n8n instance, and sign up for updates or follow the creator for more automation templates and tutorials.

Leave a Reply

Your email address will not be published. Required fields are marked *