Camcorder HUD
Make a Tella video look like a home-video recording on an old camcorder by adding a viewfinder HUD over the whole video: white corner brackets, a blinking red REC, SP with a battery icon, a tape counter and a running clock above a date stamp, all in the VT323 pixel font. Built as editable Tella Motion overlays, one per clip, timed so the counter, clock and blink run on across cuts. Works in 16:9 and 9:16. Use when asked for a camcorder, camcorder HUD, home video, homevideo, found-footage, handycam or 'old cam' look, a REC overlay, or a viewfinder overlay. Needs the Tella Motion tools.

Use it in Tella
- Open any video in Tella, then open the AI chat.
- Paste the skill:
tellahq/community-skills/camcorder-hud - Then ask for what you want, for example:
Make this video look like it was filmed on an old camcorder, with a REC light, tape counter and date stamp.
Use it in Claude Code
Add it to Claude Code, or any agent that reads skills:
npx skills add tellahq/community-skills --skill camcorder-hudInstructions
What the AI chat follows when the skill is pasted, from its SKILL.md.
Camcorder HUD
Adds a camcorder viewfinder over every clip of a video, so it looks like a home video shot on an old camcorder. See references/reference-landscape.jpg for the finished look on a 16:9 video.
The look
- Corners: thin white viewfinder brackets near each corner.
- Top left: a red dot that blinks (on for the first half of every second, off for the second half), followed by REC.
- Top right: SP, then a battery outline with three bars and a nub.
- Bottom left: a tape counter (0:00:00) that ticks up once a second.
- Bottom right: a running clock (11:47:03 PM) above a date stamp (OCT. 31 2026).
- Type: everything is white VT323, a free Google pixel font under the OFL licence. There's no shadow, outline, grain or scanlines.
- The footage is not touched. The HUD is graphics only: no VHS noise, colour bleed or film texture on the footage, unless the user asks for it explicitly.
- Timing: the counter, clock and blink are timed on whole-video time, so they carry on across cuts without a jump.
Steps
- Read the video. Call
get_timeline(video dimensions, and each clip'stimelineStartMsanddurationMs). Look at a filmstrip so you know what's on screen. Read the timeline again right before building: the user may trim clips while you work. - Ask only what matters. Fill in the defaults: date
OCT. 31 2026, start clock23:47:03, counter from 0:00:00. A spooky or late-night video suits the default. Otherwise offer today's date in the sameMMM. DD YYYYuppercase format. Don't ask about the font or the layout. - Font. Check whether VT323 is already in the library:
list_librarywithtype: 'font'(look for a family or name of VT323). If it's not there:curl -sfL -o VT323-Regular.ttf https://github.com/google/fonts/raw/main/ofl/vt323/VT323-Regular.ttfcreate_sourcewithkind: 'font', thencurl -sf -T VT323-Regular.ttf "<uploadUrl>"add_library_item(named VT323). Its itemid(mi_...) is the--font-id.- Tell the user the font was added to their library.
- Build one Tella Motion document per clip. An overlay can't span clips, and a document plays in one place only. For each clip:
create_motion_documentwith thevideoId, namedCamcorder HUD <n>.- Run
scripts/camcorder_hud.pywith that clip's start and duration, for example:python3 scripts/camcorder_hud.py --width 1920 --height 1080 --clip-start-ms <timelineStartMs> --clip-duration-ms <durationMs> --font-id <mi_...> --date "OCT. 31 2026" --clock 23:47:03 --out hud_<n>.json - Apply it with
apply_motion_editor_commandswithcommandsFileset to that JSON path. The script sets the canvas size and length, and lays out landscape and portrait automatically: everything is scaled to the short side, and the bottom elements sit above the bottom brackets.
- Place them. Add every overlay in one
apply_video_editscall, with oneadd_media_overlayper clip:sourceId: the document'sffd_...idstartTimeMs0,durationMsthe clip's durationpoint{xPct 0, yPct 0},dimensionsthe full video width and heighttransitionhard_cut,depthfrontOverlays added after existing ones stack on top of them, so the HUD stays above picture-in-picture videos.
- Check. Call
get_filmstripat about 0.1 s before and after several cuts, plus a few frames mid-clip:- the counter and clock don't jump at a cut
- the dot is on in the first half of each second and off in the second half
- nothing is clipped at the frame edges
- the HUD sits above any other overlay
Then look at one full-size frame (
get_clip_frame, 1280 wide) to check the dot lines up with REC.
- Report. Tell the user the date and clock you used, that there's one "Camcorder HUD" overlay per clip, and that if a clip's length changes later, the counter and clock after it drift until that clip's HUD is rebuilt.
Changing it later
- Date:
setTitleon nodedatein every HUD document. - Clock, counter or a trimmed clip: run the script again for the clips from the change onwards. In each document, delete the old nodes (or make a fresh document and swap the overlay), apply the new commands, and set the overlay's
durationMsto the clip's new length. - Changing to 9:16 (or any new size): rebuild every document at the new
--width/--heightand replace the overlays. Don't stretch the landscape ones. - Text in the video: keep subtitles and text overlays clear of the bottom corners where the counter and clock sit. Centre them, or place them between the two.
Node ids in each document
brackets, rec.dot, rec.label, sp, batt.body, batt.nub, batt.bar0-batt.bar2, date, and one counter.<s> and one clock.<s> per whole-video second <s> that the clip covers.
Files
The other files in the skill, such as reference videos it copies from.