Communitygithub.com

IAmCosmin-YT/emotion-factory-devlog-shorts

Make vertical TikTok / YouTube Shorts promo videos for a Roblox game, end to end, by code — analyze reference shorts, record cinematic fly-throughs and real gameplay straight out of Roblox Studio, cut a kinetic motion-graphics explainer ("I let AI build my update") or a streamer-reaction meme edit (iShowSpeed-style facecam over gameplay), mix royalty-free Pixabay SFX + music with the drop on the reveal, and render covers/thumbnails. Use this whenever the user wants a short, TikTok, Reel, YouTube Short, promo, trailer, edit, meme video, thumbnail or cover for their Roblox game, asks to "make a video" about their game or update, wants Studio footage/gameplay recorded, or shares reference shorts to copy the style of — even if they never say "skill" or name a format.

What is emotion-factory-devlog-shorts?

emotion-factory-devlog-shorts is a Claude Code agent skill that make vertical TikTok / YouTube Shorts promo videos for a Roblox game, end to end, by code — analyze reference shorts, record cinematic fly-throughs and real gameplay straight out of Roblox Studio, cut a kinetic motion-graphics explainer ("I let AI build my update") or a streamer-reaction meme edit (iShowSpeed-style facecam over gameplay), mix royalty-free Pixabay SFX + music with the drop on the reveal, and render covers/thumbnails. Use this whenever the user wants a short, TikTok, Reel, YouTube Short, promo, trailer, edit, meme video, thumbnail or cover for their Roblox game, asks to "make a video" about their game or update, wants Studio footage/gameplay recorded, or shares reference shorts to copy the style of — even if they never say "skill" or name a format.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/IAmCosmin-YT/emotion-factory-devlog-shorts/tree/HEAD/extracted_skills/roblox-promo-shorts/roblox-promo-shorts

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Roblox promo shorts

You produce the whole video yourself: script, footage, edit, audio, cover. The user's job is approving the plan, keeping hands off the PC while you record, and recording a voiceover if they want their own voice. Output is 1080x1920 @60fps H.264, -14 LUFS, plus covers.

Everything here was learned the hard way on a real game (Archer Heroes). The scripts in scripts/ are the working pipeline; copy them into the user's project and edit the clearly marked data blocks rather than rewriting from scratch.

Workflow

  1. Analyze references (if the user shares links) → references/research.md. Download with yt-dlp, make frame sheets, transcribe, and pull view counts. The view counts matter more than the vibes: in testing, a story format got 28M views while a re-post of an already-used stream moment got 34K. Tell the user what actually performs.
  2. Pick the format and write the script with real facts. Read numbers from the place (line counts, enemy counts, drop rates) via Studio MCP; never invent stats. Flag any claim the user must confirm (e.g. "I didn't write a single line").
  3. Record footage from Studio → references/studio-recording.md. Edit-mode camera fly-throughs (Luau-animated camera + ffmpeg screen grab) and real playtest gameplay (admin remotes, wave warps, god mode). Ask the user to bring Studio to the front and not touch input; tell them when they can use the PC again.
  4. Edit with one of the two templates:
    • Motion-graphics explainer → references/explainer.md (scripts/render_explainer.py)
    • Streamer-reaction meme → references/reaction.md (scripts/render_reaction.py)
  5. Audio → references/audio.md. Real samples only (Pixabay / the user's library), music drop on the reveal, ducking under voice, loudnorm -14 LUFS.
  6. Covers: scripts/thumbnail_explainer.py (vertical + 16:9), scripts/thumbnail_reaction.py.
  7. Verify, then deliver: look at stills and a contact sheet, transcribe the final to check caption sync, check loudness, then send the MP4 + covers with SendUserFile.

Toolbox (scripts/driver.py)

python <skill>/scripts/driver.py check                         # ffmpeg, yt-dlp, whisper, demucs, fonts
python <skill>/scripts/driver.py stills <proj> render.py 0.5,6,12   # preview stills -> .promo_out/stills.jpg
python <skill>/scripts/driver.py sheet  video.mp4 2            # contact sheet -> look at it
python <skill>/scripts/driver.py cuts   recording.mp4          # hard-cut times (real PTS)
python <skill>/scripts/driver.py words  final.mp4              # Whisper word stamps (sync check)
python <skill>/scripts/driver.py mux    video.mp4 mix.wav out.mp4   # -14 LUFS upload encode
python <skill>/scripts/driver.py viewport                      # find Studio viewport band on screen
python <skill>/scripts/driver.py grab   take.mp4 40 168 1146   # record that band at 60fps
python <skill>/scripts/music_drops.py track.mp3                # bpm, loudness curve, drop times

Always open the images these produce. A render that "succeeded" can still be all RUN OVER screens, under-the-floor camera, or a name tag you must not publish.

Rules that protect the user

  • No AI voice clones of real people. Don't make a streamer say lines they never said, with ElevenLabs or anything else. Use their real clips (find the original VOD, not another creator's edit) and isolate the voice with Demucs. Suggest labelling meme edits as edits.
  • No synthesized SFX. The user found numpy-synth whooshes/ticks painful ("nails on a blackboard"). Use real samples; warm/low ones (spectral centroid < ~2 kHz) for hits.
  • Downloads need a yes. Before downloading SFX/music, list files, source and rough size, and wait for approval. yt-dlp for reference/source videos is fine when the user asked for it.
  • Don't publish other people's info. Team Create collaborators show up as name tags in edit-mode captures; cut around or blur them.
  • Playtests write to the real save. Admin gear grants/equips persist. Say so and offer to restore the loadout. Restore any place edits (ShowDevelopmentGui, temp stage folders).
  • Don't record the user's desktop while they're using it. Grab the screen only after they say Studio is in front; otherwise use screen_capture stills.

Delivering

Send the upload MP4 and covers with SendUserFile (display: render). In the message: what's in it beat by beat, what's real vs placeholder (e.g. TTS voice), loudness, and the honest caveats (claims to verify, Content ID risk of Pixabay music, profile changes). Offer a one-command rebuild when the user records their own voice (references/explainer.md → "Swapping in the user's voice").

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Related Skills