Build a Claude Video Research Agent
Use Claude Code to turn public videos into local transcripts and insights.
Introduction
30 Second Summary
A creator's videos often live across several platforms. The useful patterns stay hidden inside separate links.
In this project, you will build a local video research agent coordinated by Claude Code. It turns direct public video links into clips, screenshots, transcripts, content cards, and a cross-platform report with three evidence-backed video ideas.
What You'll Build
Picture opening one report that turns scattered public videos into source-linked content cards, cross-platform patterns, and three concrete ideas for what the creator should publish next.
By the end of this project, you'll have:
- A four-platform availability view that records one YouTube, Instagram, TikTok, and Facebook source as available or unavailable without one failed source stopping the batch.
- A local evidence trail for every available video with a working clip, source metadata, screenshot, audio file, and English transcript.
- A content intelligence report with one consistent card per source, cross-platform findings, and exactly three video ideas grounded in the collected evidence.
- Secret Mission: Rank up to 15 unique videos from official NextWork accounts, download the top 10 supported clips with yt-dlp, then transcribe and analyze the strongest three.
Are there any prerequisites?
Claude Code requires paid access through Claude Pro or prepaid Claude Console credits. You also need internet access and at least 1 GB of free disk space for the 466 MiB small.en model, downloaded clips, screenshots, audio files, and transcripts.
Use videos from an account you own or manage, or get written permission from the rights holder to save local copies and analyze them. A public link alone does not grant that permission.
Before We Start
A useful cross-platform comparison needs every supplied video to belong to the same creator or brand. Use videos from an account you control or videos the rights holder has given you permission to download and analyze.
This readiness check gives your research a clear subject before you set up Claude Code.
In this step, get ready to:
- Select one creator or brand whose public videos you have permission to save and analyze.
- Collect at least three direct video links across at least two platforms.
Choose one research subject or brand
Using one creator or brand keeps every comparison focused. You can use NextWork or another creator or brand you have permission to analyze.
- Enter your research subject here: NextWork or your chosen creator or brand.
Gather your direct video links
Each field below accepts one direct video or post URL from your chosen creator or brand. For YouTube, choose a Short when possible because shorter videos usually download and process faster. Longer YouTube videos also work because this workflow saves a clip from the first minute.
- Choose at least three videos from the same creator or brand across at least two platforms.
- Copy each video's direct URL from its share menu or browser address bar.
- Choose a video from NextWork's YouTube Shorts page.
- Paste one direct YouTube video URL from NextWork or your chosen creator or brand here: paste a direct YouTube video URL.
- Choose a video from NextWork's Instagram profile.
- Paste one direct Instagram video URL from NextWork or your chosen creator or brand here: paste a direct Instagram video URL.
- Choose a video from NextWork's TikTok profile.
- Paste one direct TikTok video URL from NextWork or your chosen creator or brand here: paste a direct TikTok video URL.
- Choose a video from NextWork's Facebook page.
- Paste one direct Facebook video URL from NextWork or your chosen creator or brand here: paste a direct Facebook video URL.
What Makes a Link Direct?
A direct link identifies one specific video or post. This gives the availability scan a single source to classify.
Profile pages can change as new content appears. Individual post links preserve a clearer source trail for your report.
Before you check, do you expect all three links to open individual videos from the same subject?
- Reload each selected video page in your browser.
- Check that the open pages represent at least two platforms.
You should see at least three individual public video pages from the same creator or brand. The open pages should cover at least two platforms.
Your research subject and video links are ready. Next, you will install Claude Code and the local media toolchain.
Install the Research Toolchain
Your video research agent needs a coordinator that can read project files and run local tools. Claude Code provides that coordination from your terminal.
The media toolchain adds video downloads, screenshots, audio conversion, and local transcription. You will install the correct version for your operating system before creating the workspace.
In this step, get ready to:
- Install Claude Code and complete browser authentication.
- Install the local media tools for your operating system.
- Create the research workspace with a four-platform source manifest you will populate in the next step.
Install Claude Code and sign in
Claude Code coordinates the workflow from your project folder. Start by opening the terminal application for your operating system and checking whether the CLI is already available.
macOS
- Press Cmd+Space to open Spotlight.
- Type Terminal and press Enter.
Windows
- Press the Windows key to open search.
- Type PowerShell and press Enter.
Linux
- Press the Super key to open application search.
- Type Terminal and press Enter.
- Check the installed Claude Code version by running:
claude --version
✔️ I see version 2.1.278 or higher
Claude Code is ready. Continue to the sign-in instructions below.
ⓧ I see an older version
Run the current native installer for your operating system. The installer updates the existing native installation.
macOS
- Update Claude Code by running the native installer:
curl -fsSL https://claude.ai/install.sh | bash
- Open a new Terminal window after the installer finishes.
Windows
- Update Claude Code from PowerShell by running the native installer:
irm https://claude.ai/install.ps1 | iex
- Open a new PowerShell window after the installer finishes.
Linux
- Update Claude Code by running the native installer:
curl -fsSL https://claude.ai/install.sh | bash
- Confirm the updated version by running:
claude --version
ⓧ Command not found
Install Claude Code with the native installer for your operating system. You do not need administrator access for the recommended native installation.
macOS
- Install Claude Code by running:
curl -fsSL https://claude.ai/install.sh | bash
- Open a new Terminal window after the installer finishes.
Windows
- Install Claude Code from PowerShell by running:
irm https://claude.ai/install.ps1 | iex
- Open a new PowerShell window after the installer finishes.
Linux
- Install Claude Code by running:
curl -fsSL https://claude.ai/install.sh | bash
- Open a new terminal window after the installer finishes.
- Confirm the installation by running:
claude --version
Review the Claude Code cost
Claude Pro costs $20 when billed monthly. Claude Code is included with Claude Pro.
A Claude Console account uses prepaid API credits with variable token-based pricing. Confirm which account you intend to use before signing in.
The folder where you launch Claude Code becomes the session's primary working directory. A dedicated project folder keeps the session focused on this workspace.
macOS
- Move to your Desktop by running this command:
cd ~/Desktop
- Create the video-research-agent folder and move into it by running these commands:
mkdir -p video-research-agent
cd video-research-agent
- Confirm the terminal is inside the project folder by running this command:
pwd
Windows
- Move to your Desktop from PowerShell by running this command:
Set-Location ([Environment]::GetFolderPath('Desktop'))
- Create the video-research-agent folder and move into it by running these commands:
New-Item -ItemType Directory -Force -Path 'video-research-agent' | Out-Null
Set-Location 'video-research-agent'
- Confirm PowerShell is inside the project folder by running this command:
Get-Location
You should see a path ending in Desktop\video-research-agent.
Linux
- Move to your Desktop by running this command:
cd ~/Desktop
- Create the video-research-agent folder and move into it by running these commands:
mkdir -p video-research-agent
cd video-research-agent
- Confirm the terminal is inside the project folder by running this command:
pwd
You should see a path ending in Desktop/video-research-agent.
- Start an interactive Claude Code session inside video-research-agent by running:
claude
✔️ I'm already signed in
You should see the Claude Code chat prompt instead of the login-method menu. Your saved credentials are working.
- Keep the default permission mode so Claude asks before file edits and shell commands.
- Enter /exit at the Claude Code prompt to close the first session.
ⓧ I need to authenticate
Choose the login method that matches how your Claude Code usage is billed.
Claude subscription
Use this option for Claude Pro, Max, Team, or Enterprise. Claude Pro works for this project, so you do not need a separate Anthropic API key or Claude Console credits.
- Select Claude account with subscription.
- Complete the browser sign-in with the account that has your active Claude subscription.
- Return to the Claude Code prompt after the browser confirms the sign-in.
- Keep the default permission mode so Claude asks before file edits and shell commands.
- Enter /exit at the Claude Code prompt to close the first session.
Anthropic Console
Use this option only when you want Claude Code usage billed through prepaid Anthropic API credits. Your usage draws from the balance in your Anthropic Console account.
- Select Anthropic Console account.
- Complete the browser sign-in with the Anthropic Console account that holds your prepaid credits.
- Copy the authenication code, then paste into the claude code
- Enter to default setup
- /exit at the Claude Code prompt to close the first session.
Browser sign-in did not finish?
Confirm that the browser uses the subscription or Console account you intend to use. If the terminal remains at the authentication stage, help me troubleshoot Claude Code browser authentication on my operating system.
Install the local media tools
Each media tool owns one part of the pipeline. The commands must be available on your PATH so Claude Code can call them from the workspace.
Check yt-dlp
- Check the installed yt-dlp version by running:
yt-dlp --version
✔️ I see version 2026.8.19 or higher
yt-dlp is ready to inspect and download the public video sources.
ⓧ I see an older version
Update yt-dlp with the installation method used on your operating system.
macOS
- Update yt-dlp with Homebrew by running:
brew upgrade yt-dlp
- Confirm the updated version by running:
yt-dlp --version
Windows
- Update yt-dlp with WinGet by running:
winget upgrade yt-dlp
- Confirm the updated version by running:
yt-dlp --version
Linux
- Update the standalone yt-dlp release by running:
yt-dlp -U
- Confirm the updated version by running:
yt-dlp --version
ⓧ Command not found
macOS
The Homebrew installer explains its changes and may pause for confirmation when Homebrew is missing.
- Install Homebrew only when it is missing by running:
if ! command -v brew >/dev/null 2>&1; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
- Install yt-dlp by running:
brew install yt-dlp
- Confirm the installation by running:
yt-dlp --version
Windows
WinGet may ask you to accept source agreements or approve the installer.
- Install yt-dlp from PowerShell by running:
winget install yt-dlp
- Confirm the installation by running:
yt-dlp --version
Linux
- Install the standalone yt-dlp build for your CPU by running:
mkdir -p "$HOME/.local/bin"
case "$(uname -m)" in
x86_64) asset="yt-dlp_linux" ;;
aarch64|arm64) asset="yt-dlp_linux_aarch64" ;;
*) echo "Unsupported CPU architecture: $(uname -m)"; exit 1 ;;
esac
curl -L "https://github.com/yt-dlp/yt-dlp/releases/latest/download/$asset" -o "$HOME/.local/bin/yt-dlp"
chmod a+rx "$HOME/.local/bin/yt-dlp"
export PATH="$HOME/.local/bin:$PATH"
- Confirm the installation by running:
yt-dlp --version
yt-dlp still unavailable?
Open a new terminal so it reloads your PATH. If the command still fails, help me find the yt-dlp executable on my operating system.
Check Deno
- Check the installed Deno version by running:
deno --version
✔️ I see version 2.9.7 or higher
Deno is ready to provide the JavaScript runtime that yt-dlp uses for full YouTube support.
ⓧ I see an older version
- Update Deno to the latest stable release by running:
deno upgrade
- Confirm the updated version by running:
deno --version
ⓧ Command not found
Install Deno for your operating system. Each installer places the executable on your computer and updates your PATH so future terminal sessions can find it.
macOS
The installer may ask to edit your shell configuration and set up shell completions. Completions let Tab suggest Deno commands for every shell you select.
- Install Deno with the official shell installer by running:
curl -fsSL https://deno.land/install.sh | sh
- Type Y and press Enter when you see the Edit shell configs to add deno to the PATH? (Y/n) prompt.
- Highlight zsh if you use Zsh or bash if you use Bash by pressing the arrow keys.
- Press Space to show [x] beside the highlighted shell.
- Press Enter to confirm the selection.
- Close the current Terminal window.
- Press Cmd+Space to open Spotlight.
- Type Terminal and press Enter to open a new Terminal window.
- Confirm the installation by running:
deno --version
Windows
The PowerShell installer updates your user PATH. A new PowerShell session loads that change after installation.
- Install Deno with the official PowerShell installer by running:
irm https://deno.land/install.ps1 | iex
- Close the current PowerShell window.
- Press the Windows key to open search.
- Type PowerShell and press Enter to open a new PowerShell window.
- Confirm the installation by running:
deno --version
You should see the installed Deno, V8, and TypeScript version numbers.
Linux
The installer may ask to edit your shell configuration and set up shell completions. Completions let Tab suggest Deno commands for every shell you select.
- Install Deno with the official shell installer by running:
curl -fsSL https://deno.land/install.sh | sh
- Type Y and press Enter when you see the Edit shell configs to add deno to the PATH? (Y/n) prompt.
- Highlight zsh if you use Zsh or bash if you use Bash by pressing the arrow keys.
- Press Space to show [x] beside the highlighted shell.
- Repeat the selection for the other shell if you regularly use both.
- Press Enter to confirm the selection.
- Close the terminal the open new one
- Press the Super key to open application search.
- Type Terminal and press Enter to open a new terminal window.
- Confirm the installation by running:
deno --version
You should see the installed Deno, V8, and TypeScript version numbers.
Deno still unavailable?
A new shell must load the PATH entry created by the installer. The default executable is $HOME/.deno/bin/deno on macOS and Linux or %USERPROFILE%\.deno\bin\deno.exe on Windows.
If the executable exists but deno --version still fails, help me add Deno to PATH on my operating system.
Check FFmpeg
- Check whether FFmpeg is available by running:
ffmpeg -version
✔️ I see FFmpeg version information
FFmpeg is ready to create screenshots and convert downloaded audio.
ⓧ Command not found
Install FFmpeg for your operating system, then check this tool again before moving on.
macOS
The Homebrew installer explains its changes and may pause for confirmation when Homebrew is missing.
- Install Homebrew only when it is missing by running:
if ! command -v brew >/dev/null 2>&1; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
- Install FFmpeg by running:
brew install ffmpeg
- Confirm the installation by running:
ffmpeg -version
Windows
WinGet may ask you to accept source agreements or approve the installer.
- Install the FFmpeg Essentials Build from PowerShell by running:
winget install "FFmpeg (Essentials Build)"
- Open a new PowerShell window after the installer finishes.
- Confirm the installation by running:
ffmpeg -version
Linux
APT may ask for your password and confirmation before it installs FFmpeg.
- Install FFmpeg on Ubuntu or Debian by running:
sudo apt update
sudo apt install ffmpeg
- Confirm the installation by running:
ffmpeg -version
FFmpeg still unavailable?
Open a new terminal so it reloads your PATH. If the command still fails, help me locate FFmpeg on my operating system.
Check whisper.cpp
- Check whether whisper.cpp is available by running:
whisper-cli --version
✔️ I see whisper.cpp version information
The local transcription CLI is ready to process audio without sending it to a cloud speech service.
ⓧ Command not found
Install whisper.cpp for your operating system, then check the CLI again before moving on.
macOS
The Homebrew installer explains its changes and may pause for confirmation when Homebrew is missing.
- Install Homebrew only when it is missing by running:
if ! command -v brew >/dev/null 2>&1; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
On an Intel Mac, Homebrew may compile whisper.cpp, so this installation can take several minutes.
- Install whisper.cpp by running:
brew install whisper.cpp
- Confirm the installation by running:
whisper-cli --version
Windows
This downloads the verified b5130 archive for your processor and adds the folder containing the CLI to your user PATH.
- Install the whisper.cpp b5130 archive from PowerShell by running:
$root = "$env:USERPROFILE\.local\share\whisper-b5130"
$archive = "$env:TEMP\whisper-b5130.zip"
$asset = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "whisper-bin-win-cpu-arm64.zip" } else { "whisper-bin-x64.zip" }
New-Item -ItemType Directory -Force -Path $root | Out-Null
Invoke-WebRequest "https://github.com/ggml-org/whisper.cpp/releases/download/b5130/$asset" -OutFile $archive
Expand-Archive -Path $archive -DestinationPath $root -Force
$cli = Get-ChildItem $root -Recurse -Filter whisper-cli.exe | Select-Object -First 1
$bin = $cli.Directory.FullName
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($userPath -notlike "*$bin*") { [Environment]::SetEnvironmentVariable("Path", "$userPath;$bin", "User") }
$env:Path += ";$bin"
- Confirm the installation by running:
whisper-cli --version
Linux
These commands use the verified b5130 prebuilt archive for Ubuntu on x64 or ARM64.
- Install the whisper.cpp b5130 archive for your CPU by running:
root="$HOME/.local/share/whisper-b5130"
mkdir -p "$root"
case "$(uname -m)" in
x86_64) asset="whisper-bin-ubuntu-x64.tar.gz" ;;
aarch64|arm64) asset="whisper-bin-ubuntu-arm64.tar.gz" ;;
*) echo "Unsupported CPU architecture: $(uname -m)"; exit 1 ;;
esac
curl -L "https://github.com/ggml-org/whisper.cpp/releases/download/b5130/$asset" -o /tmp/whisper-b5130.tar.gz
tar -xzf /tmp/whisper-b5130.tar.gz -C "$root"
cli="$(find "$root" -type f -name whisper-cli -print -quit)"
chmod a+rx "$cli"
bin="$(dirname "$cli")"
export PATH="$bin:$PATH"
printf '\nexport PATH="%s:$PATH"\n' "$bin" >> "$HOME/.profile"
- Confirm the installation by running:
whisper-cli --version
whisper-cli still unavailable?
Open a new terminal so it reloads the executable directory. If the command still fails, help me find whisper-cli on my operating system.
Create the research workspace
The workspace keeps every source, intermediate file, and report under one folder. It also stores the 466 MiB English-only small.en model locally.
The model download can take several minutes on a slower connection. A long progress bar is expected while the file transfers.
macOS
- Move to your Desktop and create the workspace folders by running:
cd ~/Desktop
mkdir -p video-research-agent/{media,screenshots,audio,transcripts,models}
cd video-research-agent
- Download the small.en model into models/ by running:
curl -L --fail --retry 5 --output models/ggml-small.en.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin
Windows
- Create the workspace folders on your Desktop from PowerShell by running:
$project = Join-Path ([Environment]::GetFolderPath('Desktop')) 'video-research-agent'
$folders = 'media','screenshots','audio','transcripts','models'
New-Item -ItemType Directory -Force -Path $project | Out-Null
$folders | ForEach-Object { New-Item -ItemType Directory -Force -Path (Join-Path $project $_) | Out-Null }
Set-Location $project
- Download the small.en model into models/ by running:
Invoke-WebRequest 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin' -OutFile 'models\ggml-small.en.bin'
Linux
- Move to your Desktop and create the workspace folders by running:
cd ~/Desktop
mkdir -p video-research-agent/{media,screenshots,audio,transcripts,models}
cd video-research-agent
- Download the small.en model into models/ by running:
curl -L --fail --retry 5 --output models/ggml-small.en.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin
- Start Claude Code inside the workspace by running:
claude
- Ask Claude Code to create the workspace policy and source manifest by submitting this prompt:
Create CLAUDE.md and links.md in this workspace.
In CLAUDE.md, require one URL per command and continue after individual failures. Never use cookies, browser profiles, social-platform credentials, or login workarounds.
Record these command patterns:
- Scan with yt-dlp --simulate --no-cookies --no-cookies-from-browser.
- Download with --no-playlist, --download-sections '*0-60', --write-info-json, --paths media, and an extractor-key plus ID filename.
- Create screenshots with ffmpeg at 00:00:03 and one JPG frame.
- Create 16 kHz mono PCM WAV files with ffmpeg.
- Transcribe with whisper-cli, models/ggml-small.en.bin, -otxt, and -of.
In links.md, add add these empty slots, with a short note at the top: "One direct video link per line. The named slots are examples. Add more lines with any label for any site. Leave a slot as 'not provided' to skip it.
Creator or brand: not provided
YouTube: not provided
Instagram: not provided
TikTok: not provided
Facebook: not provided
X: not provided
others: not provided
others: not provided
Why keep one command policy?
The policy gives Claude Code the same safety boundary on macOS, Windows, and Linux. The operating system changes the shell syntax, while the evidence workflow stays consistent.
- Choose the one-time approval option when Claude creates CLAUDE.md and links.md inside the workspace.
- Reject any request to write outside the video-research-agent folder.
- Ask Claude Code to verify the finished setup by submitting:
Read CLAUDE.md and links.md. Confirm that the five evidence folders exist, confirm that models/ggml-small.en.bin exists, and list the five platform slots without downloading media.
Workspace check failed?
Confirm that Claude Code started inside the video-research-agent folder. If a folder or file is missing, help me repair the research workspace on my operating system.
Your cross-platform toolchain and workspace are ready. Next, you will scan every source slot and download the clips that remain publicly available.
Scan Links and Download Clips
Your local toolchain is ready. The next risk is the input batch: public links can disappear or require login between runs.
In this step, Claude Code uses resilient batch processing to keep one failed source from stopping the rest. It records every labeled row before downloading only usable sources.
In this step, get ready to:
- Load the research subject and one public video link for each of the four platforms saved in Step 0 into links.md.
- Scan every labeled source row into a visible availability table.
- Download a working clip and metadata for every available source.
Load your saved research links
Step 0 saved your research subject and platform URLs as project variables. The prefilled prompt below renders those values so Claude Code can write them into links.md without asking you to enter them again.
- Review the saved research subject and links rendered in the prompt below.
- Populate links.md by submitting the prefilled prompt to Claude Code:
Populate links.md using these saved Step 0 inputs.
Research subject: [[RESEARCH_SUBJECT="NextWork or your chosen creator or brand"]]
YouTube: [[YOUTUBE_VIDEO_URL="paste a direct YouTube video URL"]]
Instagram: [[INSTAGRAM_VIDEO_URL="paste a direct Instagram video URL"]]
TikTok: [[TIKTOK_VIDEO_URL="paste a direct TikTok video URL"]]
Facebook: [[FACEBOOK_VIDEO_URL="paste a direct Facebook video URL"]]
Create exactly one row for each named platform. Remove any pre-created X or blank Other rows. If links.md contains another labeled source row that I added manually, preserve it. Do not ask me to provide the research subject or links again. Update links.md, then print the completed manifest. Do not scan or download anything yet.
- Confirm that Claude Code uses the rendered Step 0 values without asking for the subject or links again.
- Confirm that YouTube, Instagram, TikTok, and Facebook each have exactly one direct video link.
Why scan labeled rows?
This project begins with four named source rows and one link per platform. The agent processes rows by their labels, so it can also handle a new platform row you add manually later.
Keeping extra rows optional avoids empty placeholders while preserving the agent's flexibility.
Scan every labeled source
The availability scan separates usable sources from missing or inaccessible ones before media downloads begin. Claude Code uses its normal approval flow for each terminal command.
- Paste this request into Claude Code:
Read CLAUDE.md and links.md. Scan every labeled source row without downloading media. Write run-status.md, mark blank custom rows as not provided, mark links that cannot be inspected without social-platform login as unavailable, and continue through every row. Keep the four named platform rows and any additional labeled rows already present.
How does the scan stay resilient?
- Claude follows CLAUDE.md by inspecting one URL per command.
- This isolates a failed extractor from later source rows.
- The --simulate option checks each source without downloading its video.
- Every labeled row receives an available, not provided, or unavailable result.
- Review each permission prompt before Claude runs a scan command.
- Choose the one-time approval option when the command starts with yt-dlp and includes --simulate, --no-cookies, and --no-cookies-from-browser.
- When Claude asks to create or update run-status.md, review the request and choose the one-time approval option.
- Display the saved status file in your terminal by submitting this prompt:
Show me the contents of run-status.md.
Each inspectable link you supplied is marked available. A source that cannot be inspected without login is marked unavailable.
You now have a complete availability map that preserves every labeled source row.
Missing a status row?
Check that links.md contains YouTube, Instagram, TikTok, and Facebook with one link each. Ask Claude to continue through every labeled row when one public link cannot be inspected.
If the table is still incomplete, help me debug the missing availability row.
Download the available clips
The download pass uses the availability table as its gate. Each successful source receives a working clip near one minute plus a metadata sidecar.
- Paste this request into Claude Code:
Download only rows marked available. Keep each working clip near one minute, save source metadata, never use cookies or social-platform login, and continue after an individual failure. Update run-status.md when finished.
What Does the Download Create?
- Claude downloads only rows currently marked available.
- The first-minute range keeps each working clip near one minute.
- The --write-info-json option saves source metadata in a matching .info.json sidecar.
- The output names use each source's extractor key and video ID.
- Open File Explorer go to Desktop
- Open the media/ folder from the current workspace.
- Chech if each downloaded video is working
Did One Source Fail?
Keep the affected row marked unavailable when public inspection or downloading fails. Do not add cookies or social-platform credentials.
If successful sources also stopped, help me diagnose the failed download without stopping the batch.
Before you ask, do you think filenames and metadata can reveal exactly what each person said?
- Test the downloaded evidence by asking Claude Code this question:
Using only the downloaded filenames and metadata, what was said in each clip?
Why the Answer Falls Short
Filenames and .info.json metadata do not provide a trustworthy record of every spoken line. Any answer based only on those files would be incomplete or inferred.
This is the intended shortfall. Your batch still needs a searchable evidence layer.
Your agent can now separate usable sources from missing ones without abandoning the batch. Next, you will turn the downloaded media into visual and searchable evidence.
Create Screenshots and Transcripts
Your scan now has local clips with matching status data. Now you'll turn each available clip into evidence you can search and compare.
Claude Code coordinates the local batch. FFmpeg and whisper.cpp create the evidence files on your machine.
In this step, get ready to:
- Create a JPG, WAV, and TXT evidence set for every available clip.
- Verify each evidence set in the terminal.
Create every evidence file
- Submit the request below in your existing Claude Code session.
- Review each permission request before approving it once.
- Choose the one-time approval option only when the command follows CLAUDE.md and writes to screenshots/, audio/, or transcripts/.
Read CLAUDE.md and run-status.md. For every row marked available, process the matching clip in media/. Use the command patterns from CLAUDE.md to create one screenshot in screenshots/, one 16 kHz mono PCM WAV in audio/, and one local transcript in transcripts/ with models/ggml-small.en.bin. Keep the same filename stem across all outputs. Use 00:00:03 for screenshots when valid, or an earlier valid timestamp for shorter clips. Continue after individual failures. When the batch finishes, list the files created in all three output folders.
What does this request do?
- FFmpeg extracts one visual frame from each available clip.
- FFmpeg converts each clip into audio that the local model can process.
- whisper.cpp saves each transcript with the matching filename stem.
- The transcription stage may sit quietly for a few minutes on slower CPUs. That pause means the local model is processing the audio.
Batch stopped or missed a file?
Confirm the matching source clip exists in media/.
- Confirm models/ggml-small.en.bin exists.
- Ask Claude Code to retry only the missing evidence set.
If the retry still fails, help me debug the missing evidence file.
Verify the evidence batch
Before you check the batch, do you expect every available row to have three matching evidence files?
- Submit this read-only verification request in Claude Code:
Read run-status.md without changing any files. For each row marked available, check for a matching source clip in media/, JPG in screenshots/, WAV in audio/, and TXT in transcripts/. Print a compact table with the filename stem and the columns Media, JPG, WAV, TXT, and Transcript status. Mark a transcript empty if its TXT file contains no text. After the table, report the expected evidence-set count, complete count, and any missing or empty files. Do not modify or infer transcript wording.
What does this check prove?
The table connects every available source to its three evidence files. The transcript status also catches empty output before it reaches your content cards.
That's the evidence layer complete. Every successful clip now has a visual reference and a searchable local transcript.
Your source evidence is ready for analysis. Next, you'll turn each available video into a consistent content card.
Build Evidence-Backed Content Cards
The screenshots and transcripts from the last step give you a clear evidence trail for every available video. You can now turn those separate files into a report that is quick to scan.
Raw evidence becomes difficult to compare when every source has a different shape. In this step, Claude Code applies one Markdown card schema to every available source.
In this step, get ready to:
- Generate one content card for every available source.
- Validate each card against its local evidence.
- Keep the report within its defined analysis boundaries.
Generate one card per available video
A fixed schema makes every video answer the same questions. The transcript anchors the spoken claims. The screenshot supplies a visual reference.
- Submit this prompt in the Claude Code session from earlier:
Read run-status.md and process every available transcript and matching screenshot. Build one card per video in content-intelligence-report.md. Each card must contain: Summary, Hook, exactly three Key Points, Call to Action, Screenshot, and Source. Use only the transcript, screenshot, metadata, and original URL. Do not analyze visual style, on-screen text, titles, or captions.
How Does This Prompt Ground the Report?
- The status in run-status.md limits processing to sources marked available.
- The shared card schema keeps every source comparable.
- The evidence boundary prevents unsupported observations from entering the report.
- Reject any request to read outside the video-research-agent/ folder or use network sources beyond the URLs recorded in links.md.
Report Missing or Missing Cards?
If the report is missing, confirm Claude Code remains inside the video-research-agent/ workspace. Submit the prompt again after returning to that workspace.
If a card is missing, check that its row says available. Confirm that the source has a matching transcript plus screenshot.
If the files exist but the card is still missing, help me diagnose the missing content card.
Validate every card against its evidence
An evidence-backed card keeps every analytical claim traceable to a local file or original URL. This review catches invented hooks plus unsupported key points before the cards feed the cross-platform comparison.
Before you review the report, how many cards do you expect from the rows marked available? Hold that number in mind.
- Run one read-only card check by submitting this prompt in Claude Code:
Check content-intelligence-report.md against run-status.md, links.md, transcripts/, screenshots/, and media/. Do not change any files. Print PASS or FAIL for each requirement: one card exists for every available row; every card contains Summary, Hook, exactly three Key Points, Call to Action, Screenshot, and Source; each Screenshot path exists and matches the source filename stem; each Source URL matches links.md; rows marked not provided or unavailable have no card; and the cards contain no visual-style analysis, on-screen-text analysis, title analysis, or caption analysis. Finish with the expected card count, complete card count, and a concise list of any failures.
What does this check prove?
- The count check catches missing or extra cards.
- The schema check confirms that every card has the same evidence-backed structure.
- The path and source checks connect each card to its local files and original URL.
Your source-by-source report is ready. Next, you will compare the cards to uncover repeated topics, cross-posts, content gaps, and new video ideas.
Compare Platforms and Generate Ideas
Your evidence-backed cards now make each available video understandable on its own.
The wider strategy is still hidden across separate cards. In this step, Claude Code compares that evidence with current public research to produce a ranked set of video suggestions.
In this step, get ready to:
- Compare evidence across the collected videos.
- Research current public sources related to the detected subjects.
- Rank 10 video suggestions using published evidence and a visible scoring rubric.
Compare the collected videos
Comparing every card in one pass reveals repeated topics and platform differences. This establishes the local evidence that guides the web research.
Claude Code uses transcripts to compare spoken claims. Screenshot subjects plus metadata test whether similar posts come from the same source.
- Ask Claude Code to append the cross-platform comparison by submitting this prompt:
Using all available cards, transcripts, screenshots, metadata, and source URLs together, append a cross-platform comparison to content-intelligence-report.md.
Include exactly these top-level sections:
- Repeated Topics.
- Cross-Posted Videos.
- Hook and Format Differences.
Identify a cross-post only when transcript, visual, and metadata evidence support the match. If no pair meets that standard, state that no evidence-backed cross-post was found.
Do not generate video suggestions yet. Do not add visual-style analysis, on-screen-text analysis, title rewrites, or caption rewrites. Do not change the existing content cards.
What does this prompt control?
- The prompt reads every available card alongside its local evidence.
- The three required sections establish the topics and formats represented by the supplied videos.
- The cross-post rule requires multiple evidence types before Claude Code can confirm a match.
- The final restriction keeps the comparison separate from the upcoming web research.
- Open Finder on macOS or File Explorer on Windows.
- Open Desktop/video-research-agent/content-intelligence-report.md.
- Confirm the three comparison headings appear after the final content card.
Missing a comparison section?
- Compare the appended headings with the three-section schema in the prompt.
- Remove any extra top-level section created during this comparison.
If the report structure still looks wrong, help me diagnose the missing or extra comparison sections.
Research 10 video suggestions
The collected videos establish what is relevant to the source set. Current public research adds evidence about related questions, developments, and conversations.
Claude Code may ask for permission to use WebSearch and WebFetch. Review each request before granting one-time access.
- Generate the researched suggestions by submitting this prompt to Claude Code:
Read content-intelligence-report.md and identify the main subjects, intended audience, recurring questions, and platform formats represented by the collected videos.
Use WebSearch to research current public information related to those subjects. Use WebFetch to read each relevant page before treating it as evidence. Use recent sources when freshness matters. Prefer primary sources when they are available.
Generate exactly 10 researched video suggestions. For each suggestion, include:
- Priority Rank.
- Video Concept.
- Connection to the Collected Videos.
- External Research Signal.
- Supporting Source URLs and Publication Dates.
- Best-Fit Platform.
- Evidence Confidence.
- Weighted Ranking Score.
Rank the suggestions using these criteria:
- Relevance to the collected videos: 40%.
- Strength of external evidence: 30%.
- Freshness of the evidence: 20%.
- Fit with the selected platform: 10%.
Use at least five independent sources across the section. Support every suggestion with at least one source. Do not claim that a topic is trending, popular, or highly searched unless a cited source provides measurable evidence for that claim. Separate sourced facts from your interpretation.
If the collected videos cover unrelated subjects, group them into clear topic clusters and distribute the 10 suggestions across those clusters. If WebSearch or WebFetch is unavailable, stop and report that limitation instead of inventing sources.
Append the results as a new top-level section named Top 10 Researched Video Suggestions. Do not change the existing content cards or comparison sections.
How does the ranking work?
- Relevance measures how closely each suggestion connects to the collected videos.
- Evidence strength measures the quality of the cited external support.
- Freshness rewards timely evidence when the subject can change.
- Platform fit checks whether the proposed format matches the selected channel.
- Approve the WebSearch request once when Claude Code asks.
- Review each WebFetch domain before granting one-time access.
- Approve the edit to content-intelligence-report.md once.
- Wait until Claude Code reports that all 10 suggestions have been added.
- Open Desktop/video-research-agent/content-intelligence-report.md in Finder on macOS or File Explorer on Windows.
Review the final intelligence report
The final check separates documented research from unsupported claims. Every suggestion should show both its connection to the videos and its external source trail.
Search unavailable or sources missing?
If the research still fails, help me diagnose the web research and missing citations.
Suggestions not supported by research?
- Remove any suggestion that lacks a traceable source URL.
- Revise any unsupported claim so it clearly separates the source finding from Claude Code's interpretation.
- Recalculate any rank that does not follow the stated weighting.
If a suggestion still introduces unsupported claims, help me audit the researched video suggestions.
Strong finish. Your report now combines local video evidence with current public research to produce 10 ranked suggestions with a source trail.
Secret mission
Find NextWork's Top Videos
Find up to 15 unique videos from official NextWork accounts across public platforms. Download the top 10 supported clips, then transcribe and analyze the strongest three.
Clean Up Your Resources
Clean Up Your Resources
The local video-research-agent/ workspace and installed tools create no ongoing storage charge. Claude paid access, usage credits, or Console auto-reload can continue billing until you change those settings.
Resources you used:
- The local video-research-agent workspace on your Desktop, including downloaded media, evidence files, reports, and the transcription model.
- The native Claude Code installation.
- The local Deno, yt-dlp, FFmpeg, and whisper.cpp installations.
- Your Claude paid plan, optional usage credits, or Claude Console auto-reload settings.
Keep everything running
No action needed. Choose this if you plan to run more research batches with the same local toolchain.
- Keep the video-research-agent folder on your Desktop with its evidence trail and reports.
- Keep Claude Code, Deno, yt-dlp, FFmpeg, and whisper.cpp installed.
- Keep your Claude paid plan only if you expect to continue using it.
- Review Settings, then Usage in Claude if usage credits are enabled.
Pause - I'll come back to this later
Pausing closes the active Claude Code session while preserving the workspace and tools. Claude subscriptions cannot be paused, so paid access continues unless you cancel it.
- Select the terminal that is running Claude Code.
- Enter /exit to close the session.
- Confirm that you see your normal shell or PowerShell prompt again.
- Leave the video-research-agent folder on your Desktop.
- Open Claude on the web if you want to prevent pay-as-you-go usage while keeping your plan.
- Open Settings, then Usage.
- Disable usage credits if they are enabled.
- Open Claude Console Settings, then Billing if you used Console credits.
- Turn off Auto-reload if it is enabled.
Delete - I don't want to use this again
Deleting the workspace and uninstalling the tools is permanent. Save any report or source asset you want to keep before running these commands.
- Move any files you want to keep outside the video-research-agent folder.
- Enter /exit in the active Claude Code session.
macOS
- Remove the workspace and native Claude Code installation by running:
rm -rf ~/Desktop/video-research-agent
rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claude
- Remove the Homebrew media tools by running:
brew uninstall yt-dlp deno ffmpeg whisper.cpp
- Confirm that the workspace and commands are gone by running:
test ! -d ~/Desktop/video-research-agent && echo "Workspace deleted"
command -v claude || echo "Claude Code removed"
command -v deno || echo "Deno removed"
command -v yt-dlp || echo "yt-dlp removed"
command -v ffmpeg || echo "FFmpeg removed"
command -v whisper-cli || echo "whisper.cpp removed"
Windows
- Remove the workspace and native Claude Code installation from PowerShell by running:
$project = Join-Path ([Environment]::GetFolderPath('Desktop')) 'video-research-agent'
Remove-Item -LiteralPath $project -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force -ErrorAction SilentlyContinue
- Remove the WinGet media packages by running:
winget uninstall --id yt-dlp.yt-dlp --exact
winget uninstall --id DenoLand.Deno --exact
winget uninstall --name "FFmpeg (Essentials Build)" --exact
- Remove the whisper.cpp archive and its PATH entry by running:
$root = "$env:USERPROFILE\.local\share\whisper-b5130"
$userPath = [Environment]::GetEnvironmentVariable('Path', 'User')
$cleanPath = ($userPath -split ';' | Where-Object { $_ -and ($_ -notlike "$root*") }) -join ';'
[Environment]::SetEnvironmentVariable('Path', $cleanPath, 'User')
Remove-Item -Path $root -Recurse -Force -ErrorAction SilentlyContinue
- Open a new PowerShell window.
- Confirm that the workspace and commands are gone by running:
$project = Join-Path ([Environment]::GetFolderPath('Desktop')) 'video-research-agent'
if (-not (Test-Path $project)) { 'Workspace deleted' }
'claude','deno','yt-dlp','ffmpeg','whisper-cli' | ForEach-Object {
if (Get-Command $_ -ErrorAction SilentlyContinue) { "$_ still installed" } else { "$_ removed" }
}
Linux
- Remove the workspace, native Claude Code files, yt-dlp, and whisper.cpp by running:
rm -rf ~/Desktop/video-research-agent
rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claude
rm -f ~/.local/bin/yt-dlp
rm -rf ~/.local/share/whisper-b5130
- Clear Deno's cache and remove its installation by running:
deno clean
rm -rf ~/.deno
- Open your shell configuration file and remove only the line that sources Deno's environment file.
- Open ~/.profile and remove only the PATH line containing whisper-b5130.
- Remove FFmpeg through APT by running:
sudo apt remove ffmpeg
- Enter Y if APT asks you to confirm the removal.
- Open a new terminal window.
- Confirm that the workspace and commands are gone by running:
test ! -d ~/Desktop/video-research-agent && echo "Workspace deleted"
command -v claude || echo "Claude Code removed"
command -v deno || echo "Deno removed"
command -v yt-dlp || echo "yt-dlp removed"
command -v ffmpeg || echo "FFmpeg removed"
command -v whisper-cli || echo "whisper.cpp removed"
Local cleanup does not cancel paid Claude access. Use the following actions only if you no longer want that access.
- Open Claude on the web.
- Click your initials or name in the lower-left corner.
- Select Settings.
- Open Billing.
- Click Cancel to cancel a web Pro or Max plan.
- Cancel at least 24 hours before the next billing date to avoid the next charge.
- Open Usage from Settings.
- Disable usage credits if they are enabled.
- Open Claude Console Settings, then Billing if you used Console credits.
- Turn off Auto-reload.
Folder still in use?
A file may still be open from the workspace. Close any editor, terminal, or media player that is using the folder before trying again.
Help me find the process that is keeping the folder open.
Nice Work!
Nice Work!
Mission complete! Your Claude Code agent now turns public cross-platform videos into a source-backed content intelligence report.
You've learned how to:
- Run a resilient four-platform workflow that uses yt-dlp to save one YouTube, Instagram, TikTok, and Facebook clip with its metadata while preserving unavailable sources.
- Create local evidence for every available clip with an FFmpeg screenshot, a 16 kHz mono WAV file, and a small.en transcript from whisper.cpp.
- Build evidence-backed content cards that reveal repeated topics, cross-posts, format differences, content gaps, and three concrete video ideas.
- Complete an optional Secret Mission that ranks up to 15 unique videos from official NextWork accounts, uses yt-dlp to download the top 10 supported clips, and analyzes the strongest three.
Ready to quiz yourself?