Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Auto layouts for a Tella clip
Work out what happens in the clip from its transcript, cursor data and frames. Choose the layout the viewer should see most of the time, and add layout changes only where they make a moment clearer or land harder. Then apply them and check the result.
This skill needs the Tella MCP. If tools such as get_timeline are missing, follow the connection steps in the tella skill first.
Scope
Auto layouts is a direct action: apply the layouts, then report what you did. Don't ask for approval first; the user can undo or ask for changes. Ask only when you can't tell which clip is meant.
It replaces the clip's existing layout changes. Keep layouts that carry b-roll media and plan around them. Don't change cuts, zooms, overlays or captions. Add generated b-roll (generate_image, then add_layout with media) only when the user asks for b-roll.
If the user names a style (product demo, tutorial, presentation, intro/outro only) or gives instructions, those win over everything below.
Workflow
- Read the clip.
get_timelinegives the clip's id, playback duration andlayoutSceneType.list_layoutsgives its base layout (withcameraStyle,popOutandcrop) and its sections. Sections withfollowsBase: truejust show the base layout; the others are the current layout changes. The base layout's look is the user's choice: keep its camera style, pop-out, camera shape and crop unless the user asked for a different look.list_saved_layoutsgives the user's Favorite layouts; only those whosesceneTypematches the clip'slayoutSceneType(and, for custom ones, whosecanvasRatiomatches the video) can be used here. - Understand what happens.
get_transcriptfor what is said and when.get_mouse_eventswithtypes: ["clicks"]shows where the screen is being operated.get_storyboardon the clip shows what is on screen and when it changes: cover the clip in windows (80 seconds by default, wider for long clips), then narrow down where something changes. Look at aget_clip_frameto see which way the speaker faces and what the camera covers. A rendered frame shows the camera as the viewer sees it, mirroring included. - Decide the edit using the guidance below: the base layout, then a short list of moments that deserve a change, each with a reason.
- Apply it. If the base becomes a favorite,
apply_saved_layoutwithout a range first. Then oneapply_video_editscall:remove_layoutfor each old layout change,update_layoutonbaseif the base should change, then oneadd_layoutper change. Give every change that frames the camera the base'scameraStyleandpopOut, because a new layout doesn't inherit them.apply_video_editscan't set a crop, so a base with its own crop needs one more step: runlist_layoutsafter the batch and, for each new layout that shows the screen and reports a differentcropfrom the base, callupdate_layoutwith the base'scrop. Changes that use a favorite can't go in the batch: apply each withapply_saved_layoutand a range afterwards, then give it the base'scameraStyle,popOutandcropwithupdate_layoutwhere they differ. A custom favorite (kind: custominlist_layouts) rejectscameraStyle: set the camera's shape withlayout: {kind: "custom", presentation: {shape}}instead, which keeps its geometry (the shape takes the same value as the base'scameraStyle), and send itscropin a separateupdate_layout. Times are ms on the clip's playback timeline, the same as the transcript; each change is at least 200 ms long. - Check it. Using that
list_layouts, runget_clip_framein the middle of the base layout and of the changes that matter most. Fix any camera that covers text, a cursor, a menu or a result, and any change that landed on the wrong words. - Report in a few lines: the base layout, each change with its time and why, and anything you left alone on purpose.
What the viewer should see
At every moment, ask what the viewer should look at:
- The screen when something is happening or being pointed at: a click, typing, a menu, a result appearing, a slide change, code, a chart, or a sentence about what is visible ("this", "here", "as you can see"). Never hide the screen during those moments.
- The speaker for a greeting, a hook, an opinion, a reaction, a joke, a takeaway or a sign-off while the screen is static or unimportant.
- Both for most of everything else, which is what the base layout is for.
The base layout
The base layout is the home shot and carries most of the clip. Pick it for the clip as a whole:
- Screen-led demos and tutorials:
camera-bubbleat size M, in the corner that covers the least. - Talks, pitches and recaps where the speaker matters as much as the slides:
side-by-side(overlaporregular) ortv-presenter. - If the clip already has a deliberate base layout (a camera style, a pop-out, a cut-out presenter, a custom layout), keep it and only add changes.
- Otherwise, if the user has a Favorite layout that suits the clip's base, use it rather than a default: favorites are the user's own look.
Layout changes
A layout change needs a reason a viewer would feel. Most of the clip stays on the base layout, with gaps between changes. Back-to-back changes are for a deliberate mini-sequence, such as a fullscreen camera shot followed by a punch-in on the key phrase. A few well-placed changes per minute at most is plenty, and a static or very short clip may need none. Too many changes is the most common complaint about auto layouts, so when in doubt, leave the base layout.
Useful changes, in the MCP's vocabulary (the add_layout schema lists what each layoutSceneType accepts):
- Screen focus (
screen-only, or the bubble shrunk to size S): dense UI, code, settings or a result that needs full attention. Often 2–8 s, and longer while the detail is being worked through. - Camera cutaway (
camera-onlywithstyle: fullscreen): a strong human moment while the screen is quiet. Usually 2–5 s. - Punch-in (
camera-onlywithpunchIn: true): the strongest words of a cutaway or an opening hook. At least 1.5 s, ideally 2–4 s. - Bubble size accent (the same
camera-bubbleat size L, then back to the base): commentary or a reaction while the screen still matters. - Split or presenter (
side-by-side,tv-presenter): a stretch where both the speaker and a slide or page matter. Avoid them for small text or code.
Where a usable favorite does the same job as one of these (a screen-led favorite for screen focus, a camera-led one for a cutaway), prefer the favorite.
The opening: if the first sentence greets or sets up without needing the screen, a short camera opening works well. If it already refers to something on screen, the screen must be visible from the first frame.
A clip with only a screen or only a camera recording has little to switch between: keep to a handful of punch-ins or focus moments, or leave the base layout alone.
Placement and gaze
Put the camera on the side the speaker faces away from, so they look toward the screen. If they look to the viewer's left, put the camera on the right (position: right for splits and presenters, a right-hand corner for a bubble), and the other way round. If they look straight ahead, choose the side that covers the least important content. Once chosen, keep the side stable: change the size or layout before moving the camera, and move it only when it would cover something the viewer needs.
Transitions
transitionStyle sets how a layout enters: hardCut or spring (animated).
- Use
hardCutbetween fundamentally different full-frame shots (screen-only to camera-only and back), and into a short camera cutaway. - Use
springfor bubble size changes, split and presenter changes, and a gradual push into a punch-in. - A punch-in can
hardCutfor a quick, decisive beat, orspringwhen the same thought builds.
A change exits with the transitionStyle of the layout that follows it, often a base section (followsBase: true). After a full-frame camera change, check that layout in list_layouts and set it to hardCut with update_layout when the return to the screen would otherwise animate.
If something goes wrong
If apply_video_edits fails, nothing was changed: fix the operation it names and send the batch again. If a call's outcome is unclear, run list_layouts before retrying, and never add the same layouts twice. To start over, remove the clip's layout changes and apply the plan again.

