upload-book-videos

Generates subtitles with Gemini, batch uploads videos to YouTube, and embeds players in Markdown chapters.

1|Updated May 26, 2026
One-click install
npx skills add https://github.com/nimdvir/dima-publishing --skill upload-book-videos-nimdvir
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: upload-book-videos
Source: https://github.com/nimdvir/dima-publishing/tree/main/.agents/skills/upload-book-videos
Command: npx skills add https://github.com/nimdvir/dima-publishing --skill upload-book-videos-nimdvir

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires google-genai, google-api-python-client, google-auth-oauthlib, google-auth-httplib2, pyyaml, and includes scripts (resource) and references (resource) components.

What problem does it solve? Publishing video content for books and courses requires manually transcribing videos, uploading them one by one to YouTube, and hand-editing chapter files to add embeds. This Skill automates that entire pipeline under explicit manual control with dry-run safety. ## Core Features & Use Cases - AI Subtitle and Summary Generation: Uses the Gemini API to produce .srt subtitle files and short YouTube-style summaries for each local video. - Batch YouTube Uploads: Uploads multiple videos from a YAML/JSON mapping file, creates playlists on demand, and tracks video IDs in a state file to prevent double uploads. - Markdown Chapter Embedding: Inserts responsive iframe players into chapter Markdown files using idempotent, marker-scoped substitutions. - Use Case: A course author records lecture videos for a database textbook, defines them in data/video_batch.yml, generates subtitles, dry-runs the upload, goes live with --allow-live-upload, and embeds all players into chapter pages in one workflow. ## Quick Start Create a data/video_batch.yml mapping your video files to titles and chapter targets, then ask the assistant to dry-run the batch upload and embed pipeline for that file.

Frequently Asked Questions about upload-book-videos

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I batch upload videos to YouTube with Python?▼

Define your videos in a YAML batch file with paths, titles, and playlist, then run batch_upload_videos.py with --dry-run to preview and --allow-live-upload to execute. The script uses the YouTube Data API v3 with resumable uploads and records video IDs in a state file to skip duplicates.

How do I generate SRT subtitles from video files using Gemini?▼

Run generate_video_assets.py with --videos or --batch-file after setting the GEMINI_API_KEY environment variable. It uploads each video to the Gemini File API, waits for processing, and writes a .srt transcript and a short .md summary next to each video.

Can I use a Google service account to upload YouTube videos?▼

No, service accounts do not work for YouTube channel uploads. You must create a Desktop app OAuth client in Google Cloud Console, save the client secret JSON locally, and authorize once in a browser to obtain a reusable token.

Why does YouTube OAuth return Error 403 access_denied?▼

This happens when the OAuth consent screen app is in Testing mode and your Google account is not listed as a test user. Add your account under Test users in the Google Cloud Console OAuth consent screen to resolve it.

How do I embed a YouTube video in a Markdown file?▼

Run batch_embed_videos.py with your batch file after uploading. It looks up video IDs from the upload state file and inserts a responsive iframe wrapper at a marker comment like <!-- VIDEO:label --> in each target chapter file, replacing any existing embed idempotently.

What are the limitations of this YouTube upload workflow?▼

It requires locally accessible video files and cannot download directly from Google Drive web URLs. It also runs only as manual local scripts with no GitHub Actions support, and live uploads always require the explicit --allow-live-upload flag after a dry run.