agentleFS
hyperfx-aihyperfx-ai/marketing-skills/skills/youtube/SKILL.md

youtube

Skill107 starsChanged 5 months agoMITView on GitHub

Work with YouTube content end to end — fetch transcripts and turn them into summaries, blog posts, social content, quotes, or show notes; create high-CTR thumbnails (with the user's face from an upload), clone the style of top-ranking thumbnails; and produce SEO-optimised titles + descriptions. Use when the user pastes a YouTube URL, wants to repurpose video content, research competitor videos, make or refresh a thumbnail, or package a video for upload.

We split this skill into the rules it gives an agent

8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 28 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If youtube_video_transcripts_fetch is not found, the toolkit to enable is YouTube (youtube_toolkit).

    line 54
  2. Distinctive:

    Every tool in this skill is named by its canonical tool name.

    line 58
  3. Very specific:

    If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit.

    line 66
  4. Very specific:

    Default: start with youtube_video_transcripts_fetch: Use youtube_videos_read when you need something the raw text can't give you (e.g.

    line 75
  5. Distinctive:

    Don't fabricate transcript content: Always fetch before summarizing.

    line 81
  6. Very specific:

    Use text for most tasks. Use segments when you need timestamps (e.g.

    line 110
  7. Very specific:

    Read the returned text

    line 152
  8. Very specific:

    Run scripts/clone_top_thumbnail_style.py with query="AI agents" and the user's topic

    line 166

“Common” is measured: kept by at least 6 in 10 of the 28 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

YouTube

Fetch the full transcript of any YouTube video and turn it into whatever the user needs — summaries, blog posts, social content, quotes, show notes, or raw text. Then package videos for upload: high-CTR thumbnails, SEO titles, and descriptions.

Routing

User intentWhere to go
Transcript, summary, repurposing, quotes, chaptersThis guide (below)
Thumbnails, style cloning, SEO titles/descriptionsreferences/thumbnails.md

Requirements

  • Hyper MCP installed. https://app.hyperfx.ai/mcp
  • Sandbox text workflows: require ai_functions_run in the connected catalog and the sandbox toolkit. These scripts run inline LLM calls through the sandbox tool bridge.
  • YouTube toolkit enabled at https://app.hyperfx.ai/apps — provides youtube_video_transcripts_fetch and youtube_videos_read.
  • Thumbnail workflows additionally need the image generation and sandbox toolkits.

If youtube_video_transcripts_fetch is not found, the toolkit to enable is YouTube (youtube_toolkit).

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

SurfaceFind a toolRun it
Hyper chatCall the tool by its name; search_tools(queries=["<provider> <action>"]) shows its parameters<name>(...)
MCP client (Claude, Cursor, Codex, ChatGPT)search("<what you want to do>"), then describe("<name>")call_read("<name>", {...}), call_write or call_destructive: the one that describe names in call_with
Hyper CLIhyperai search "<what you want to do>", then hyperai describe <name>hyperai call <name> --json '{...}'

If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit. On an MCP client or the CLI, tell the user which integration to connect in Hyper.

Two tools — pick the right one

ToolWhen to useReturns
youtube_video_transcripts_fetchYou need the raw transcript text or timestamped segments. Fast, reliable, always get this first.Full text string + segments with start/duration timestamps
youtube_videos_readYou need AI-powered extraction from the video — summaries, Q&A, topic segmentation, translation, visual descriptions.Free-form answer to your instruction

Default: start with youtube_video_transcripts_fetch. Use youtube_videos_read when you need something the raw text can't give you (e.g. visual descriptions, translation, or a structured extraction from a very long video).

Critical rules

  1. youtube_video_transcripts_fetch takes 15–30 seconds. It spins up an isolated sandbox. Tell the user it's running and to expect a short wait — don't make them think it's stuck.
  2. Both video IDs and full URLs are accepted. "NZLAdOL9fP8" and "https://www.youtube.com/watch?v=NZLAdOL9fP8" both work.
  3. Don't fabricate transcript content. Always fetch before summarizing. Never rely on training knowledge about what a specific video says.
  4. Very long videos (>2 hours): youtube_video_transcripts_fetch handles these fine. Only use youtube_videos_read on long videos if you specifically need AI-powered extraction — it can hit token limits on very long content.
  5. No transcript available: Some videos have transcripts disabled. If youtube_video_transcripts_fetch fails, try youtube_videos_read as a fallback — it uses a different extraction method.

Fetching the transcript

youtube_video_transcripts_fetch(
    video_id_or_url="https://www.youtube.com/watch?v=NZLAdOL9fP8",
    language="en"   # optional — omit to auto-detect
)

Response structure:

{
  "success": true,
  "video_id": "NZLAdOL9fP8",
  "language": "English (auto-generated)",
  "text": "Full transcript as one string...",
  "segments": [
    { "text": "This week we launched Hyper MCP.", "start": 0.0, "duration": 3.2 },
    { "text": "It brings Hyper's built-in tools...", "start": 3.2, "duration": 4.1 }
  ],
  "total_duration": 342.0
}

Use text for most tasks. Use segments when you need timestamps (e.g. chapters, clip references, karaoke captions).

Using youtube_videos_read for AI-powered extraction

youtube_videos_read(
    url="https://www.youtube.com/watch?v=NZLAdOL9fP8",
    instruction="Summarize the key points. Then list the main features demonstrated, with timestamps."
)

Good instruction examples:

  • "Extract every claim made about pricing or cost."
  • "List the action items mentioned, in order."
  • "Translate this to Spanish."
  • "What tools or products does the speaker mention by name?"
  • "Identify the main sections of this video and give me a timestamp for each."

What to do with the transcript

Once you have the text, ask the user what they need — or infer it from context:

What the user wantsWhat to produce
Blog postRestructure the transcript into intro → sections → CTA. Clean up filler words. Add subheadings.
LinkedIn / Twitter postExtract the 1–2 sharpest insights. Rewrite in first person if it's the user's own video.
Summary3–5 bullet points of key takeaways.
Show notes / descriptionTitle, 2-sentence summary, timestamped chapters, links mentioned.
Quote extractionPull verbatim quotes with start timestamps from the segments array.
Repurpose for emailRewrite as a narrative email — opening hook, key insight, CTA.
Research / competitive analysisSummarize what the speaker claims, what products they recommend, and what pain points they describe.

Thumbnails and SEO packaging

For making or refreshing thumbnails, cloning the style of top-ranking thumbnails, adding the user's face, and generating SEO titles/descriptions, read references/thumbnails.md. Every thumbnail workflow is a sandbox script under scripts/ (generate_thumbnail.py, research_top_thumbnails.py, clone_top_thumbnail_style.py) — the reference doc is the routing table and the rules for using them.

Example outputs

Input: "Get the transcript of https://www.youtube.com/watch?v=NZLAdOL9fP8 and write a LinkedIn post from it"

Flow:

  1. Call youtube_video_transcripts_fetch(video_id_or_url="https://www.youtube.com/watch?v=NZLAdOL9fP8")
  2. Read the returned text
  3. Identify the 1–2 sharpest moments — what's surprising, useful, or quotable
  4. Draft a LinkedIn post in the speaker's voice (first person) with a hook and a clear point

Input: "Summarize this video for me: [URL]"

Flow:

  1. Call youtube_video_transcripts_fetch(video_id_or_url="[URL]")
  2. Return 4–6 bullet points of key takeaways, without padding or filler

Input: "Make me a thumbnail like the top videos for 'AI agents'"

Flow:

  1. Read references/thumbnails.md
  2. Run scripts/clone_top_thumbnail_style.py with query="AI agents" and the user's topic
  3. Show the top thumbnails, let the user pick a rank, re-run with chosen_rank to generate

Related skills

When to hand offSkill
Mining comments from YouTube videos for customer researchcustomer-research
Finding top YouTube videos by topicUse youtube_videos_search_top directly
Generating video contentvideo-generation

For title options, descriptions and thumbnail concepts, run generate_seo_titles.py, generate_seo_description.py and analyze_thumbnail_concepts.py under scripts/. They call ai_functions_run from the sandbox using fetched transcript and video context. Follow the output contracts in references/packaging-schemas.json; the thumbnail reference explains the workflow.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.