KS
Killer-Skills

upload-prepare — how to use upload-prepare how to use upload-prepare, upload-prepare setup guide, what is upload-prepare, upload-prepare alternative, upload-prepare vs youtube uploader, upload-prepare install, youtube upload preparation, upload-prepare validation, upload-prepare checklist

v1.0.0
GitHub

About this Skill

Ideal for Media Management Agents requiring precise YouTube upload validation and preparation capabilities. upload-prepare is a skill that prepares and validates everything for YouTube upload, creating a comprehensive checklist for user verification.

Features

Creates comprehensive checklist for user verification
Validates project existence in `proj` context
Supports activation triggers like 'prepare upload' and 'validate for youtube'
Detects project name from user or context
Generates checklist for YouTube upload preparation

# Core Topics

smoreg smoreg
[0]
[0]
Updated: 3/7/2026

Quality Score

Top 5%
39
Excellent
Based on code quality & docs
Installation
SYS Universal Install (Auto-Detect)
Cursor IDE Windsurf IDE VS Code IDE
> npx killer-skills add smoreg/biLangGen/upload-prepare

Agent Capability Analysis

The upload-prepare MCP Server by smoreg is an open-source Categories.community integration for Claude and other AI agents, enabling seamless task automation and capability expansion. Optimized for how to use upload-prepare, upload-prepare setup guide, what is upload-prepare.

Ideal Agent Persona

Ideal for Media Management Agents requiring precise YouTube upload validation and preparation capabilities.

Core Value

Empowers agents to validate YouTube uploads without actual upload, creating comprehensive checklists for user verification, utilizing protocols like HTTP for metadata analysis and checklist generation in formats like CSV or JSON.

Capabilities Granted for upload-prepare MCP Server

Validating video metadata before upload
Generating pre-upload checklists for content creators
Automating YouTube upload preparation for developers

! Prerequisites & Limits

  • Does not support actual YouTube upload
  • Requires project name or context detection
  • Limited to YouTube platform
Project
SKILL.md
9.2 KB
.cursorrules
1.2 KB
package.json
240 B
Ready
UTF-8

# Tags

[No tags]
SKILL.md
Readonly

Upload Prepare - YouTube Upload Preparation & Validation

Overview

Prepare and validate everything for YouTube upload without actually uploading. Creates comprehensive checklist for user verification.

Activation Triggers

  • "prepare upload"
  • "check before upload"
  • "validate for youtube"
  • "upload checklist"
  • "готовь к загрузке"
  • "проверь перед аплоадом"

Workflow

Step 1: Identify Project

  1. Get project name from user or detect from context
  2. Verify project exists in projects/ directory
  3. Load project metadata from SQLite database
bash
1# Check project exists 2ls projects/{project_name}/ 3 4# Get meta from DB 5sqlite3 projects/{project_name}/project.db "SELECT key, value FROM meta;"

Step 2: Validate Languages

  1. Read source and target language from project meta
  2. Read 2-3 translations from MIDDLE of the book (not beginning!)
  3. Display translations for user to verify correct language
bash
1# Get total sentences 2sqlite3 projects/{project_name}/project.db "SELECT value FROM meta WHERE key='total_sentences';" 3 4# Read translations from middle (e.g., sentences 100-102) 5sqlite3 projects/{project_name}/project.db "SELECT sentence_idx, text FROM sentences WHERE lang='{target_lang}' LIMIT 3 OFFSET 100;"

Step 3: Validate Files

Check all required files exist:

bash
1# Video output 2ls -lh projects/{project_name}/video/output.mp4 3 4# Background image 5ls -la projects/{project_name}/video/background.* 6 7# Timeline with wordcards 8head -30 projects/{project_name}/audio/timeline.json | grep -E "(wordcard_start|wordcard_duration)" 9 10# Wordcard audio files 11ls projects/{project_name}/audio/wordcards/ | head -5

Step 4: Verify Wordcards

  1. Check timeline.json contains wordcard_start and wordcard_duration fields
  2. Play one wordcard audio from middle of book for verification
bash
1# Check timeline has wordcard data 2grep -c "wordcard_start" projects/{project_name}/audio/timeline.json 3 4# Play wordcard from middle (user listens) 5afplay projects/{project_name}/audio/wordcards/0000100_combined.mp3

Step 5: Find Thumbnail

  1. Determine language pair from project (e.g., ru_en, ru_es-latam)
  2. Check thumbnails/{lang_pair}/ directory for matching thumbnail
  3. If not found, generate using thumbnail generator
bash
1# Find thumbnail in language-specific folder 2# Structure: thumbnails/ru_en/, thumbnails/ru_es-latam/ 3ls -la thumbnails/{source}_{target}/ | grep -i {project_base_name}

If thumbnail NOT found, generate it:

python
1# Quick one-liner to generate single thumbnail 2python3 -c " 3from pathlib import Path 4from video.thumbnail_variants import prepare_background, variant_13, load_fonts 5from PIL import ImageDraw 6 7fonts = load_fonts() 8img = prepare_background(Path('txt_source/{book_name}.png')) 9draw = ImageDraw.Draw(img) 10 11# For RU→EN use tgt_lang='ENGLISH' 12# For RU→ES-LATAM use tgt_lang='LATAM SPANISH' 13img = variant_13(img, draw, fonts, 14 author_en='{Author English}', 15 title_en='{Title English}', 16 src_lang='RUSSIAN', 17 tgt_lang='ENGLISH', # or 'LATAM SPANISH' 18 title_ru='{Название}', 19 author_ru='{Автор}' 20) 21img = img.convert('RGB') 22img.save('thumbnails/ru_en/{book_name}.png', quality=95) 23"

Batch generation (all books):

bash
1# Generate all thumbnails for specific language pair 2python3 scripts/generate_thumbnails.py thumbnails/ru_es-latam # default LATAM SPANISH

To add target language option to batch script, edit generate_thumbnails.py.

Step 6: Generate Metadata

Invoke youtube-metadata skill to generate title, description, tags:

Skill(skill: "youtube-metadata")

Follow youtube-metadata workflow to generate proper metadata.

Step 7: Build Upload Command

Construct the upload command (do NOT execute):

bash
1python3 scripts/youtube_upload.py upload {project_name} {thumbnail_path} --playlist "{playlist_name}"

Playlist selection:

  • RU → EN: --playlist "RU - EN"
  • RU → ES-LATAM: --playlist "RU - ES (LATAM)"
  • Other: ask user

Step 8: Display Checklist

Output comprehensive checklist for user:

============================================================
UPLOAD PREPARATION CHECKLIST
============================================================

PROJECT: {project_name}
LANGUAGES: {SOURCE} → {TARGET}

------------------------------------------------------------
FILES (clickable paths)
------------------------------------------------------------
[✓/✗] Video:      file://{full_video_path} ({size})
[✓/✗] Background: file://{full_background_path}
[✓/✗] Thumbnail:  file://{full_thumbnail_path}
[✓/✗] Timeline: {has wordcard data}
[✓/✗] Wordcards: {count} files

------------------------------------------------------------
LANGUAGE VERIFICATION (from middle of book)
------------------------------------------------------------
Sentence 100: "{source_text}"
Translation:  "{target_text}"

Sentence 101: "{source_text}"
Translation:  "{target_text}"

>>> Verify translations are in {target_lang}! <<<

------------------------------------------------------------
WORDCARD AUDIO
------------------------------------------------------------
[✓/✗] Timeline has wordcard timing
[✓/✗] Wordcard files exist
[PLAYED] Wordcard sample from sentence 100

------------------------------------------------------------
METADATA (use youtube-metadata skill format!)
------------------------------------------------------------
Title: [Bilingual][{SOURCE}→{TARGET}] {Author} - {Title}

Description:
🎧 AI-generated bilingual audio for passive language learning.
Each sentence: first {source_language}, then {target_language}.

⚠️ Neural TTS - minor errors possible. Premium voices coming soon.

📩 Want other languages or texts? Drop a comment!

#{hashtag1} #Bilingual #LanguageLearning #{hashtag2}

Tags: (from youtube-metadata skill, NO # symbols)
Playlist: {playlist}

------------------------------------------------------------
UPLOAD COMMAND (copy & run when ready)
------------------------------------------------------------
python3 scripts/youtube_upload.py upload {project_name} {thumbnail_path} \
  --title "[Bilingual][{SOURCE}→{TARGET}] {Author} - {Title}" \
  --playlist "{playlist}" \
  --privacy public

============================================================

Upload command flags:

  • --title — REQUIRED! Title in youtube-metadata format
  • --thumbnail — path to thumbnail image (positional arg)
  • --playlist — playlist name (RU - EN, RU - ES (LATAM), etc.)
  • --privacy — private/unlisted/public (use public for immediate publish)
  • --schedule — optional: "tomorrow", "tomorrow 14:00", "18:00", "+2h", or ISO datetime
  • --dry-run — preview without uploading
  • -y — skip confirmation

Optimal premiere times for language learning content:

  • Best days: Wednesday, Thursday, Friday
  • Best time: 10:00-14:00 (target audience timezone)
  • For RU→EN: 14:00 MSK (11:00 UTC) — catches both Russian and European learners
  • For RU→ES LATAM: 18:00 MSK (15:00 UTC, 12:00 Argentina) — catches LATAM afternoon

CRITICAL: Metadata MUST follow youtube-metadata skill format exactly:

  • Title: [Bilingual][{SOURCE}→{TARGET}] {Author} - {Title}
  • Author and Title MUST be in ENGLISH
  • Description: standard template from youtube-metadata skill
  • Tags: from youtube-metadata skill (NO hashtag symbols)

Quality Checklist

Before showing final checklist, verify:

  • Video file exists and size > 10MB
  • Background image exists
  • Thumbnail exists
  • Timeline contains wordcard_start fields (if wordcards enabled)
  • Wordcard audio files exist (if wordcards enabled)
  • Translations are in correct target language
  • Metadata generated via youtube-metadata skill
  • Upload command is valid

Anti-Patterns to Avoid

  • Don't execute the upload command
  • Don't skip language verification
  • Don't use translations from beginning (use middle of book)
  • Don't skip wordcard audio playback
  • Don't generate metadata manually (use youtube-metadata skill)

Example Execution

User: prepare upload nabokov_uzhas_ru_en

Claude:
Starting upload preparation for nabokov_uzhas_ru_en...

[Validates project exists]
[Reads meta: ru → en, 209 sentences]
[Reads translations from middle - sentences 100-102]
[Checks video: 192MB ✓] → file:///Users/.../video/output.mp4
[Checks background ✓] → file:///Users/.../video/background.png
[Checks thumbnail ✓] → file:///Users/.../thumbnails/ru_en/nabokov_uzhas.png
[Checks timeline: has wordcard_start ✓]
[Plays wordcard audio from sentence 100]
[Invokes youtube-metadata skill]
[Builds upload command]

============================================================
UPLOAD PREPARATION CHECKLIST
============================================================
[Full checklist output...]
============================================================

All checks passed! Review the checklist and run the upload command when ready.

Summary

This skill prepares everything for YouTube upload:

  1. Validates all files exist
  2. Verifies languages by checking translations from middle of book
  3. Confirms wordcards are included
  4. Generates metadata via youtube-metadata skill
  5. Builds upload command
  6. Displays comprehensive checklist

User makes final decision to upload.

Related Skills

Looking for an alternative to upload-prepare or building a Categories.community AI Agent? Explore these related open-source MCP Servers.

View All

widget-generator

Logo of f
f

widget-generator is an open-source AI agent skill for creating widget plugins that are injected into prompt feeds on prompts.chat. It supports two rendering modes: standard prompt widgets using default PromptCard styling and custom render widgets built as full React components.

149.6k
0
Design

chat-sdk

Logo of lobehub
lobehub

chat-sdk is a unified TypeScript SDK for building chat bots across multiple platforms, providing a single interface for deploying bot logic.

73.0k
0
Communication

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication