Endpoint
Setup
- Claude Code
- Claude Desktop
- Cursor
- Codex
Authentication
The MCP server uses OAuth 2.1 for authentication. When you first connect, you’ll be redirected to Tella to authorize access. The connection uses your Tella account permissions — you can only access videos and playlists in workspaces you belong to.Managing videos
Organize and share your workspace: list and update videos, manage playlists and tags, control access, and export finished videos.Videos
list_videos
list_videos
cursor(optional): Pagination cursor from previous responselimit(optional): Items per page (1-100, default: 20)playlistId(optional): Filter videos by playlisttagIds(optional): Filter videos by tag IDs, comma-separated. Multiple tags are combined with AND. Ignored whenplaylistIdis set
get_video
get_video
id(required): Video IDincludeTranscript(optional): Include transcript textincludeChapters(optional): Include chapter markersincludeThumbnails(optional): Include thumbnail URLsincludeExports(optional): Include export status
create_video
create_video
create_source first (kind: "video"), PUT the bytes to the returned uploadUrl, then pass the sourceId here — it becomes the new video’s first clip.Parameters:sourceId(required): Source ID fromcreate_source(kind: "video")- All
update_videosettings exceptid—name,description,playbackRate,captionsEnabled,transcriptEnabled,commentsEnabled,downloadsEnabled,linkScope,password,searchEngineIndexingEnabled,studioSound, anddimensions— to configure the new video in the same call. Whendimensionsis omitted, the canvas is sized from the uploaded video.
update_video
update_video
id(required): Video IDname(optional): Video titledescription(optional): Video descriptionplaybackRate(optional): Default playback speed (0.5-2.0)captionsEnabled(optional): Show captions by defaulttranscriptEnabled(optional): Show transcript tabcommentsEnabled(optional): Allow commentsdownloadsEnabled(optional): Allow downloadslinkScope(optional): Access level —public,private,password, orembedonlypassword(optional): Password for protected videossearchEngineIndexingEnabled(optional): Allow search engine indexingstudioSound(optional): Studio Sound (AI audio enhancement) master switch. Enabling it also starts generating the enhanced audio tracks in the background; playback and exports fall back to raw audio until they are ready. Individual clips can opt out viaupdate_clip’sstudioSound.dimensions(optional): Canvas size in pixels as{ width, height }(each 16–4096). Changing it remaps every clip and section layout to a ratio-appropriate equivalent — the same transform as switching size in the editor’s Setup → Size. Editor presets:1920x1080(16:9),1920x1200(16:10),1440x1080(4:3),1080x1080(1:1),1080x1350(4:5),1080x1920(9:16). No-op when the video already has the requested size.
delete_video
delete_video
id(required): Video ID
duplicate_video
duplicate_video
id(required): Video ID to duplicatename(optional): Name for the duplicatestartTime(optional): Trim start time in seconds (use with endTime)endTime(optional): Trim end time in seconds (use with startTime)chapterIndex(optional): Extract a specific chapter by 0-based index (cannot be combined with startTime/endTime)
export_video
export_video
get_export_status to poll until the export completes or fails.Returns an export object. Pass its exportId value to get_export_status.Parameters:id(required): Video IDgranularity(optional):video(full video, default),clips(one file per clip), orraw(raw recordings)resolution(optional):4kfor 4K; omit for defaultfps(optional): Frames per second —30or60subtitles(optional): Burn in subtitlesspeed(optional): Playback speed —0.5,0.75,1,1.25,1.5,1.75, or2
get_export_status
get_export_status
export_video until export.status is completed or failed; export.downloadUrl appears when the export is ready.Parameters:id(required): Video IDexportId(required): Theexport.exportIdvalue returned byexport_video
add_collaborator_to_video
add_collaborator_to_video
id(required): Video IDemail(required): Email address of the user to addrole(required): Role to grant —editororviewer
update_collaborator_on_video
update_collaborator_on_video
id(required): Video IDuserId(required): User ID of the collaboratorrole(required): New role —editororviewer
remove_collaborator_from_video
remove_collaborator_from_video
id(required): Video IDuserId(required): User ID of the collaborator to remove
Playlists
list_playlists
list_playlists
visibility(optional): Filter bypersonalororgcursor(optional): Pagination cursorlimit(optional): Items per page (1-100, default: 20)
create_playlist
create_playlist
name(required): Playlist namedescription(optional): Playlist descriptionemoji(optional): Emoji iconvisibility(optional):personalororglinkScope(optional): Access level —public,private, orpasswordpassword(optional): Password for protected playlists
get_playlist
get_playlist
id(required): Playlist ID
update_playlist
update_playlist
id(required): Playlist IDname(optional): Playlist namedescription(optional): Playlist descriptionemoji(optional): Emoji iconlinkScope(optional): Access levelpassword(optional): Password for protected playlistssearchEngineIndexingEnabled(optional): Allow search engine indexing
delete_playlist
delete_playlist
id(required): Playlist ID
add_video_to_playlist
add_video_to_playlist
playlistId(required): Playlist IDvideoId(required): Video ID to add
remove_video_from_playlist
remove_video_from_playlist
playlistId(required): Playlist IDvideoId(required): Video ID to remove
list_playlist_groups
list_playlist_groups
visibility(optional): Filter bypersonalororg
create_playlist_group
create_playlist_group
name(required): Group nameemoji(optional): Emoji iconvisibility(optional):personalororg. Defaults topersonal
update_playlist_group
update_playlist_group
id(required): Playlist group IDname(optional): New group nameemoji(optional): Emoji iconposition(optional): 0-based position in the sidebar section
delete_playlist_group
delete_playlist_group
id(required): Playlist group ID
move_playlist_to_group
move_playlist_to_group
playlistId(required): Playlist IDgroupId(optional): Target playlist group ID. Omit it to remove the playlist from its groupposition(optional): 0-based position in the target group, or in the ungrouped sidebar section whengroupIdis omitted
Tags
Tags categorize videos across your library. Workspace tags are shared with everyone in the workspace; private tags are only visible to you. Filter your library by tag withlist_videos’ tagIds parameter.
create_tag
create_tag
name(required): Tag namescope(optional): Tag visibility —workspace(default) orprivatecolor(optional): Tag color as a hex value, e.g.#6366f1description(optional): Tag description
update_tag
update_tag
id(required): Tag IDname(optional): New tag namecolor(optional): New tag color as a hex value, e.g.#6366f1description(optional): New tag description
delete_tag
delete_tag
id(required): Tag ID
add_video_tag
add_video_tag
videoId(required): Video IDtagId(required): Tag ID
remove_video_tag
remove_video_tag
videoId(required): Video IDtagId(required): Tag ID
Editing videos
Build and refine the video itself: upload sources, add and cut clips, apply layouts, and add zooms, blurs, highlights, overlays, and sound effects.Sources
A source is an uploaded file (video, audio, or image) that can be turned into a new video or clip, or referenced as B-roll media, an overlay, a clip background, background music, or a sound effect. Create a source, upload the bytes to the returned pre-signed URL, then reference thesourceId from create_video, upload_clip, add_layout / update_layout, add_overlay, update_clip, set_background_music, or add_sound_effect.
create_source
create_source
sourceId and a pre-signed uploadUrl — PUT the file bytes to uploadUrl (the URL expires after 1 hour). Once uploaded, the sourceId can be used by create_video (video only, to create a new video), by upload_clip (video only, to add a new clip), by add_layout / update_layout (as B-roll media), by add_overlay, by update_clip (as an image/video background), by set_background_music (audio only), or by add_sound_effect (audio only).Upload the file as-is: any common container is accepted (MP4, MOV, WebM, MP3, WAV, M4A, …). The .mp4 in the upload URL is just the storage key, not a container requirement — there’s no need to remux or re-encode before uploading.For audio files, set kind: "audio" with the audio’s duration and omit width / height.For images, set kind: "image" and omit duration. Tella hosts the uploaded image for rendering — you never deal with raw image URLs.Parameters:kind(optional): Source kind —video(default),audio, orimagewidth(video/image): Width in pixels — required forvideoandimage, omit foraudioheight(video/image): Height in pixels — required forvideoandimage, omit foraudioduration(video/audio): Duration in seconds — required forvideoandaudio, ignored forimage
Clips
A clip is a section of a video — Tella videos are made up of one or more clips. Each clip has its own cuts, layouts, transcript, and editing tools.get_transcript and thumbnails. No conversions needed. The one exception is stored cut definitions (get_clip’s cuts / update_clip’s cuts), which describe removed ranges of the raw recording; cuts are always undoable by replacing them with [].upload_clip
upload_clip
create_source first, PUT the bytes to the returned uploadUrl, then pass the sourceId here.Parameters:videoId(required): Video IDsourceId(required): Source ID returned bycreate_sourcename(optional): Clip name. Defaults to the nextClip N.
list_clips
list_clips
videoId(required): Video ID
get_clip
get_clip
videoId(required): Video IDid(required): Clip ID
update_clip
update_clip
videoId(required): Video IDid(required): Clip IDname(optional): New clip nameorder(optional): New position within the videocuts(optional): Replaces the clip’s full cut set. Each cut is{startTimeMs, durationMs}in ms of the raw recording (the playback timeline you’d get after clearing all cuts). Pass[]to clear all cuts. To cut what you currently see, usecut_clipinstead.background(optional): Background{type, color?, sourceId?, gradientColor1?, gradientColor2?, gradientAngle?}.typeis one ofsolid,image,video,gradient. Forimageandvideo, pass asourceIdfromcreate_source(kind: "image"orkind: "video").studioSound(optional): Per-clip Studio Sound opt-out.falsedisables enhanced audio for this clip while the video-level switch (update_video’sstudioSound) stays on;truere-enables it.
delete_clip
delete_clip
videoId(required): Video IDid(required): Clip ID
duplicate_clip
duplicate_clip
videoId(required): Video IDid(required): Clip ID to duplicatename(optional): Name for the new cliporder(optional): Position for the new clip
reorder_clip
reorder_clip
videoId(required): Video IDid(required): Clip IDorder(required): New 0-based position
cut_clip
cut_clip
update_clip with cuts: [].Parameters:videoId(required): Video IDid(required): Clip IDcuts(required): Array of{fromMs, toMs}ranges to cut, in ms on the clip’s playback timeline (what you currently see and hear — the same timeline asget_transcriptandget_silences). All ranges are resolved against the playback timeline as it is when the call starts, so send every range in one call instead of issuing manycut_clipcalls.
cut_clip_by_transcript
cut_clip_by_transcript
get_transcript to look up word indices.Parameters:videoId(required): Video IDid(required): Clip IDwordRanges(required): Array of{fromWordIndex, toWordIndex}ranges. Both indices are inclusive and come from the clip’s transcript (indices are stable — already-cut words are simply absent).
get_silences
get_silences
cut_clip. Silences already removed by cuts are not reported.Parameters:videoId(required): Video IDid(required): Clip IDminDurationMs(optional): Minimum silence length to report, in ms. Defaults to 200.
remove_fillers
remove_fillers
videoId(required): Video IDid(required): Clip ID
remove_silences
remove_silences
videoId(required): Video IDid(required): Clip IDmode(optional): How aggressively to remove silences —naturalcuts pauses longer than 800ms,fastlonger than 500ms,fasterlonger than 300ms. Defaults tonatural.
list_sources
list_sources
videoId(required): Video IDid(required): Clip ID
get_clip_thumbnail
get_clip_thumbnail
mp4 returns a URL only.Parameters:videoId(required): Video IDid(required): Clip IDformat(optional):jpg(default),png,webp,gif, ormp4inpointMs(optional): Frame offset in ms on the clip’s playback timeline, cuts applied (default 0)durationMs(optional): Duration of the animated preview. Only valid whenformatisgiformp4.width(optional): Output width in pixels (default 320). The thumbnail keeps the video’s aspect ratio.height(optional): Output height in pixels. Derived from the video’s aspect ratio when omitted.download(optional): Suggest a download disposition on the signed URL
code: "thumbnail_not_ready" and status: "processing" instead of an image — retry once the video finishes processing. Other upstream failures return code: "thumbnail_fetch_failed" with a signed URL to fetch manually.get_video_thumbnail
get_video_thumbnail
get_clip_thumbnail. It also returns the same thumbnail_not_ready processing result while the video is still being processed.Parameters:id(required): Video IDformat(optional):jpg,png,webp,gif, ormp4inpointMs(optional): Frame offset in ms from the video’s playback start (cumulative across clips, cuts applied)durationMs(optional): Duration of the animated preview (gif/mp4 only)width/height(optional): Output dimensions
set_video_thumbnail
set_video_thumbnail
- Uploaded image: call
create_sourcewithkind: "image", HTTP PUT the image bytes to the returneduploadUrl, then pass thesourceIdhere. - Frame from the video: pass
inpointMs, a time on the video’s playback timeline (cuts applied, cumulative across clips). Preview candidate frames first withget_video_thumbnailusing the sameinpointMs.
id(required): Video IDsourceId(optional): Uploaded image source IDinpointMs(optional): Thumbnail frame time in ms
remove_video_thumbnail
remove_video_thumbnail
id(required): Video ID
get_source_thumbnail
get_source_thumbnail
videoId(required): Video IDclipId(required): Clip IDsourceId(required): Source recording IDformat(optional):jpg,png,webp,gif, ormp4inpointMs(optional): Frame offset from the source’s startdurationMs(optional): Duration of the animated preview (gif/mp4 only)width/height(optional): Output dimensions
get_source_waveform
get_source_waveform
videoId(required): Video IDclipId(required): Clip IDsourceId(required): Source recording ID
get_transcript
get_transcript
cut_clip_by_transcript; they don’t shift when cuts change. To see words that were cut out, clear the cuts first (update_clip with cuts: []) — cuts are always undoable.Parameters:videoId(required): Video IDid(required): Clip ID
Layouts
A layout decides how a clip’s camera and screen layers are composed at a given time. Apply a layout to the whole clip (nostartTimeMs/durationMs) or to a specific time range. Times are in ms on the clip’s playback timeline (cuts applied). Read the clip first to see its layoutSceneType — that determines which kind values are valid.
The layout field is a structured object discriminated by kind:
list_layouts
list_layouts
videoId(required): Video IDid(required): Clip ID
add_layout
add_layout
startTimeMs + durationMs for a time range, or omit both for a clip-spanning layout. To add b-roll, give a time range and set media — you can omit layout and the server applies a full-frame b-roll layout suited to the clip automatically (screen-only for combi clips, fullscreen for basic/camera-subject clips). To use a specific layout instead, pass layout with a kind valid for the clip’s scene type (see the table above).Parameters:-
videoId(required): Video ID -
id(required): Clip ID -
layout(optional): Structured layout object (see table above). Omit it to apply the default full-frame b-roll layout for the clip’s scene type. -
startTimeMs(optional): Start time in ms on the clip’s playback timeline (cuts applied) -
durationMs(optional): Duration in ms. Minimum 200ms. -
transitionStyle(optional): Transition into the layout —springorhardCut. Only valid on time-ranged layouts. When omitted, the user’s saved layout intro transition is used; the saved outro transition is applied when the following layout begins or resumes. -
media(optional): B-roll content displayed during the layout. Only valid on time-ranged layouts. Either:{type: "image", sourceId}for an image, or{type: "video", sourceId}for a video.
sourceIdcomes fromcreate_source(kind: "image"orkind: "video") after you upload the bytes. Add an optionalslotto choose which slot the media fills:screen(the main subject frame — the default) orcamera(the bubble/presentation slot, a media bubble shown over the recording behind it). Each slot needs a layout that renders it: thescreenslot (default) requires a layout that shows the screen frame — notcamera-onlyor any*-camera-only-*variant — and thecameraslot requires a layout that renders the camera (e.g.camera-bubble,side-by-side,tv-presenter). Pointing media at a slot the layout doesn’t show is rejected. One call fills one slot; a section can hold media in both slots by adding to one slot here and the other withupdate_layout.
update_layout
update_layout
videoId(required): Video IDid(required): Clip IDlayoutId(required): Layout ID (usebasefor the clip-spanning layout)layout(optional): New structured layoutstartTimeMs(optional): New start time in ms on the clip’s playback timeline (cuts applied)durationMs(optional): New duration in ms. Minimum 200ms.transitionStyle(optional):springorhardCut. Rejected on the base layout.media(optional): Set the layout’s B-roll content for one slot. Rejected on the base layout. Same shape asadd_layout’smedia, including the optionalslotfield. Additive per slot: media in the other slot is preserved, and media already in the targeted slot is replaced.
remove_layout
remove_layout
update_layout to change the base layout.Parameters:videoId(required): Video IDid(required): Clip IDlayoutId(required): Layout ID
generate_auto_layouts
generate_auto_layouts
style), sets the clip’s base layout, and adds time-ranged layout changes. Generation watches the actual video, so this can take on the order of a minute for longer clips.Parameters:videoId(required): Video IDid(required): Clip IDstyle(optional): Editing style guiding the AI’s layout choices — one ofproduct-demo-portrait,product-demo-round,product-demo-square,product-demo-wide,presentation-tv-show,presentation-portrait,tutorial-round,tutorial-square,intro,outro,intro-and-outro. Omit to let the AI pick one based on the clip’s content.instructions(optional): Free-form guidance for the AI, e.g. “keep the camera visible the whole time” or “punch in whenever a menu is opened”.
Background Music
Set one story-level audio track that loops over the whole video and is included in exports. This is separate from per-clip sound effects. Volume ranges from 0 to 1 and defaults to 0.2.set_background_music
set_background_music
create_source first (kind: "audio" with the track’s duration), PUT the audio bytes to the returned uploadUrl, then pass the sourceId here.Parameters:videoId(required): Video IDsourceId(required): Audio source ID fromcreate_source(kind: "audio")volume(optional): Volume from 0 to 1 (default 0.2)name(optional): Display name for the track
remove_background_music
remove_background_music
videoId(required): Video ID
Zooms
Zoom into a specific point on the clip’s screen layer for a time range (the camera is unaffected). UsemanualZoom for a fixed focus point or trackingZoom to follow the cursor in the screen recording. Times are in ms on the clip’s playback timeline (cuts applied).
list_zooms
list_zooms
videoId(required): Video IDid(required): Clip ID
add_zoom
add_zoom
videoId(required): Video IDid(required): Clip IDtype(required):manualZoomortrackingZoomstartTimeMs(required): Start time in ms on the clip’s playback timeline (cuts applied)durationMs(required): Duration in msfocusPoint: Required formanualZoom(rejected if missing); ignored fortrackingZoom. Percentages —{xPct, yPct}(0-100).scale(required): Magnification factor (1 = no zoom, 3.5 = max). A zoom without a scale cannot be rendered.
update_zoom
update_zoom
videoId(required): Video IDid(required): Clip IDzoomId(required): Zoom IDtype(optional):manualZoomortrackingZoomstartTimeMs(optional): New start time in ms on the clip’s playback timeline (cuts applied)durationMs(optional): New durationfocusPoint(optional): New focus pointscale(optional): New magnification
remove_zoom
remove_zoom
videoId(required): Video IDid(required): Clip IDzoomId(required): Zoom ID
generate_auto_zooms
generate_auto_zooms
videoId(required): Video IDid(required): Clip IDintensity(optional): How aggressively to zoom —slow,medium(default), orfast.slowopens fewer, longer windows;fastopens shorter, tighter ones at a higher scale.scale(optional): Override the magnification factor (1 = no zoom, 3.5 = max). Defaults to the intensity preset’s scale (1.5 for slow/medium, 2 for fast).replaceExisting(optional): Defaults totrue— existing tracking zooms are removed first. Passfalseto keep them.
Blurs and highlights
Mask a rectangular region of the clip’s screen layer to either blur it (hide sensitive info) or highlight it (draw attention). Both share the same shape: a rectangle defined by a top-leftpoint and dimensions, both in percentages. Times are in ms on the clip’s playback timeline (cuts applied).
list_blurs / list_highlights
list_blurs / list_highlights
videoId(required): Video IDid(required): Clip ID
add_blur / add_highlight
add_blur / add_highlight
videoId(required): Video IDid(required): Clip IDstartTimeMs(required): Start time in ms on the clip’s playback timeline (cuts applied)durationMs(required): Duration in mspoint(required): Top-left corner —{xPct, yPct}(0-100)dimensions(required): Rectangle size —{widthPct, heightPct}(0-100)
update_blur / update_highlight
update_blur / update_highlight
videoId(required): Video IDid(required): Clip IDmaskId(required): Mask IDstartTimeMs(optional): New start time in ms on the clip’s playback timeline (cuts applied)durationMs(optional): New durationpoint(optional): New top-leftdimensions(optional): New size
remove_blur / remove_highlight
remove_blur / remove_highlight
videoId(required): Video IDid(required): Clip IDmaskId(required): Mask ID
Overlays
Place an image or video on top of a clip for a time range. Both reference asourceId from create_source (kind: "image" or kind: "video" — upload the bytes first); the overlay type follows the source’s kind. Position uses a percentage point (so it survives ratio changes) and a pixel dimensions box (so the shape never distorts).
startTimeMs and durationMs are milliseconds on the clip’s playback timeline (with cuts applied) — the same timeline as the cut transcript. A start at or past the end of the clip is rejected with a 400.list_overlays
list_overlays
videoId(required): Video IDid(required): Clip ID
add_overlay
add_overlay
create_source first (kind: "image" or kind: "video"), PUT the bytes, then pass the returned sourceId — the overlay type follows the source’s kind. When point/dimensions are omitted, a centered box is computed from the source.Parameters:videoId(required): Video IDid(required): Clip IDstartTimeMs(required): Start time in ms on the clip playback timeline (with cuts applied), the same timeline as the cut transcriptdurationMs(required): Duration in mssourceId(required): Source ID fromcreate_sourcename(optional): Overlay namepoint(optional): Top-left corner —{xPct, yPct}(0-100), as a percentage of the story canvasdimensions(optional): Overlay size in artboard pixels —{width, height}
update_overlay
update_overlay
videoId(required): Video IDid(required): Clip IDoverlayId(required): Overlay IDstartTimeMs(optional): New start time in ms on the clip playback timeline (with cuts applied)durationMs(optional): New duration in msname(optional): Overlay namepoint(optional): New top-left —{xPct, yPct}(0-100)dimensions(optional): New size in artboard pixels —{width, height}
remove_overlay
remove_overlay
videoId(required): Video IDid(required): Clip IDoverlayId(required): Overlay ID
Sound effects
Add an audio clip to play over a clip for a time range. Upload the audio withcreate_source first (kind: "audio" with the audio’s duration), then reference the returned sourceId. Upload the audio file as-is — MP3, WAV, M4A, and other common formats are accepted; no need to wrap it in an MP4.
startTimeMs and durationMs are milliseconds on the clip’s playback timeline (with cuts applied) — the same timeline as the cut transcript. A start at or past the end of the clip is rejected with a 400.list_sound_effects
list_sound_effects
videoId(required): Video IDid(required): Clip ID
add_sound_effect
add_sound_effect
create_source first (kind: "audio" with the audio’s duration), PUT the audio file as-is (MP3, WAV, M4A, …) to the returned uploadUrl, then pass the sourceId here.Parameters:videoId(required): Video IDid(required): Clip IDsourceId(required): Source ID for the audio (fromcreate_source)startTimeMs(required): Start time in ms on the clip playback timeline (with cuts applied), the same timeline as the cut transcriptdurationMs(required): Duration in msname(optional): Sound effect namevolume(optional): Playback volume (0 = muted, 1 = original). Defaults to 1.
update_sound_effect
update_sound_effect
videoId(required): Video IDid(required): Clip IDsoundEffectId(required): Sound effect IDstartTimeMs(optional): New start time in ms on the clip playback timeline (with cuts applied)durationMs(optional): New duration in msname(optional): Sound effect namevolume(optional): Playback volume (0 = muted, 1 = original)
remove_sound_effect
remove_sound_effect
videoId(required): Video IDid(required): Clip IDsoundEffectId(required): Sound effect ID
Example prompts
Once connected, you can ask your AI assistant things like:- “List all my Tella videos”
- “Get the transcript for video xyz”
- “Create a playlist called ‘Product Updates’ and add my latest 3 videos”
- “Create a ‘Customer facing’ tag and add it to my demo videos”
- “Show me all videos tagged ‘Onboarding’”
- “Make my onboarding video public and enable downloads”
- “Trim the first 5 seconds off the intro clip”
- “Add a side-by-side layout to the demo clip from 10s to 20s with the camera on the left”
- “Add a B-roll image of our product logo at 30s for 4 seconds”
- “Upload this video file as a new clip at the end of my onboarding video”
- “Add this product demo clip as B-roll between 12s and 20s of the intro”
- “Find the silent gaps in my latest clip longer than 1.5 seconds”
- “Remove all the filler words from the keynote clip”
- “Blur the email address in the bottom-left of the screen between 12s and 18s”
- “Zoom into the top-right of the screen at 25s for 3 seconds”
- “Generate zooms for my demo clip wherever I clicked”
- “Auto-layout my tutorial clip and keep the camera visible the whole time”
- “Turn on Studio Sound for my latest video”
- “Add my logo as an overlay in the top-right corner from 5s to 10s”
- “Play this whoosh sound effect at 8s when the transition happens”