Skip to content
Automation
Skill

/yt-to-course

Turn a YouTube video into a structured Circle course package: decides full course vs section addition (against course_structure.md), cuts sentence-aligned lessons via video-cutter, writes lesson content in Ben's voice, and outputs clips, lesson.md, description.txt, README, and

From plugin
benai-skills
84152 skills17 agents1 hook4 MCP

Claude Code

$ npx -y skills add naveedharri/benai-skills --skill yt-to-course --agent claude-code

SKILL.md

yt-to-course.SKILL.md
name: yt-to-course
description: >
  Turn a YouTube video into a structured Circle course package: decides full course vs section addition (against course_structure.md), cuts sentence-aligned lessons via video-cutter, writes lesson content in Ben's voice, and outputs clips, lesson.md, description.txt, README, and manifest. STEP 2 of the YouTube pipeline: yt-to-community always runs first; invoke only after the community post is saved and the user confirms course material. TRIGGERS: "yes, course it", "turn this into a course", "yt to course", "video to course", "create lessons from this video", "add this to a course". NOT for community announcement posts (use yt-to-community).
disable-model-invocation: true

YouTube to Course Material

Turn YouTube videos into structured, ready-to-upload course content for the BenAI Accelerator community on Circle. Two output types: a full new course (long-form, multi-section videos) or new lessons added to an existing course (shorter, topic-specific videos).

Pipeline Position

This skill is **step 2 of 2** in the YouTube repurposing pipeline.

1. `yt-to-community`: community post + thumbnail. Always runs first. 2. `yt-to-course` (this skill): course material. Runs only after the post is done and the user has confirmed.

If a YouTube URL lands in chat and the community post hasn't been created yet, do not start here. Hand back to `yt-to-community`. The pipeline order is fixed: post first, course second.

Why This Exists

Community members are professionals running businesses. They don't have time to watch hour-long YouTube videos end-to-end. So we cut videos into focused lessons, write lesson copy around each clip, and structure it as a self-paced course in Circle. This skill automates ingestion, section planning, lesson writing, and cutting. The only manual step is uploading the clips into Circle's course builder (the Circle API doesn't expose course-lesson CRUD).

Profile boundary

All output writes to `Profiles/Milan/`. Course packages land in `Profiles/Milan/Community/course-packages/{date}-{slug}/`. See [[yt-pipeline SPEC|SPEC.md]] for the full invariant.

The Flow

Step 1: Ingestion

**If invoked from `yt-to-community` (the normal pipeline path):** the community post step has already run `yt-ingestion-agent` and you've been passed an ingestion manifest. Reuse it. Do not re-run ingestion. it wastes minutes and re-downloads gigabytes. Only the video file and word-level timestamps may need a top-up if the community post run skipped them (community-only runs sometimes do).

**If invoked standalone (user explicitly asked for course material on a video that already has a post, or skipped the post intentionally):** invoke the `yt-ingestion-agent` sub-agent with the YouTube URL and target output directory. The agent handles:

  • Download (yt-dlp fallback chain for SABR/PO-token blocks)
  • Transcript (3-method priority: MCP, youtube-transcript-api, user-provided)
  • Word-level timestamps (faster-whisper)
  • Thumbnail
  • Metadata

If the agent surfaces a download-blocked choice (e.g., 1080p unavailable), present the three options to the user (accept lower res, manual provide from YouTube Studio, cut-sheet-only mode) and pass the user's selection back to the agent.

When ingestion completes, you have a manifest pointing at the artifacts.

Step 2: Determine Output Type

Read `[[course_structure]]` (reference file in this skill folder). It maps every active course in the community, what topics it covers, and what sections/lessons already exist.

Decide based on two factors:

**Full new course** if:

  • Video is 45+ minutes long
  • Covers a broad topic from beginning to end
  • Doesn't overlap significantly with any existing course's topic
  • Has enough natural sections to justify a multi-lesson structure (4+ sections)

**New lessons in existing course** if:

  • Video is shorter (under 45 minutes, though length alone isn't decisive)
  • Topic directly extends or complements an existing course
  • Would fit naturally as new lessons within an existing course's structure

Present your recommendation with reasoning. Wait for the user to confirm before proceeding.

Step 3: Plan the Sections

Analyze the transcript and break it into logical sections. Each section should:

  • Cover one distinct concept or skill
  • Be 3 to 10 minutes long (sweet spot for focused learning)
  • Have a clear beginning and end in the transcript
  • Flow naturally from the previous section

For each section, determine:

  • Section title (clear, specific, no fluff)
  • Approximate start timestamp
  • Approximate end timestamp
  • Core concept (the one thing the viewer learns)
  • Key takeaway (what they can do after watching)

Present the section plan as a table. The user might adjust sections, merge some, or split others. Iterate until confirmed. This is the editorial gate between ingestion and cutting.

Step 4: Write Lesson Content (draft + humanizer pass per lesson)

For each section, you go through three substeps in order before moving to the next section. Do **not** batch all drafts first and humanize at the end. The per-lesson loop is the contract.

**4a. Draft lesson.md.** Read these vault files for voice calibration once at the start of Step 4 (not per lesson):

  • `Context/brand.md` (brand identity and public/marketing tone)
  • `Context/ben-voice.md` (how Ben actually writes 1:1: answer-first, loose-not-polished, peer-to-peer warmth, banned corporate phrases)
  • `Resources/frameworks/youtube-voice.md` (YouTube-specific voice)
  • `Resources/frameworks/newsletter-structure.md` (structural patterns)
  • `Resources/frameworks/newsletter-examples.md` (real examples of Ben's writing)

Structure per lesson:

## {Section Title}

{1 to 2 sentence teaser that makes you want to watch the clip. Direct, practical, slightly provocative. Not a summary. A hook.}

### What you'll learn
{2 to 3 bullet points. Specific outcomes, not vague promises. "How to connect your first MCP server" beats
Read more
@naveedharri
Ships withbenai-skills

Expert automation skills for Claude Code, organized by department.

84152 skills17 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
84
Star history of naveedharri/benai-skills on GitHub, a chart by star-history.com

Other skills on benai-skills.

ads-audit

ads-audit

Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok…

ads-budget

ads-budget

Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy…

ads-competitor

ads-competitor

Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative…

ads-creative

ads-creative

Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative…

ads-google

ads-google

Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across…

ads-landing

ads-landing

Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust…

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about yt-to-course.

Which coding agents can use yt-to-course?
yt-to-course installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.