Skip to content

The moment it happens

Replace a link in every video description

One call swaps old text for new across all your descriptions and tells you how many videos changed.

Runs
The moment it happens
Apps
YouTube
AI
Not needed
Access
OAuth youtube.force-ssl (read+write)

Send this to your assistant

Create a ClickRuntime automation: give me a link I can call that replaces 'amzn.to/old123' with 'amzn.to/new456' in all my YouTube video descriptions and emails me how many were updated.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A creator who changes a course link, a discount code or a merchandise store address faces the same chore on every video. Opening each description in YouTube Studio means a hundred separate edits for a hundred videos, so old links stay live for months, and viewers click on a dead promo page or a code that expired last season.

When you call the trigger link, all of your uploads are listed, and descriptions containing the old text or a marker you set are found. Each is updated with the new text, and you receive an email showing how many videos were changed.

Channels that rely on affiliate links, sponsor mentions or a changing set of social links use it whenever those details change. Old links disappear everywhere in one pass, which would otherwise take a weekend of copying and pasting.

What you get out of it

  • Dead links stop costing you clicks

    Replacing an outdated link everywhere means viewers who reach an old video land on the page you actually want them to visit today. Every click on an outdated link is a lost visit, sale or sign-up.

  • A hundred edits in one run

    A task that would take an afternoon of repetitive clicking in Studio happens in one pass, so you can keep up with changing sponsors and offers. Sponsor and affiliate changes happen often, so doing them in bulk keeps you current.

  • Expired offers are removed

    Old discount codes and finished promotions are swapped out or removed at once, which avoids disappointing viewers and complaints to your support inbox. Viewers get frustrated by dead promotions, and complaints arrive in your comments.

  • Only matching descriptions change

    Using the old text or a marker to find videos means descriptions without it are left exactly as they are, which protects videos with unique content. That targeting is what makes a bulk edit safe on a channel with many video types.

  • The count confirms the job

    An email saying 87 videos were updated tells you the job ran as expected, so you are not left guessing whether any were skipped. A clear count is quick proof that the update reached the videos you expected.

How it works

What happens, step by step

  1. You start it whenever you need it, for example by opening its trigger link after you change a URL you mention in your videos.

  2. ClickRuntime goes through every video on your YouTube channel and finds descriptions that contain the old text.

  3. It replaces the old text with the new text in each of those descriptions.

  4. You get an email saying how many videos were changed.

Before it runs live

  • Connect YouTube
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Replace a link in every video descriptionjust nowSucceeded
Email · Descriptions updatedReplaced the text in 37 videos.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other YouTube steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
bulk_update_video_descriptions.pyexample
from clickruntime import on_event, credentials, http, notify

YT = "https://www.googleapis.com/youtube/v3"

@on_event
def handle(event):
    old, new = event.json["old"], event.json["new"]
    h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
    uploads = http.get(f"{YT}/channels", headers=h, params={"part": "contentDetails", "mine": "true"}).json()["items"][0]["contentDetails"]["relatedPlaylists"]["uploads"]
    changed, page = 0, None
    while True:
        res = http.get(f"{YT}/playlistItems", headers=h, params={"part": "contentDetails", "playlistId": uploads, "maxResults": 50, "pageToken": page}).json()
        ids = ",".join(i["contentDetails"]["videoId"] for i in res["items"])
        for v in http.get(f"{YT}/videos", headers=h, params={"part": "snippet", "id": ids}).json()["items"]:
            if old in v["snippet"]["description"]:
                snippet = {**v["snippet"], "description": v["snippet"]["description"].replace(old, new)}
                http.put(f"{YT}/videos", headers=h, params={"part": "snippet"}, json={"id": v["id"], "snippet": snippet})
                changed += 1
        page = res.get("nextPageToken")
        if not page:
            break
    notify.email_me("Descriptions updated", f"Replaced the text in {changed} videos.")
    return {"changed": changed}

FAQ

Common questions

How does it know which videos hold the old link?
It looks for the old text, such as a URL, or a marker line you place in descriptions, and only updates those. Videos without a match are untouched, so you can use a marker to include or exclude groups of videos.
Can I reverse a bulk update of descriptions?
YouTube does not offer a one-click undo, so test on one or two videos first, and keep a copy of the old text. Reversing the change is possible by running the update again with the old and new text swapped.
Does it use up a lot of YouTube API quota?
Updating many videos does use quota, since each update costs more than a read. Very large channels may hit the daily limit and need the run spread over two days, and your AI assistant can batch the work for that.
What permissions does it need?
OAuth youtube.force-ssl (read+write). Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Replace a link in every video description” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.