// Use this skill when the user wants to convert a lecture, presentation, or talk video into text formats (transcript, outline, or article). Trigger when user mentions processing video recordings, creating transcripts from lectures, or generating articles from recorded presentations.
| name | video-to-article |
| description | Use this skill when the user wants to convert a lecture, presentation, or talk video into text formats (transcript, outline, or article). Trigger when user mentions processing video recordings, creating transcripts from lectures, or generating articles from recorded presentations. |
| allowed-tools | Bash, Read, Write, AskUserQuestion, Glob |
This skill automates the conversion of lecture/presentation videos into various text formats including transcripts, outlines, and article drafts.
If user is starting a new talk/lecture conversion and no folder exists yet:
Create folder using format: YYYY Title of Talk
After creating folder, navigate into it and proceed with workflow.
Look for README.md in the current directory with these frontmatter fields:
title - Lecture/presentation titlespeaker - Speaker namedate - Presentation date (YYYY-MM-DD)lang - Presentation language (e.g., "english", "czech", "spanish")abstract - Brief descriptionslides - Link to slides (or file path)video - Optional: link to videoUse the AskUserQuestion tool to collect missing information:
- What is the lecture title?
- Who is the speaker?
- What date was this presented?
- What language is the presentation in?
- Brief description or abstract?
- Link to slides or presentation file?
Create or update README.md with collected information.
Look for video file in current directory:
*.mp4, *.mov, *.avi, *.mkvAsk user if they have a YouTube URL using AskUserQuestion tool:
bash ${CLAUDE_PLUGIN_ROOT}/skills/video-to-article/scripts/download-youtube.sh <youtube-url>
This downloads the video as video.mp4 in medium quality (720p max).
Requirements: User needs yt-dlp installed. If missing, show:
Install yt-dlp:
- pip install yt-dlp
- brew install yt-dlp (macOS)
- sudo apt install yt-dlp (Ubuntu/Debian)
Check if audio.mp3 already exists. If not:
Run the extract-audio.sh script using the plugin root variable:
bash ${CLAUDE_PLUGIN_ROOT}/skills/video-to-article/scripts/extract-audio.sh <video-file>
This creates audio.mp3 in the current directory.
Check if generated-transcript.txt already exists. If not:
Convert the lang field from README.md to the appropriate ISO 639-1 language code for ElevenLabs API. Use your knowledge of language codes to map language names to their two-letter codes (e.g., "english" → "en", "czech" → "cs", "spanish" → "es").
bash ${CLAUDE_PLUGIN_ROOT}/skills/video-to-article/scripts/transcribe-audio.sh <language-code>
Before generating content, complete these steps in order:
Generate all of these files:
generated-transcript-cleaned.md - Cleaned transcriptgenerated-transcript-readable.md - Readable transcriptgenerated-transcript-outline.md - Content outlinegenerated-key-ideas.md - Key takeawaysgenerated-article-formal.md - Explanatory blog post (long-form, narrative)generated-article-direct.md - Scannable technical brief (concise, bullets)Note: Outputs 5 and 6 are two different article variants with distinct styles and audiences. Generate both.
Workflow:
This process is idempotent - running the skill multiple times will only generate missing files, never overwrite existing ones:
Example: If only generated-key-ideas.md is missing:
generated-transcript-cleaned.md, generated-transcript-readable.md, generated-transcript-outline.mdgenerated-key-ideas.md using the existing files as contextThis allows users to:
File: generated-transcript-cleaned.md
Input: generated-transcript.txt
Check: Skip if file exists
Convert the transcript into a more readable form by dividing it into paragraphs and adding headings.
Instructions:
The cleaned transcript should preserve the speaker's authentic voice while being easier to read and follow.
File: generated-transcript-readable.md
Inputs: generated-transcript.txt and generated-transcript-cleaned.md
Check: Skip if file exists
You have two inputs:
The slides are available here: {slides}
Create a more readable text from this transcript:
Instructions:
The goal is to make the content accessible to readers while maintaining the essence of the spoken presentation.
File: generated-transcript-outline.md
Inputs: Cleaned and readable transcripts
Check: Skip if file exists
From the provided transcript inputs, create an outline of what was discussed.
Instructions:
This outline should serve as a quick reference guide to the presentation's structure and main points.
File: generated-key-ideas.md
Inputs: Cleaned and readable transcripts (or all available generated files if running incrementally)
Check: Skip if file exists
From the provided transcript inputs, extract the key ideas, tips, and main concepts.
Instructions:
This should capture the most valuable takeaways someone would want to remember from the talk.
File: generated-article-formal.md
Inputs: All previous outputs (or all available generated files if running incrementally)
Check: Skip if file exists
Create a traditional blog post with complete explanations and smooth narrative flow.
Target audience: General readers discovering the topic, browsing casually Reading context: Website visitors who have time and want full understanding
Instructions:
Style characteristics:
File: generated-article-direct.md
Inputs: All previous outputs (or all available generated files if running incrementally)
Check: Skip if file exists
Create a condensed, high-signal article optimized for rapid scanning and information extraction.
Target audience: Technical readers or busy professionals who skim content Reading context: Newsletter, Slack/Discord shares, or quick reference
Instructions:
Style characteristics:
After completion, inform the user which files were:
Example output:
Workflow complete!
Skipped (already exists):
- audio.mp3
- generated-transcript.txt
- generated-transcript-cleaned.md
- generated-transcript-readable.md
- generated-transcript-outline.md
Generated:
- generated-key-ideas.md
- generated-article-formal.md
- generated-article-direct.md
All outputs in <language> language.
If everything was generated fresh, simply list all outputs under "Generated".