Skip to content

Every 30 minutes

Write descriptions, tags and chapters for new uploads

Each new video gets an AI-written description, tags and timestamped chapters from its captions, and you get an email showing what changed.

Runs
Every 30 minutes
Apps
YouTube
AI
Yes, uses the built-in AI allowance
Access
OAuth youtube.force-ssl (read+write)

Send this to your assistant

Create a ClickRuntime automation: every 30 minutes, check my channel for new uploads, read the captions, have AI write a description, 10 tags and timestamped chapters, update the video and email me the result.

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

Uploading a video is only half the job. The description, tags and chapters are what help YouTube show it to the right people, and they are the part creators skimp on after hours of editing. A video goes live with a one-line description and no timestamps, so it is harder to find, and viewers cannot skip to the section they need.

Every 30 minutes, your uploads playlist is checked for videos not yet processed. For each new one, captions are downloaded, and ClickRuntime's built-in AI writes a description, a set of tags and timestamped chapters. The video is then updated on YouTube, and you receive an email with the result.

Educators, tutorial channels and podcasters who publish long videos with several clear sections gain the most. Metadata that creators usually skip arrives within the first hour after upload.

What you get out of it

  • Chapters improve watch time

    Timestamps let viewers jump to the part they need, and chapters appear in search results, which can bring in viewers looking for a specific step. Viewers stay longer when they can reach the exact moment they came for.

  • Descriptions stop being an afterthought

    Each video gets a full description built from what was actually said, which gives YouTube more text to understand and helps your video appear for relevant searches. A full description is also a place for links, and gives YouTube more words to match to searches.

  • Tags are consistent across the channel

    Using a similar approach for every video avoids the random mix of tags that builds up when each is typed in a hurry after editing. Consistency across hundreds of videos helps YouTube understand what your channel covers.

  • It happens soon after upload

    Because the check runs every 30 minutes, the metadata is in place within the first hours, when YouTube is deciding how to test the video with viewers. That early window is when YouTube tests a video with a first group of viewers.

  • You get a record in your inbox

    The email shows what was written, so you can correct a chapter title or a wrong term by editing the video in Studio. Any corrections you make are quick, because the email tells you exactly what was written.

How it works

What happens, step by step

  1. Every 30 minutes, ClickRuntime checks your YouTube channel for new uploads. Videos it has already handled are skipped.

  2. For each new video it downloads the captions.

  3. AI reads the captions and writes a description with timestamped chapters, plus up to 10 tags.

  4. The new description and tags are saved on the video, and you get an email showing the chapters and tags it added.

Before it runs live

  • Connect YouTube

What you get

RunsEvery 30 minutes
Write descriptions, tags and chapters for new uploadstoday, 9:00Succeeded
Email · Updated: How we cut deploy time in half00:00 Intro · 01:42 The old pipeline · 05:10 Caching builds · 09:30 Results Tags: ci, devops, build cache, deploys

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
  • Change what the AI looks for, or how it writes the result
  • 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.
ai_titles_descriptions_tags_and_chapters_for_my_videos.pyexample
from clickruntime import on_trigger, credentials, http, state, ai, notify, report_fetched

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

@on_trigger
def run(event):
    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"]
    items = http.get(f"{YT}/playlistItems", headers=h, params={"part": "contentDetails", "playlistId": uploads, "maxResults": 10}).json()["items"]
    done = state.get("done") or []
    new = [i["contentDetails"]["videoId"] for i in items if i["contentDetails"]["videoId"] not in done]
    report_fetched(len(new))
    if not new:
        return {"summary": "Nothing new"}
    for vid in new:
        caps = http.get(f"{YT}/captions", headers=h, params={"part": "snippet", "videoId": vid}).json()["items"]
        if not caps:
            continue
        srt = http.get(f"{YT}/captions/{caps[0]['id']}", headers=h, params={"tfmt": "srt"}).text[:20000]
        meta = ai.generate(srt, system="From these captions write a YouTube description with timestamped chapters, and up to 10 tags.",
                           json_schema={"type": "object", "properties": {"description": {"type": "string"}, "tags": {"type": "array", "items": {"type": "string"}}}},
                           max_output_tokens=900).json
        video = http.get(f"{YT}/videos", headers=h, params={"part": "snippet", "id": vid}).json()["items"][0]
        snippet = {**video["snippet"], "description": meta["description"], "tags": meta["tags"]}
        http.put(f"{YT}/videos", headers=h, params={"part": "snippet"}, json={"id": vid, "snippet": snippet})
        notify.email_me(f"Updated: {snippet['title']}", f"{meta['description']}\n\nTags: {', '.join(meta['tags'])}")
        done.append(vid)
    state.set("done", done[-500:])
    return {"updated": len(new)}

FAQ

Common questions

Does it need captions on the video?
Yes. It downloads the video's captions to understand what is said, and YouTube generates automatic captions for most videos shortly after upload. If captions are not ready yet, the video is picked up on a later check.
Will it overwrite a description I wrote myself?
It updates the snippet for videos it has not processed yet. If you add your own description before the next check, tell your AI assistant to skip videos that already have one, or to keep your links and append the generated text.
Are the chapters accurate?
They are based on the captions, so accuracy follows caption quality. Chapters appear on YouTube only when the first timestamp is 0:00 and there are at least three, so it is wise to glance at them in Studio after the first few videos.
What permissions does it need?
OAuth youtube.force-ssl (read+write). Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
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 “Write descriptions, tags and chapters for new uploads” from your assistant

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