YouTube Agent
The Doers Firm v0.1.0
Plan and improve videos
From the developer
Declared capabilities
- Analyze
- Write
Not specified in the available declarations: limitations, pricing & account requirements.
Onboarding example
Help me script my next YouTube video.
Sources & dates
Developer declarations; not independently tested. Listing last checked Nov 4, 2026. Package observed Nov 3, 2026.
Description
From the marketplace listing
Eleven YouTube workflows: script and hook writing; title and thumbnail packaging; transcript-based edit decisions; comment replies; content planning; viral-video research; audience-retention analysis; Shorts selection; video SEO; chapters; and channel audits. Includes six local analysis utilities when Python and file execution are available. Uses supplied materials or accessible public information; it does not upload videos, post comments, or access private YouTube analytics automatically. Adapted from Jake Schincariol's MIT-licensed youtube-agent-skill.
Language: English · Automatically detected from descriptions.
Matches for “Python”
Exact text from the indicated source. A mention alone does not establish support for your task.
Publisher full description
Eleven YouTube workflows: script and hook writing; title and thumbnail packaging; transcript-based edit decisions; comment replies; content planning; viral-video research; audience-retention analysis; Shorts selection; video SEO; chapters; and channel audits. Includes six local analysis utilities when Python and file execution are available. Uses supplied materials or accessible public information; it does not upload videos, post comments, or access private YouTube analytics automatically. Adapted from Jake Schincariol's MIT-licensed youtube-agent-skill.
Changes
No changes recorded yet. Follow this plugin to keep track of future changes.
First seen Oct 29, 2026. Last seen Nov 4, 2026.
Similar plugins
Find competitors to follow as you develop your plugin.
-
Brainstorm, plan, debug, review, and compound learnings with agents
Shared terms: improve, plan, execution, planning
-
Read public YouTube videos in ChatGPT: transcripts with timestamps, metadata and tags, the Most Replayed heat map, and thumbnails, for on...
Shared terms: video, chapter, comment, post
-
Search YouTube and explore videos, transcripts, comments, channels, and playlists from ChatGPT. Use TubeAlfred to summarize videos, compa...
Shared terms: video, audience, channel, comment
-
AI Video Generator: an expert AI video director and prompt engineer. Turns any idea, topic, script, article or image into a complete vide...
Shared terms: video, hook, script, seo
-
Work with your team's video content, files, notes, ideas, tasks and production stages in Contendoor.
Shared terms: video, analytics, comment, script
Files & skills
File archives
Skill instructions
yt-audit2.4 KB
--- name: yt-audit description: >- Audit a YouTube channel end to end - packaging, consistency, the first fifteen seconds, and what to fix first. Use for "audit my channel", "why isn't my channel growing", "review my videos", or a pasted channel URL. --- # yt-audit Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. An audit that lists twenty problems is a way of avoiding the one that matters. This ends in ONE fix. ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## What to look at, in this order 1. **The last ten titles, as a set.** Read them as a list, the way the channel page shows them. Do they promise different things? Run them through `../yt-package/title.py`. A channel where every title is the same shape has a format problem, not a title problem. 2. **The thumbnails, at feed size.** Shrink them. What survives? If three of them are unreadable at that size, that is the fix and nothing else matters yet. 3. **The first fifteen seconds of the three most recent.** Transcribe them and score with `../yt-script/hookscore.py`. This is where most channels lose. 4. **Upload rhythm.** Not frequency - CONSISTENCY. Six videos in one week and then nothing for a month is worse than one a fortnight forever. 5. **The retention shape**, if they can export it. `/yt-retention`. ## What to hand back - The single biggest fix, named, with what to do this week. - Three things that are already working, so they do not break them. Be specific; "your energy is good" is not an observation. - What NOT to do yet, and why. Never open an audit with praise you do not mean, and never end one with a list of twenty things. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
yt-chapters1.7 KB
--- name: yt-chapters description: >- Write YouTube chapters from a transcript, validated against YouTube's own rules so they actually render. Use for "add chapters", "timestamps", "break this video into sections". --- # yt-chapters Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. ```bash python3 chapters.py transcript.srt --target 8 ``` ## The rules, which are not optional A chapter list that breaks any of these silently does not become chapters at all - the block just sits in the description doing nothing: - The first entry must be **00:00**. - There must be **at least three**. - Each must be **at least 10 seconds** long. The tool checks all three and tells you when a list is invalid rather than letting you paste it. ## Retitle every line `chapters.py` finds the BOUNDARIES well - it scores the pauses you actually took by how much the vocabulary shifts across them. The titles it emits are the topic words, and they are a draft. A chapter called "Thumbnails Titles Packaging" is a placeholder. Rewrite each one as the promise of that section, in the user's voice, three to five words. Chapters are also a retention diagnostic: if a section cannot be named in five words, it is two sections or it is filler. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 1 — file references are metadata, not package contents.
yt-comment2.38 KB
--- name: yt-comment description: >- Draft replies to YouTube comments in the creator's voice, triaged by which ones are worth answering. Use for "reply to my comments", "handle the comment section", "someone asked X", or a pasted comment thread. --- # yt-comment Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. The comment section is a retention surface, not a chore. Replies in the first few hours are what decide whether a thread becomes a conversation other people read. ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## Triage first, always Sort what the user pastes into four piles and say how many are in each before writing anything: 1. **Questions** - answer them. These are your next video's topics, so note the repeats. 2. **Corrections** - if they are right, say so plainly and thank them. Never argue a fact you cannot check. 3. **Praise** - reply to a few, briefly, with something specific from their comment. A wall of identical "thank you!" replies reads as automated because it is. 4. **Bait** - do not reply. Say so and move on. Never write a comeback, however deserved. ## Writing the reply - Under 30 words. A long reply in a comment thread is a blog post nobody asked for. - Answer the actual question in the first sentence. - One question back, only when it is real. - No emoji unless the user's own replies use them. Check their voice file. - Never promise a video you have not agreed to make. ## The heart and the pin Say which ONE comment to pin and why. Pin the question the most people also have, not the nicest one. Heart generously - it costs nothing and it is visible. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
yt-edit1.96 KB
--- name: yt-edit description: >- Turn a raw recording's transcript into an edit decision list - dead air, filler cues and retakes, with timecodes. Use for "edit this", "cut the dead space", "tighten this video", "I rambled", or any request to shorten footage from a transcript. --- # yt-edit Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. An edit decision list from a timestamped transcript. It prints the cuts. You apply them. ```bash python3 deadair.py transcript.srt # srt, vtt or whisper json python3 deadair.py transcript.srt --floor 0.35 --json ``` No transcript yet? Ask for one, or produce one first - `whisper`, `faster-whisper`, or the caption track YouTube generates on an unlisted upload all work. Do not guess at timings. ## What it finds - **DEAD** - gaps longer than the floor, trimmed from the MIDDLE so both sides keep a breath. Cutting flush against speech is what makes a tightened take sound gasping. - **FILLER** - cues that are nothing but "um", "so yeah", "basically". - **REPEAT** - a sentence restarted. Compared against the last cue that was actually speech, not the literal previous cue, because most retakes have an "um" between the two attempts. ## What it will not do It does not touch media. It has no opinion about your B-roll. A 40% cut on the report is a 40% cut of SPEECH, and if the video has a long silent demo in it that number is wrong - check the report against the footage before you trust the runtime at the bottom. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 1 — file references are metadata, not package contents.
yt-package2.38 KB
--- name: yt-package description: >- Write and lint the title and thumbnail for a YouTube video as one pairing, checking truncation, duplication and vagueness before publish. Use for "title ideas", "what should I call this", "thumbnail text", "my CTR is bad", packaging, or any request to rename or repackage an existing video. --- # yt-package Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. The title and the thumbnail are ONE unit. Writing them separately is why most packaging fails: the thumbnail repeats the title, and half the click surface says the same thing twice. ```bash python3 title.py --title "..." --thumb "AI RAN IT" python3 title.py titles.txt # one per line, ranked ``` ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## Rules the tool enforces, and why - **60 characters** is where desktop search truncates, **40** is a mobile home feed. Both are reported because they fail differently: a desktop cut loses the tail, a mobile cut can lose the subject. - **The thumbnail must not repeat the title.** Different words, same promise. - **Three words maximum on the thumbnail.** At feed size a fourth word is a grey smear. - **A number, a name or a date** beats every adjective available to you. - **Two all-caps words is the ceiling** before a title reads as spam. ## Write ten, keep two Generate ten titles, run them all through `title.py`, show the user the top three with their scores and the specific issue on each. For the winner, write the thumbnail brief: the expression, the framing, the three words, and what the background has to do to hold contrast at feed size. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 1 — file references are metadata, not package contents.
yt-plan2.18 KB
--- name: yt-plan description: >- Plan a week or a month of YouTube uploads - what to post, when, and in what order, sized to the creator's actual capacity. Use for "plan my week", "content calendar", "what should I post", "I have no idea what to make next". --- # yt-plan Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. A plan that does not fit the week is a list of regrets. Ask two questions before writing anything: **how many hours do you actually have**, and **what is already half-made**. ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## The shape of a week - **One anchor.** The video the week is for. It gets the most time and it goes out on the day the channel's own analytics say is best - ask for that, do not assume Tuesday. - **One cheap one.** Built from something that exists: a clip, a reaction, a follow-up to the comment that got the most replies last week. - **Shorts from the anchor.** Three, cut from the long video, not written separately. `/yt-shorts` finds them. Three uploads on a seven-day week, not seven. A plan that posts daily is not a plan anyone recognises, and the empty days are what make the filled ones survive a bad week. ## What to hand back A table: day, format, working title, the one sentence it promises, and what already exists for it. Then the honest line at the bottom - how many hours this costs, and what to drop first if the week goes wrong. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
yt-retention2.01 KB
--- name: yt-retention description: >- Read a YouTube Studio audience-retention export and find where viewers actually leave, then say what to change. Use for "why do people stop watching", "my retention is bad", a pasted retention chart or CSV, or "fix my pacing". --- # yt-retention Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. The retention graph is the only honest feedback YouTube gives you. Almost nobody exports it. ```bash python3 retention.py retention.csv --duration 600 python3 retention.py retention.csv --transcript transcript.srt ``` Getting the file: Studio -> a video -> Analytics -> Engagement -> the audience-retention chart -> the download icon -> "Audience retention". ## Three different problems - **HOOK LEAK** - what is lost in the first 30 seconds. Under 25% is healthy. This is always the first thing to fix and it is always the first fifteen seconds of script, never the edit. - **CLIFFS** - single steep drops. A cliff is a moment: a topic change with no signposting, a sponsor read, a long setup. With `--transcript` the tool prints what was being said there, which is what makes the report actionable instead of interesting. - **SLIDE** - the steady bleed across the middle. A flat slide is pacing. The fix is cutting, not rewriting. ## What to hand back Name the single biggest leak and one change for it. Not a list of five. Then, only if asked, the rest. And if the hook leak is healthy and the slide is flat, say the video is fine and the problem is packaging - send them to `/yt-package`. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 1 — file references are metadata, not package contents.
yt-script2.75 KB
--- name: yt-script description: >- Write a YouTube video script from a raw idea - hook options off 21 formulas, scored, then the full spoken script with the retention beats marked. Use whenever the user wants a video script, a hook, an opening line, "what should I say", "write my next video", or is about to record and does not have the first fifteen seconds yet. --- # yt-script Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. One idea into a script somebody finishes. Two tools live in this folder and both actually run. Use them. Do not eyeball the hook. ```bash python3 hookscore.py hooks.txt # rank your hook options python3 hookscore.py --hook "one line" # score a single one ``` ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## The shape **The first 15 seconds is the whole job.** It does three things or the video leaks: confirm the click the title promised, open a question the viewer cannot close, and prove the payoff exists. 1. **Hook.** Write FIVE against [the 21 formulas](hooks.json), run them through `hookscore.py`, keep the top two, and show the user both with their scores. Never hand over one hook. 2. **The turn** (0:15-0:45). Say what the video is going to do, in one sentence, and start doing it. No channel intro, no "before we get started", no subscribe pitch. Those are the single most common cause of the 0:30 cliff. 3. **The body.** One idea per beat. Mark each beat with what is ON SCREEN, not just what is said - a talking head with nothing to look at is a podcast. 4. **The payoff.** Deliver the thing the hook promised, explicitly, and say that you are delivering it: "that is the prompt, it is in the description". 5. **The close.** One ask. Not three. ## What to hand back - the two best hooks with their scored panels - the script, beat by beat, with `[ON SCREEN: ...]` on every beat - the runtime estimate at 150 words per minute - one line naming which formula the winning hook used and why it fits this idea ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 2 — file references are metadata, not package contents.
yt-seo2.25 KB
--- name: yt-seo description: >- Write the description, tags and search-facing text for a YouTube video, aimed at the query a real person types. Use for "write my description", "tags", "SEO", "help this video get found", "nobody is finding this". --- # yt-seo Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. Search is a smaller lever than packaging and a bigger one than people think for evergreen videos. For a video aimed at the subscriber feed, say so and spend the effort on `/yt-package` instead. ## Before you write 1. Use a voice profile or samples the user provides; otherwise ask for a short style description and continue with stated assumptions. Save a profile only when the user requests it. 2. Never invent a number, a result or a source. If a figure would strengthen it and you do not have one, ask for it or write the line without it. ## The description - **The first two lines are the only ones anyone reads.** They show above "...more" and they are the search snippet. Say what the video gives them, in the words they would have typed. - Then the link or the resource, if there is one, so it is above the fold. - Then chapters (`/yt-chapters` writes them). - Then the long version: what is covered, who it is for, what it assumes. ## Tags, honestly Tags are a weak signal and YouTube has said so. Use them for disambiguation - spellings, the tool names, the abbreviations people actually type - and stop. Fifteen is plenty. A wall of tags is not a strategy and stuffing unrelated ones is against the terms. ## The query test Before handing anything over, write the three search queries this video should win, and check the title and first two description lines contain the words in those queries. If they do not, the problem is the title, not the description. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
yt-shorts1.84 KB
--- name: yt-shorts description: >- Find the Shorts hiding inside a long video and write them, using the transcript to pick self-contained moments. Use for "cut this into shorts", "clip this", "repurpose this video", "what should I clip". --- # yt-shorts Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics. A Short cut out of a long video is not a clip of the best moment. It is a moment that **survives without the video around it**, which is a much smaller set. ## Picking Read the transcript and find spans of 20-55 seconds where all three are true: 1. It opens on a complete thought. If the first sentence needs the previous minute, it is not a Short. 2. There is a turn in it - a claim, then something that complicates or proves it. 3. It ends on a line, not a trail-off. Rank the candidates and show the user the top five with their timecodes and first line, so they can reject one without reading the whole transcript. ## Writing each one - **A NEW first line.** The long video's line assumes context this viewer does not have. Write the replacement and run it through `../yt-script/hookscore.py`. - **On-screen text for the first two seconds**, different words from the spoken line. - **A loop point**: what the last line sets up so the first line answers it. - Vertical framing note - what gets cropped out of a 16:9 frame and whether that matters. ## The gate Nothing here publishes. This skill writes and you publish. Every output ends in a block the user copies, and the last line of every run is the question: **ship it, or change it?**
yt-viral2.06 KB
---
name: yt-viral
description: >-
Find what is actually working in the user's niche on YouTube and rank it
by how far each video beat its own channel, then name the formula. Use for
"what's working right now", "find viral videos in my niche", "why did this
blow up", competitor research, or a swipe file.
---
# yt-viral
Use scripts relative to this skill directory, not the user’s working directory. If local execution or inputs are unavailable, explain the limitation and provide a clearly labeled manual alternative; do not claim a tool ran. Scores and thresholds are heuristics, not guarantees or causal proof. Use only accessible or user-provided data; never invent analytics.
Raw view counts rank channel size, not ideas. This ranks by **multiple over each channel's own
median**, which is the only version of the question that is about the video.
```bash
python3 swipe.py collected.json --min 2.0
```
## Collecting the input
You need at least **four videos per channel** or a median means nothing, and the tool will skip the
channel and tell you it did. Collect them however the user prefers - `yt-dlp --flat-playlist -J`
against a channel URL is the fastest, the public page works, a manual list works.
```json
[{"channel":"...","title":"...","views":412000,"url":"...","duration":613}]
```
**Read, do not scrape.** Public listings only, never a logged-in session, never the user's own
account credentials.
## Reading the output
The multiple is the signal. The formula line is a judgement about the TITLE, matched against
[the 21 formulas](../yt-script/hooks.json) - it is not a claim about why the video worked, and you
should say so when you present it.
What to hand back: the top five with their multiples, the formula each used, and the ONE structural
thing they share. Then the harder line - which of those the user could actually make this week, in
their voice, with what they have.
## The gate
Nothing here publishes. This skill writes and you publish. Every output ends in a block the user
copies, and the last line of every run is the question: **ship it, or change it?**
Referenced files: 1 — file references are metadata, not package contents.
Release notes
Initial release with eleven YouTube creator workflows.
Declared in the saved package. Remote tools may change independently.
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package license
- MIT
- Package author
- The Doers Firm
- Declared availability
- No country restrictions declaredDeclared regions; live availability may differ.
Declared capabilities
- Analyze
- Write
Package observed Nov 3, 2026.
Technical details
- First seen
- Oct 29, 2026 · 12:00 UTC
- Last seen
- Nov 4, 2026 · 12:00 UTC
- Collection status
- Collected
plugins_6ae2cf5ebfac8191aae15710d22d105b
Download plugin data (JSON)