{
 "recipe": "short-video",
 "version": "0.3",
 "status": "test-built",
 "snapshot": "2026-10-12",
 "answers": {
  "use": "commercial",
  "budget": "free",
  "credit": "ok",
  "agent": "claude-code",
  "voice": "local",
  "publish": "file",
  "monetize": "no",
  "text_lang": "en"
 },
 "tested": {
  "on": "2026-10-12",
  "same_parts": true,
  "differs_in": []
 },
 "parts": [
  {
   "role": "runtime",
   "name": "Runtime",
   "pick": "x:python312",
   "title": "Python 3.12",
   "url": "https://www.python.org/downloads/",
   "version": null,
   "kind": null,
   "reach": "builtin",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "script",
   "name": "Script writing",
   "pick": "x:agent-writes-script",
   "title": "Your coding agent writes the scripts",
   "url": null,
   "version": null,
   "kind": null,
   "reach": "builtin",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "voice",
   "name": "Voiceover",
   "pick": "asset:kokoro",
   "title": "Kokoro-82M",
   "url": "https://agentgid.com/assets/kokoro/",
   "version": "0.9.4",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": [
    "asset:chatterbox",
    "asset:piper",
    "asset:amazon-polly",
    "asset:google-cloud-tts"
   ]
  },
  {
   "role": "captions",
   "name": "Caption timing",
   "pick": "tool:faster-whisper",
   "title": "Faster Whisper",
   "url": "https://agentgid.com/tools/faster-whisper/",
   "version": "1.2.1",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": [
    "api:assemblyai",
    "api:groq-speech",
    "tool:openai-whisper"
   ]
  },
  {
   "role": "render",
   "name": "Video assembly",
   "pick": "asset:moviepy",
   "title": "MoviePy",
   "url": "https://agentgid.com/assets/moviepy/",
   "version": "2.2.1",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": [
    "asset:ffmpeg"
   ]
  },
  {
   "role": "images",
   "name": "Image handling",
   "pick": "tool:pillow",
   "title": "Pillow",
   "url": "https://agentgid.com/tools/pillow/",
   "version": "10.4 to 11.1",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "footage",
   "name": "Stock footage",
   "pick": "asset:pixabay",
   "title": "Pixabay",
   "url": "https://agentgid.com/assets/pixabay/",
   "version": null,
   "kind": null,
   "reach": "api",
   "warnings": [
    "Asks for a credit in products that call its API while running.",
    "Do not scrape its website. Use its API, one request at a time, and download only the files you use."
   ],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": [
    "asset:coverr",
    "asset:nasa-images"
   ]
  },
  {
   "role": "font",
   "name": "Caption font",
   "pick": "asset:google-fonts",
   "title": "Google Fonts",
   "url": "https://agentgid.com/assets/google-fonts/",
   "version": null,
   "kind": null,
   "reach": "api",
   "warnings": [],
   "chosen_by": "recipe",
   "item": {
    "id": "item:gfont-poppins",
    "name": "Poppins",
    "url": "https://fonts.google.com/specimen/Poppins",
    "license": "OFL-1.1"
   },
   "alternatives": [
    "asset:fontsource",
    "asset:firacode",
    "asset:hack",
    "asset:bunny-fonts"
   ]
  },
  {
   "role": "knowledge",
   "name": "Library knowledge",
   "pick": "mcp:context7",
   "title": "Context7",
   "url": "https://agentgid.com/mcp/servers/io-github-upstash-context7/",
   "version": "4.3.0",
   "kind": null,
   "reach": "mcp",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "data",
   "name": "Tool and asset data",
   "pick": "mcp:agentgid",
   "title": "AgentGid",
   "url": "https://agentgid.com/connect/",
   "version": null,
   "kind": null,
   "reach": "mcp",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "tool:requests-py",
   "title": "Requests",
   "url": "https://agentgid.com/tools/requests-py/",
   "version": "2.34.2",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "tool:python-dotenv",
   "title": "python-dotenv",
   "url": "https://agentgid.com/tools/python-dotenv/",
   "version": "1.2.4",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "tool:pytest",
   "title": "pytest",
   "url": "https://agentgid.com/tools/pytest/",
   "version": "9.1.1",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "tool:soundfile",
   "title": "SoundFile",
   "url": "https://agentgid.com/tools/soundfile/",
   "version": "0.14.0",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "x:pyav",
   "title": "PyAV",
   "url": "https://agentgid.com/tools/av/",
   "version": "below 19",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  },
  {
   "role": "also",
   "name": "Also",
   "pick": "tool:numpy",
   "title": "NumPy",
   "url": "https://agentgid.com/tools/numpy/",
   "version": "below 2.5",
   "kind": "pip",
   "reach": "package",
   "warnings": [],
   "chosen_by": "recipe",
   "item": null,
   "alternatives": []
  }
 ],
 "install": [
  "# system packages (use your OS package manager)",
  "ffmpeg",
  "",
  "python3.12 -m venv .venv && source .venv/bin/activate   # with uv: uv venv --python 3.12 .venv && source .venv/bin/activate, then write \"uv pip install\" below",
  "python --version   # must print 3.12.x",
  "# no NVIDIA GPU: run the next line first (CPU-only PyTorch, about 2 GB less to download). With an NVIDIA GPU, skip it.",
  "pip install torch --index-url https://download.pytorch.org/whl/cpu",
  "pip install kokoro==0.9.4 faster-whisper==1.2.1 moviepy==2.2.1 \"pillow>=10.4,<11.2\" requests==2.34.2 python-dotenv==1.2.4 pytest==9.1.1 soundfile==0.14.0 \"av<19\" \"numpy<2.5\""
 ],
 "checks": [
  {
   "level": "info",
   "text": "Pillow is pinned to 10.4 to 11.1. moviepy 2.2.1 accepts pillow >=9.2.0 and <12.0, but with 11.2 or newer its captions are cut off at the bottom. The pin installs 11.1.0 today.",
   "source": "https://pypi.org/pypi/moviepy/json"
  },
  {
   "level": "info",
   "text": "numpy is pinned below 2.5: with 2.5, moviepy 2.2.1 prints a DeprecationWarning for every decoded frame.",
   "source": "https://pypi.org/pypi/numpy/json"
  },
  {
   "level": "info",
   "text": "PyAV is pinned below 19: faster-whisper 1.2.1 passes an argument to `av.open` that PyAV 19 removed, and there is no newer faster-whisper yet.",
   "source": "https://raw.githubusercontent.com/PyAV-Org/PyAV/main/CHANGELOG.rst"
  },
  {
   "level": "info",
   "text": "Use Python 3.12. kokoro 0.9.4 requires Python <3.13,>=3.10. pip refuses a newer interpreter; uv does not.",
   "source": "https://pypi.org/pypi/kokoro/json"
  },
  {
   "level": "info",
   "text": "Kokoro pulls in PyTorch and over a hundred packages: about 3 GB with the default GPU wheels, about 1.7 GB with CPU-only PyTorch. First run downloads a voice model of about 330 MB.",
   "source": "https://pypi.org/pypi/kokoro/json"
  }
 ],
 "summary": {
  "parts": 16,
  "roles": 10,
  "fromAgentGid": 14,
  "collected": 2,
  "manual": [],
  "credits": [],
  "paid": [],
  "free": true,
  "blocks": 0,
  "warns": 0,
  "assets": 4,
  "cleared": 3,
  "byHand": []
 }
}
