Weekly
Remove duplicates and dead videos from playlists
Each week duplicate, deleted and private videos are taken out of your playlists, with a log of what went.
- Runs
- Weekly
- Apps
- YouTube
- AI
- Not needed
- Access
- youtube (read+write)
Send this to your assistant
Create a ClickRuntime automation: every Sunday, remove duplicate, deleted and private videos from my playlists and email me what was removed.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Playlists decay quietly. A video is added twice by accident, a creator deletes a video, another is set to private, and the playlist now shows greyed-out entries that cannot be played. A visitor who clicks through your best-of list hits three dead items, and the polish you put into curating it is lost.
Every week, the items in your playlists are read, and duplicates by video ID and unavailable entries, meaning deleted or private videos, are identified and removed. A log is emailed to you showing which items were taken out and from which playlist.
Channels with long-running playlists, teachers who share reading lists with students and brands whose playlists are embedded on their website will find it the most useful. Your lists stay playable all year, with no quarterly audit of grey, unplayable rows.
What you get out of it
Playlists look looked-after
Removing dead entries and duplicates means anyone who plays through your list gets a smooth experience, which reflects well on the channel. Viewers judge the whole channel by how smoothly a list plays.
Embedded playlists stay clean
A playlist embedded on your website or in a course page is visible to many people, so broken items there cost more than on YouTube itself. A broken item on your own website looks worse than one buried inside YouTube.
Duplicates stop inflating the list
A playlist that claims 60 videos but contains 8 repeats misleads viewers and wastes their time, and a weekly check keeps the count honest. Honest counts help viewers decide whether a playlist is worth their time.
Nothing is removed in secret
The emailed log names each item and playlist touched, so you can restore a video that was marked private by mistake before it is lost from the list. Checking the log first means a video hidden by mistake can be restored before it is lost.
Little manual maintenance
Instead of opening every playlist once a quarter to hunt for grey rows, the check runs on its own, and you only act when the log shows something unusual. Exceptions are rare, so your attention is needed only when the log shows something strange.
How it works
What happens, step by step
Every week, ClickRuntime goes through the videos in your YouTube playlists.
It finds videos that appear twice in the same playlist, and videos that have been deleted or made private.
It removes those from the playlist.
You get an email log of what was removed from which playlist, and why.
Before it runs live
- Connect YouTube
What you get
Build your own
Need it to work differently?
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
- Run it at a different time, more or less often, or only on weekdays
- 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
from clickruntime import on_trigger, credentials, http, notify
YT = "https://www.googleapis.com/youtube/v3"
@on_trigger
def run(event):
h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
playlists = http.get(f"{YT}/playlists", headers=h, params={"part": "snippet", "mine": "true", "maxResults": 50}).json()["items"]
removed = []
for pl in playlists:
items = http.get(f"{YT}/playlistItems", headers=h, params={"part": "snippet,status", "playlistId": pl["id"], "maxResults": 50}).json()["items"]
seen = set()
for it in items:
vid = it["snippet"]["resourceId"]["videoId"]
gone = it["snippet"]["title"] in ("Deleted video", "Private video") or it.get("status", {}).get("privacyStatus") == "private"
if vid in seen or gone:
http.delete(f"{YT}/playlistItems", headers=h, params={"id": it["id"]})
removed.append(f"{pl['snippet']['title']}: {it['snippet']['title']} ({'duplicate' if vid in seen else 'unavailable'})")
seen.add(vid)
if removed:
notify.email_me(f"Removed {len(removed)} playlist items", "\n".join(removed))
return {"removed": len(removed)}FAQ
Common questions
How does it decide a video is a duplicate?
Will it remove videos that are only temporarily private?
Can it clean playlists I do not own?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get your channel's numbers every Monday
A weekly email shows subscribers, total views and video count, with the change since last week.
See how it worksList the comments you haven't replied to
A daily email lists comment threads on your videos that still have no reply from you.
See how it worksGet told when you pass a subscriber milestone
Your subscriber count is tracked daily and you hear each time it crosses the next thousand.
See how it worksKeep exploring
Set up “Remove duplicates and dead videos from playlists” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.