Skip to content
Story AI ✦ Features Pricing Blog Try Demo — free →

AVScript Editor — Complete User Manual

Tomislav Brdjanović
Published date:

AVScript is a browser-based video editing assistant designed around the way journalists and editors actually think — in timecodes, not mouse clicks. This manual covers every panel, every button, and every keyboard shortcut. Bookmark it and come back whenever something isn’t obvious.

Overview

When you open a project you land in the Editor. The screen is divided into five main zones:

Toolbar
Media Bin
Clip List
Player
Transport + Filmstrip
Audio
Horizontal Timeline

Each zone is described in full below. On a wide screen the Clip List doubles as a vertical timeline and can be switched to a bin grid for visual browsing.


Toolbar

The toolbar runs across the top of the editor and is always visible.

My Library/My Project
MI: OK
ElementWhat it does
← HomeReturns to the project library without losing your work
AVSCRIPTBrand logo — also a home link
Library / Project nameClick the project name to rename it inline
● (dot)Autosave indicator. Orange = unsaved changes, green = saved, red = save failed
fps selectorSets the timeline frame rate. Changing it mid-project re-computes all timecodes
MI: OK / MI: –MediaInfo status. OK means the WASM analyser is loaded and ready to extract frame rate and codec from imported files
↺ MIForce-reloads the MediaInfo WASM module if it failed on first load
···Opens the project actions menu
📡 CoWorkOpens the real-time video collaboration panel. Visible only when the project has an active sharing connection. Both users connect to the same room automatically — no link sharing needed.
🎬 MGOpens the Motion Graphics Generator panel for creating lower thirds, title cards, countdowns and more.

Project actions menu (···)


Media Bin

The Media Bin lives on the left side of the screen. It holds every file associated with your project — videos, audio, or multicam groups.

#NameKindDurationFPSSize
1
interview_a.mp4Video00:03:45251.2 GB
2
broll_park.mp4Video00:01:2225480 MB
3
ambient_sound.wavAudio00:05:0052 MB

Bin columns explained

ColumnMeaning
#Sequential bin number. Use this to identify which bin slot a clip occupies
ThumbnailSmall preview frame. Click a row to load the file into the player
Colour dotPer-file accent colour. Click the dot to change it — the same colour appears on timeline clips
NameOriginal file name
KindVideo, Audio, or Multicam
DurationTotal file length
FPSSource frame rate detected by MediaInfo
SizeFile size on disk
✔ / ○Server sync status. ✔ means the file is uploaded to the cloud; ○ means local only

Importing files

You can bring media into the bin three ways:

  1. Drag & drop files directly onto the bin area
  2. Import from server — click the Import button to browse your cloud library
  3. Upload — click Upload to send a new file to the cloud and add it to the bin simultaneously

After import, AVScript runs MediaInfo in the background to extract the exact frame rate and codec. The bin row updates automatically when the analysis finishes — you’ll see FPS change from to a real value.

Transcription

Each uploaded file shows a language selector and a Transcribe button in its bin row. When the button is green, a transcript already exists — click it to open the Transcript Panel directly. When it is grey, clicking it first checks the server for an existing transcript (Story AI may have already transcribed the file via AssemblyAI). If nothing is found, Whisper AI transcription starts immediately.

Transcripts produced by Story AI (AssemblyAI, word-level timecodes) and transcripts produced by the Transcribe button (Whisper) are stored in the same place and work identically in the player. You never need to run both — whichever runs first wins, and the button reflects the result regardless of which path produced it.


Filmstrip

The filmstrip sits below the player. It shows evenly-spaced thumbnail frames from whichever file is loaded.

The filmstrip uses bucket-midpoint sampling — each frame is taken from the centre of an equal segment of the clip, so the first and last frames are never black even if the video fades in/out.


Timecode Display

The three-field timecode bar is always visible above the transport controls.

IN
00:00:05:00
SRC
00:00:08:14
OUT
00:00:15:00
FieldShows
INThe current In point (frame accurate). Orange = set; dashes = not set
SRCThe player’s current position (source timecode) — updates as you scrub
OUTThe current Out point. Displayed below IN for compact vertical layout
DURDuration between IN and OUT — shown when both are set

Transport Controls

The transport strip sits between the timecode bar and the filmstrip.

ButtonKeyAction
⏮ Go to InJumps player to the In point
◀ Step backSteps back 1 frame (Shift = 10 frames)
▶ Play/PauseSpace (player focus)Toggles playback
▶ Step fwdSteps forward 1 frame (Shift = 10 frames)
⏭ Go to OutJumps player to the Out point

The ◀ and ▶ buttons briefly flash when you press the left or right arrow key so you always know which direction you stepped.

Edit group

ButtonKeyAction
IISet In point at current playhead position
OOSet Out point at current playhead position
EEAdd the current In→Out selection to the timeline as a new clip
WWAdd a 5-second black (solid colour) slug to the timeline

Playback modifiers

ButtonAction
↺ LoopLoops the current In→Out range. Orange = loop active. When an In and Out point are set, playback loops exactly between them (snaps back to In when Out is reached). With no range set, the whole clip loops natively. Only togglable with the mouse — Space always stays Play/Pause.
⛶ FullscreenExpands the player to fill the screen

JKL Shuttle

AVScript supports the industry-standard JKL shuttle system used in Avid, Premiere, and Final Cut:

J
Rewind
(press again = 2× → 4× → 8×)
K
Stop
L
Play fwd
(press again = 2× → 4× → 8×)

Each press of J or L doubles the shuttle speed. K stops playback and resets the speed to zero. This is the fastest way to review footage without touching the mouse.


Clip List

The Clip List is the vertical representation of your timeline — one row per clip, in sequence order.

#BINStartEndDurationCaptionSubCamCC
1.100:00:00:0000:00:10:0000:00:10:00
2.200:00:10:0000:01:23:0500:01:13:05
3.00:01:23:0500:01:28:0500:00:05:00

Clip list columns

ColumnMeaning
#Clip sequence number
BINWhich bin slot the clip comes from. Black slugs show ■
Start / EndClip start and end positions in the assembled timeline
DurationClip length
CaptionEditable text field — type a caption directly in the row; it also appears as a subtitle in the player
SubCaption mode selector — three small icons that control what the player shows as subtitle overlay for this clip. T (green) = timecoded speech transcript; E (purple) = Hume emotion labels; V (amber) = AI visual description. An icon is coloured when its data exists; click to activate, click again to deactivate. Only one mode is active at a time. MG clips and black slugs show only T (caption text).
CamFor multicam clips, switch camera angle without opening any panel
CCColour Correction indicator. Bright 🎨 = CC is applied; dim 🎨 = no CC

Clip list keyboard navigation

When focus is on the clip list:

KeyAction
↑ / ↓Select previous / next clip; loads it into the player
EnterOpens the clip editor modal for the selected clip
Backspace / DeleteRemoves the selected clip from the timeline
SpacePlay / pause
← / →Step 1 frame (Shift = 10 frames)

Rows can be dragged to reorder the sequence. Drag is undoable with Cmd+Z (Mac) / Ctrl+Z (Windows) — the same undo stack used by timeline edits.

▶ Play all

The red ▶ Play all button above the clip list header plays the entire assembled timeline from the first clip to the last, updating the horizontal timeline playhead as it goes.


Horizontal Timeline

The Horizontal Timeline is at the bottom of the screen. It shows the same clips as the Clip List but as a visual sequence.

00:0000:1000:2000:3000:4000:50
Opening
Interview — main subject
B-roll park

Timeline keyboard shortcuts

KeyAction
MAdd marker at current position
SSplit selected clip at playhead
Ctrl/Cmd + +Zoom in
Ctrl/Cmd + −Zoom out
← / →Step playhead 1 frame
↑ / ↓Select previous / next clip
DeleteRemove selected clip

The Player

The player is the main video window. It has two render modes:

  1. Native video — the default. The <video> element renders directly; no GPU overhead, full CORS compatibility.
  2. WebGL overlay — activated only when the Color Grading (LUT) panel is open. A canvas sits on top of the video and applies the LUT in real time.
interview_a.mp4 · 00:00:08:14
Drop media here to load

You can also drag a file from your computer directly onto the player area to load it instantly into the bin and player.


Color Correction (CC Panel)

Each clip has its own per-clip colour correction. Click the 🎨 icon in any clip row to open the CC panel for that clip.

CC — Interview A
+0.30
1.10
1.00
+10
0

CC parameters

SliderRangeEffect
Exposure−3 to +3 stopsMultiplies pixel brightness by 2^exposure. +1 = double brightness
Contrast0.5× – 2×S-curve contrast multiplier
Saturation0× – 2×0 = greyscale, 1 = natural, 2 = vivid
Temperature−100 to +100Negative = cooler (blue), positive = warmer (orange)
Tint−100 to +100Negative = green cast, positive = magenta cast

CC is applied in real time via a CSS filter on the <video> element — no GPU shader required, so it works even on CORS-restricted R2 URLs. The values are saved per clip and included in the FCPXML export.

The 🎨 icon in the clip row lights up (orange) when a clip has any non-default CC applied. Clicking it also loads the clip’s video into the player so you can immediately see the correction in context.


Color Grading — LUT Panel

The LUT panel is a global look that applies to the whole project (not per clip). Open it from the ··· project menu.

Color Grading
None
Cinematic
Warm
Cool
Fade
B&W
Drop a .cube LUT file here
0.0
1.0
1.0

Built-in looks: None, Cinematic, Warm, Cool, Fade, B&W, Teal+Orange.

You can also drop any .cube LUT file onto the drop zone to apply a custom look. The LUT is applied via WebGL (33×33×33 3D texture lookup) with full float precision.


Audio — VU Meter & Fader

The narrow audio strip to the right of the player provides basic monitoring and level control.

−4 dB
ElementFunction
VU canvasReal-time peak meter. Green = safe, yellow = approaching clip, red = clipping
FaderVertical volume slider. Broadcast-style thin track with horizontal bar thumb
🔊 / 🔇Mute toggle
dB labelCurrent peak level in dBFS

Clip Editor Modal

Double-click any clip row, or select a clip and press Enter, to open the Clip Editor.

Edit Clip

Export

AVScript currently supports four export formats, each aimed at a different stage of the production workflow. Use the comparison table below to choose the right format, then read the per-format section for details.

Format comparison

FeaturePDFFCPXMLPremiere XMLEDL
Video clips with timecodes
Source in / out TC
Captions / descriptionsprinted textTitle layerText gen (V2)* COMMENT
Black slugs✅ black row✅ <gap>✅ Slug gen✅ BL reel
Coloured slugs✅ hex colour✅ solid gen✅ Color Matte⚠️ → BL
Stereo audio tracks✅ dialogue role✅ A1 + A2
Media Bin summary
NLE-ready timelineFinal Cut Pro XPremiere Proall major NLEs
DaVinci Resolve✅ XML import✅ XML import✅ EDL import
Drop-frame TC (29.97)✅ DF flag✅ NTSC flag✅ ; separator
Reel name limit8 chars
File format.pdf (print).fcpxml.xml.edl

PDF Shot List

··· → Export PDF opens a print-ready page in a new tab and triggers the browser’s print dialog. The document contains two sections — a Media Bin summary followed by the full Script table — and is formatted to fit standard A4 paper.

Page 1 of 1
avscript.tv  ·  avscript@bion.tv
Morning News Package
Channel 4 News  ·  27 Apr 2026  ·  25 fps
Media Bin — 4 files
#NameKindDurationFPSSizeStatus
1interview_studio.mp4Video00:08:2225.001.4 GBOn server
2broll_city.mp4Video00:03:1525.00560 MBOn server
3anchor_closeup.mp4Video00:05:4725.00980 MBOn server
4nat_sound_plaza.wavAudio00:10:0038 MBLocal
Script — 5 clips
Total duration: 00:01:13:23
TC INTC OUTDESCRIPTIONDURATION
00:00:05:0000:00:18:12001   Anchor intro — live from the studio00:00:13:12
00:00:42:0800:01:03:00002   Interview: “The decision affects thousands…“00:00:20:17
00:00:03:00BLACK00:00:03:00
00:00:08:1500:00:22:04003   B-roll: city plaza, morning commuters00:00:13:14
00:00:05:00SLUG — transition00:00:05:00
00:02:14:2000:02:38:05004   Closing statement, anchor signs off00:00:23:10
TOTAL DURATION00:01:13:23

What’s included

ElementDetails
Logo + usernameAVSCRIPT wordmark top-left with the account email below
Project infoProject name, library, date, and frame rate — top-right
Media BinAll files in the bin: #, name, kind, duration, FPS, size, server status
Colour barEach bin row shows the file’s accent colour as a left border
Script tableTC IN · TC OUT · Description (sequence number + caption) · Duration
Black slugsRendered as full black rows so the reader knows it’s a gap
Colour slugsAny solid-colour slug shows in its actual colour
Total DurationBold footer row at the bottom of the script table

FCPXML — Final Cut Pro X

··· → Export FCPXML produces a Final Cut Pro X timeline file (FCPXML 1.13).

Import via File → Import → XML… in FCP to immediately get a rough cut with your selects. The file is DTD-valid and passes FCP’s built-in XML validator.

What’s in the file

ElementHow it maps
Media clips<asset-clip> with frame-accurate offset, start, duration
Black gaps<gap> element — no media needed
Coloured slugs<video ref="rSolid"> Custom generator with RGB value
Captions<title> on lane 1 above every clip that has a description
AudioaudioRole="dialogue" on every media clip
MulticamAngle information preserved from the original FCPXML if imported
Source assets<asset> + <format> entries in <resources> — all with /RELINK/ paths for relinking after transfer

Limitations


MetaFlow FCPXML — AI-enriched export for Final Cut Pro

··· → Export FCPXML → ☑ Inject MetaFlow metadata produces a single-event FCPXML that brings all Story AI enrichment data directly into Final Cut Pro.

Export FCPXML
Inject MetaFlow metadata

Make sure your source files are accessible before importing into Final Cut Pro. If files are stored in AVScript cloud, download them first.

When the checkbox is on, the exported .fcpxml file contains a single FCP Event with everything in one place:

ContentsDetails
Timeline sequenceClips, gaps, structure — same as a plain export
Annotated source clipsOne <asset-clip> per source file, enriched with all AI metadata

What MetaFlow injects per source clip

DataModuleFCP element
TranscriptTranscribe<caption> elements with word-level timecodes
Emotion keywordsEmotions AIFCP Keywords (Emotion-Joy, Emotion-Tension, …)
Visual / topic tagsVisual AIFCP Keywords (Topic-…, Scene-…)
Speaker labelsTranscribeFCP Keywords (Speaker-…)
MarkersAVScript<marker> elements with timecodes

How to use in FCP

  1. Export FCPXML with MetaFlow checked
  2. File → Import → XML… in Final Cut Pro
  3. One new Event appears in your Library — your timeline and all annotated source clips together
  4. Use FCP Smart Collections to filter by keyword — e.g. Emotion-Joy finds every high-joy segment across all source files instantly

Source file relinking

MetaFlow assets export with /RELINK/ placeholder paths. On first import FCP will show a “Missing Files” dialog — navigate to your local copy of each file to relink. After that, the full AI metadata is attached to your local source files in FCP permanently.


Premiere XML — FCP7 / xmeml

··· → Export Premiere XML opens a modal and produces an FCP7-format XML file (<xmeml version="5">) that Adobe Premiere Pro imports natively via File → Import — no Translation Report, no XML bridge.

This is the most compatible NLE interchange format — Resolve, Avid, and most other NLEs also accept xmeml.

Export modal options

OptionDefaultWhat it does
V2 caption overlayON (when descriptions exist)Adds clip descriptions as a legacy text generator on video track 2 — visible during review directly on the Premiere timeline
Bin metadataON (when descriptions exist)Writes the description into <logginginfo><description> so it appears in Premiere’s project bin Description column
FPS overrideAutoForces a specific frame rate if bin metadata auto-detection gives the wrong result

What’s in the file

ElementHow it maps
Media clips<clipitem> with <masterclipid> (shared per source file), integer frame <start>/<end>/<in>/<out>
Source files<file> element (full metadata first use, bare id reference after)
Black gaps / slugs<generatoritem slug> on V1 + matching <generatoritem silence> on A1/A2
Coloured slugs<generatoritem> with <effectid>color-matte</effectid> + RGB <parameter>
Captions on timelineV2 <track> of <generatoritem> text generators (if V2 caption overlay is ON)
Captions in bin<logginginfo><description> per clipitem (if Bin metadata is ON)
AudioLinked A1 + A2 <track> items per clip with correct sequential <clipindex>
Frame rate<timebase> integer + <ntsc>TRUE/FALSE</ntsc> per clip and per file

Limitations

<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE xmeml>
<xmeml version=“5”>
  <sequence id=“sequence-1”>
    <name>Morning News Package</name>
    <duration>1848</duration>
    <rate><timebase>25</timebase><ntsc>FALSE</ntsc></rate>
    <media><video>
      <track>
        <clipitem id=“clipitem-1”>
          <name>interview_studio</name>
          <start>0</start><end>338</end>
          <in>125</in><out>463</out>
          <file id=“file-1”></file>
        </clipitem>
      </track>
    </video></media>
  </sequence>
</xmeml>


EDL — CMX 3600

··· → Export EDL produces a plain-text CMX 3600 Edit Decision List. This is the oldest and most universally supported interchange format — every professional NLE, colour grading system (DaVinci Resolve), and tape suite reads it.

Use EDL when you need maximum compatibility or when you’re handing off to a facility that doesn’t accept XML.

What’s in the file

ElementHow it maps
Media clipsEdit line with reel name, source TC in/out, record TC in/out
Black gapsBL reel (standard black slug reel name)
Coloured slugsBL reel + * COMMENT: Color slug (#hex) — colour is noted but cannot be encoded in CMX 3600
Captions* COMMENT: line after the edit
Clip name* FROM CLIP NAME: line after the edit
Drop-frameFCM: DROP FRAME header + ; separator in TC strings

Limitations

TITLE: Morning News Package
FCM: NON-DROP FRAME

001  intvSt1  V   C        00:00:05:00 00:00:18:12 00:00:00:00 00:00:13:12
* FROM CLIP NAME: interview_studio.mp4
* COMMENT: Anchor intro — live from the studio


002  BL       V   C        00:00:00:00 00:00:03:00 00:00:13:12 00:00:16:12
* COMMENT: BLACK


003  brollC2  V   C        00:00:08:15 00:00:22:04 00:00:16:12 00:00:30:01
* FROM CLIP NAME: broll_city.mp4
* COMMENT: B-roll: city plaza, morning commuters


004  BL       V   C        00:00:00:00 00:00:05:00 00:00:30:01 00:00:35:01
* COMMENT: Color slug (#1E90FF)


Settings — Data Sync

Settings → Data Sync automatically backs up your project JSON to a connected cloud storage provider every time you save. Currently Google Drive is supported; Dropbox and OneDrive are coming.

The backup creates and maintains the folder structure AVScript / [Library name] / [Project name].json inside your Drive. Only the project data is uploaded — your video files stay on AVScript’s servers.

Data Sync
Connect cloud storage to automatically back up your projects
Connected
Google Drive
Backup projects to Google Drive
Connected
Auto sync
What to sync
Storage
AVScript backup: 4.2 KB
Drive free: 12.4 GB of 15 GB
17% used
Dropbox / OneDrive
Coming soon
Soon

Connecting Google Drive

  1. Go to Settings → Data Sync
  2. Click Sign in with Google — you’ll be redirected to Google’s auth page
  3. Select your Google account and grant access
  4. You’ll land back on the Settings page with your account shown as connected

Note: During the beta the app shows a “Google hasn’t verified this app” warning. Click Advanced → Continue to proceed — this is expected until the OAuth app passes Google’s review.

Auto sync options

OptionWhen it syncs
On every saveAfter each successful autosave (default — every ~30 s when changes are pending)
Every 15 minutesA background timer fires every 15 min regardless of saves
Every hourSame as above but hourly — lowest Drive API usage
Manual onlyNever syncs automatically — use the Sync Now button when you want

What to sync

CheckboxContentsTypical size
Project data (JSON)Timeline clips, In/Out points, captions, CC values, project metadataA few KB
Media Bin file listFile names, cloud URLs, and bin order — no video data< 1 KB

Unchecking Project data effectively disables backup entirely even if Google Drive is connected.

Storage info

The Storage row in the connected panel shows three things at a glance:

ItemMeaning
🟢 AVScript backupTotal size of all AVScript JSON files currently in your Drive
🔵 Drive free / totalYour Google account’s remaining quota (standard accounts have 15 GB shared across all Google services)
Progress barVisual quota indicator — turns yellow above 70%, red above 90%

Sync Now

Clicking Sync Now does two things: it verifies that the Drive token is still valid and refreshes the storage stats. It does not trigger a project save — to sync actual changes, save the project first (auto-save, or Ctrl/Cmd + S) and let the background sync pick it up.

Folder structure in Drive

My Drive/
└── AVScript/
    ├── News March 2026/
    │   ├── Morning Briefing.json
    │   └── Evening Report.json
    └── Documentary/
        └── Episode 01.json

Each library becomes a subfolder. Each project is a single JSON file inside it. If you rename a project in AVScript the next sync creates a new file — the old one remains in Drive until you delete it manually.


Motion Graphics Generator

The Motion Graphics Generator lets you create broadcast-ready lower thirds, title cards, countdown leaders, transition wipes, and credit rolls without leaving the editor. No After Effects, no Motion, no round-trips to a graphics workstation.

Opening the MG panel

Step 1 — Choose a template type

🎙
Lower Third
🅰
Title Card
🕐
Countdown
Transition Wipe
📜
Credit Roll
TemplateUse case
Lower ThirdTwo-line name + role bar — interview speaker tags
Title CardFull-frame centred title with optional sub-title
CountdownNumeric leader counting down to zero
Transition WipeDirectional fill element for scene transitions
Credit RollMulti-line vertical scroll for end credits

Step 2 — Customise

Fill in the form fields: text content, accent colour, font size, duration (seconds), and output resolution. A live preview appears in the panel as you type.

Preview button

Click ▶ Preview in player. AVScript renders the graphic to WebM entirely in the browser — no upload, no server. The result loads into the main video player and loops automatically, muted. Re-render as many times as needed before committing.

Add to Bin

Click + Add to Bin. The WebM clip appears in the Media Bin as a standard video-only clip. From here it works exactly like any other clip — set In/Out, press E to add to the timeline, drag to reorder, export via FCPXML or Premiere XML.


Audio Controls

Every clip in the Clip List has a 🔊 button on its row. Click it to open the per-clip Audio Controls panel.

Volume, Mute, Peak meter

Channel routing

Three pills select which channels are monitored and exported:

PillBehaviour
LLeft channel only — boom mic on channel 1
L+RStandard stereo mix (default)
RRight channel only — lav on channel 2

Fade In / Fade Out

Both sliders run 0–5 s. The fade shape is an exponential ramp via the Web Audio API setTargetAtTime — the same shape Final Cut Pro uses, so previews match exactly after FCPXML import.

Auto-Duck

Enable Auto-Duck on any ambient or music clip. AVScript reads the Whisper transcript timecodes from every other clip in the project and automatically lowers this clip to −12 dB whenever a speaker is detected. Level fades back up when speech stops. Requires transcription to be run on the interview clips first.

Normalize All

Click ⊙ Normalize All to measure the peak level of every clip in the project and apply per-clip gain adjustments that bring all clips to the same target loudness (−14 LUFS). Source files are never modified — only the Volume slider values update.

FCPXML export

All audio settings round-trip to Final Cut Pro as native FCPXML metadata:

SettingFCPXML element
Volume<adjust-volume amount="...dB">
Fade In<fade-in duration="...s" type="easeIn">
Fade Out<fade-out duration="...s" type="easeOut">
Channel routing<channel-mapping> per clip

Everything runs locally in the browser via the Web Audio API — no server processing.


CoWork

CoWork embeds a real-time WebRTC video call directly inside the editor. No Zoom, no screen sharing, no external tool.

Starting a session

The 📡 CoWork button is only visible when the current project has an active sharing connection (you invited a collaborator, or someone invited you). The room is tied to the project — both users connect to the same room automatically when they open the project and click CoWork. No link to share, no meeting ID to manage.

  1. Click 📡 CoWork in the toolbar
  2. Grant camera and microphone permission when prompted
  3. Your collaborator does the same on their side — the call connects peer-to-peer

Expanded view

The default view is a full-screen overlay with two large camera tiles side by side. Press Esc or click ⊟ Collapse strip to reduce it to the thin bottom strip.

Collapsed strip

A thin bar along the bottom edge of the editor shows both camera thumbnails and all controls. The editor above remains fully usable — scrub, cut, type captions — while the call continues.

Mic and camera toggles

🎙 Mic and 📷 Cam buttons toggle your audio and video independently. Toggling does not affect your collaborator’s feed.

Mouse sharing (🖱 Mouse)

Enable 🖱 Mouse to broadcast your cursor as a green dot on your collaborator’s screen. The dot moves at ~20 fps using normalised coordinates and a short CSS transition for smoothness. Only coordinate data is transmitted — no screenshot. Use it to point at a specific clip or timeline position during the call.

Clip Sync (🔗 Sync)

Enable 🔗 Sync to synchronise clip list changes in real time. Adds, deletes, reorders, and caption edits appear on both screens within ~400 ms. Toggle it off when both editors are working on independent sections to avoid overwriting each other’s changes.

End Call

Click End Call to hang up. On disconnect all WebRTC state and signaling records are cleared from the server immediately. The room remains available for the next session — both users reconnect the same way, by opening the project and clicking CoWork.


FCP Extension

The AVScript FCP Workflow Extension is a panel that lives inside Final Cut Pro — no browser, no tab switching, no context switch. It appears in the FCP interface as a workflow extension and gives you a direct connection between your FCP library and your AVScript cloud projects.

Requirements: macOS 13 or later · Final Cut Pro 10.6.5 or later · AVScript.app installed.

To open it: in Final Cut Pro, choose Window → Extensions → AVScript. The panel docks inside FCP alongside your browser and inspector.

AVScript ExtensionFCP
Projects
MetaFlow
Bin
Upload
Story AI
CoWork
Sync FCP Edit
Import your FCP library into AVScript
The Long Way Back
12 clips · 2026-05-20
Chapter 3 — The Decision
7 clips · 2026-05-18
Interview Selects
4 clips · 2026-05-15

Projects tab

The Projects tab lists every AVScript cloud project you have access to. Each row shows the project name, clip count, and last-modified date.

To import a project into FCP: click any row. AVScript generates an FCPXML from the project’s current edit sequence, writes it to a temporary file, and FCP opens it automatically. There is no manual File → Import step. The FCPXML appears in your active FCP library as a new event.

ColumnMeaning
NameAVScript project name
ClipsNumber of clips in the timeline
DateLast modification date

The Sync FCP Edit row at the top of the tab is the entry point for the reverse direction — pulling your FCP work into AVScript.


Sync FCP Edit

Sync FCP Edit is the feature that turns your existing FCP library into AVScript projects. It auto-detects whatever library you have open in FCP, presents all the projects inside it, and lets you choose which ones to register in AVScript.

Step 1 — Auto-detection

When you tap Sync Edit, the extension scans ~/Movies for .fcpbundle files. If it finds an active library it opens the picker immediately. If your library is stored elsewhere, drop a .fcpbundle, .fcpxmld, or .fcpxml file onto the sync zone, or use Pick file… to navigate manually.

Step 2 — The project picker (FCPSyncPickerView)

The picker shows every FCP project in the library, grouped by event name. Each row shows the project name and the event it lives in.

Select FCP Project to Sync
The Long Way Back.fcpbundle
Event — Interviews
Interview Day 1
Interviews · 6 clips
Interview Day 2
Interviews · 4 clips
Event — B-Roll
City Exteriors
B-Roll · 11 clips

Tap a row to open the Sync View for that project.

Step 3 — Sync View (ProjectSyncView)

The Sync View shows two sections:

Media files — every file from the library’s Proxy Media folder, with cloud status:

StatusMeaning
On cloudFile is already in your AVScript library — green
Needs uploadFile exists locally but hasn’t been uploaded yet
MissingFile is referenced by the FCP project but can’t be found on disk

FCP Projects — all FCP projects from the library, grouped by event, each with a checkbox. Check the ones you want to create as AVScript projects.

Sync: Interview Day 1
The Long Way Back.fcpbundle · Interviews
Media Files
cloudinterview_A_day1.mp4
uploadinterview_B_day1.mp4
missingbroll_insert.mp4
FCP Projects
Interview Day 1Interviews
Interview Day 2Interviews

Click Create X projects to register the selected FCP projects in AVScript. Each one becomes a full AVScript project, with its media linked to the files already in your AVScript library.

After creation, open any of the new projects in the AVScript web editor to run Story AI, transcribe the footage, or share player links with your team.


The two-way round-trip

The extension supports both directions of the edit round-trip:

DirectionHow
AVScript → FCPClick any project row in the Projects tab. AVScript generates FCPXML and FCP opens it automatically.
FCP → AVScriptSync FCP Edit → auto-detect library → pick projects → Create projects.

There is also a third path for full timeline fidelity: if you export a .fcpxmld package from FCP (drag a project from the Browser to Finder), AVScript can parse the complete timeline including all connected clips and overlay lanes. Drop the .fcpxmld onto the sync zone in the extension to use it.


Connected clips and the overlay lane

When a .fcpxmld export contains connected clips — B-roll or graphics placed on a lane above the primary storyline (lane ≥ 1 in FCPXML terms) — AVScript creates a visual overlay lane above the base timeline.

The overlay lane:

This is intentional: connected clips express editorial relationships that belong in FCP, where you can work with them properly. The overlay lane makes them visible during review without pretending AVScript can edit them with the same precision.

Timeline
broll_park.mp4
graphic.mp4
interview_A.mp4
interview_B.mp4

Overlay lane — connected clips from FCPXML (read-only)


Other tabs

TabWhat it does
MetaFlowDisplays AI-enriched metadata (transcripts, emotion scores, visual tags) for the clips in the current FCP library.
BinMedia bin view — browse and preview files from your AVScript library without leaving FCP.
UploadUpload files from your Mac directly to your AVScript cloud library. Drag files onto the upload zone or click Choose files.
Story AILaunch the Story AI analysis pipeline on footage already in your AVScript library.
CoWorkOpen the real-time collaboration panel for any shared AVScript project.

Story AI

Story AI is AVScript’s editorial intelligence layer. It analyses your footage across three dimensions — speech, emotion and image — and proposes a complete cut. You then refine the result in a live conversation. The original project is never touched; everything happens inside a protected Sandbox.


How the pipeline works

When you launch Story AI, AVScript runs three parallel enrichment services before a single editorial decision is made:

🎙
Transcription
Every word, timecoded to the frame. Identifies narration vs. in-scene dialogue.
Speech
💡
Emotions AI
Analyses the full audio track for audience emotional response — tension, concentration, interest, and more.
Feeling
🎬
Visual AI
Reads every frame: shot-by-shot breakdown with timecodes, camera angles, subjects, chapters and thematic tags.
Image
Story AI
Receives all three data streams and computes an editorial proposal: structure, timeline, in/out points, reasoning.
Editorial

The three enrichment stages run automatically after upload and take between 2 and 20 minutes depending on clip length. Story AI computes the moment all three are complete, or immediately if you skip the wait.


Starting Story AI

  1. Open a project that has media in the Bin
  2. Click ✦ Story AI in the toolbar or from the home screen
  3. Answer four short questions and click Generate Story →
Step 3 of 5 · Brief
What is this edit about? (topic / brief)
Describe the subject in plain language. The more specific, the better the result.
Narrative structure
Three-Act, Problem–Solution, Chronological, Montage, Interview-driven, your own…
Editorial direction
Defines the cutting style. Every editorial decision Story AI makes will serve this direction.
Target duration
Hard ceiling — Story AI will never exceed this runtime, trimming clips if needed.
FieldWhat it controls
Topic / briefThe editorial subject — described in plain language
StructureNarrative form — Three-Act, Problem–Solution, Chronological, Montage, etc.
DirectionCutting style — fast-paced, slow and atmospheric, educational, emotional, etc.
DurationHard maximum runtime — Story AI never exceeds this ceiling

The enrichment pipeline bar

While the three services work, a live status bar shows progress:

Enrichment Pipeline
✓ Transcription
Done
⟳ Emotions AI
Processing…
⟳ Visual AI
Indexing…
… Story AI
Waiting…

Each step turns green (✓ Done) when complete. If a service fails, a red ✗ appears with a diagnostic log you can copy for support. You can click ⏭ Skip remaining & run Story AI now to proceed with whatever data is ready — Story AI adapts.


The result

When all enrichment is done, Story AI proposes a complete cut:

Step 5 of 5 · Result
Suggested structure: Three-Act · ~3 min

A tightly-cut action sequence built from the unedited bank robbery footage, opening with the van arrival and escalating through the interior confrontation to the police response. Narration stripped; only in-scene dialogue and visual action retained.

Proposed Timeline
  1. 1
    Bank Robbers — Part I62.0s – 115.0s · 53s
    Arrival + approach — wide establishing shots, Ebert voice-over only, no narrator on screen
  2. 2
    Bank Robbers — Part II8.0s – 83.0s · 75s
    Van sequence + bank interior, parallel action — Tension AI peak begins here
  3. 3
    Bank Robbers — Part II102.0s – 162.0s · 60s
    Escalation + climax — Tension 85%, quick cuts, armed confrontation, police
✕ Discard
✎ Change parameters
↺ Re-analyze
✓ Accept — Create Sandbox

The result shows:


Actions

ButtonWhat happens
✓ Accept — Create SandboxDuplicates your project, applies the proposed timeline, and opens it as a protected Sandbox edit
↺ Re-analyzeRe-runs only the Story AI step (no extra charge) using the current enrichment data
✎ Change parametersReturns to the question form — re-run Story AI with different structure, direction, or duration
✕ DiscardCloses the AI suggestion without touching anything

Chat mode

After the result appears, a chat interface opens below. You can ask follow-up questions or request alternative edits — and every answer that describes a specific cut is automatically turned into a sandbox.

Montaža samo akcije — izbaci sve kadrove gdje je vidljiv narator
Izbacujem sve kadrove u kojima se Ebert pojavljuje na ekranu. Zadržavam voice-over u pozadini i svu akcijsku dijalogu. Ritam raste: dugi kadrovi na početku → brzi rezovi → klimaks.
Story AI · New Sandbox
Bank Robbery — Action Only · ~3 min
Proposed Timeline
  1. 1
    Part I62s–115s · 53s
  2. 2
    Part II8s–83s · 75s
  3. 3
    Part II102s–162s · 60s
✓ Open in Editor ↗
Which clip has the most emotion? Suggest a different ending…
Send

Create sandbox from answer — when checked, any chat reply that contains a specific edit plan is automatically converted to a sandbox card with an Open in Editor button. No copy-pasting required.


What the AI knows about your footage

Story AI works with every layer of enrichment data simultaneously:

Data layerSourceWhat it enables
Timecoded transcriptTranscriptionPick exact spoken moments; split narration from in-scene dialogue
Emotion scoresEmotions AIIdentify peak tension, concentration or interest — choose the emotionally strongest shots
Visual tagsVisual AIUnderstand themes and subjects without watching every frame
Visual chaptersVisual AIKnow the temporal structure of each clip (intro, action, resolution)
Shot listVisual AIEvery individual shot with start/end seconds, camera angle, subject and action — the most precise in/out data available

Shot list example — Visual AI might return: 14.0s–18.7s | close-up | driver hands on wheel | gripping, tension building. Story AI uses those exact seconds as cut points.


Sandbox

A Sandbox is a full duplicate of your project with the AI-proposed timeline applied. It opens in the standard editor and behaves exactly like any other project — you can trim, rearrange, add markers, export, everything.

The original project is never modified. Sandbox edits are isolated copies. You can create as many sandboxes as you like from a single project — one per chat message if needed.

To discard a sandbox, delete it from the project library. The original remains untouched.


Enrichment data follows the file, not the project

All analysis Story AI generates — transcripts, emotion scores, visual tags, speaker labels — is stored on the media file itself, not only on the project.

Practical consequences:

The only data that doesn’t survive a project deletion is the editorial brief (topic, structure, direction) and the AI-generated timeline proposal. Everything Whisper, Hume, and TwelveLabs produced stays on the file, permanently.


Shot Search is a semantic query across every layer of AI analysis — Visual AI shot descriptions, transcript words, detected emotions and tags. Use it from the home screen to quickly verify whether material exists across your library, or directly inside the editor to load matching shots into the player and add them to the timeline with a single key press.

Library-wide analysis — analyse once, search everywhere

AVScript follows a simple rule: once a clip is analysed, it is analysed forever — across every project in the library.

When you run Story AI on a project, the resulting analysis (visual shots, transcript, emotions, tags) is stored permanently against the clip’s filename in the library. If you later create a new project and add the same clip to its Media Bin, Shot Search in that new project will automatically use the previously stored analysis — no need to re-run Story AI.

This means:

The 🔍 Shots button in the editor is active (orange) as long as the Media Bin contains at least one clip — regardless of whether Story AI has been run for this specific project.


Searching from the home screen

Click Shot Search in the left sidebar. Select a project from the drop-down, type a query and press Search or hit Enter.

AI Story

Shot Search

Libraries
Documentary
News
tractorcarpersoninterviewemotionjoysadnessaction
2 clips found for girl in AI Story test

🎬 Bank Robbers Part I.mp4 594s score: 3

Roger Ebert’s introduction to editing principles — framing continuity, timing and flow.
visual: girl
🎬 Visual AI — matching shots
276.0s–295.0smediumyoung girl and mother — After dropping her purse, a young girl runs toward the entrance hall.
298.0s–305.0smediumman and little girl — A man talking to a little girl while another woman stands behind her.

Results show the clip name, a Story AI editorial note, matched highlight labels and — most importantly — the list of exact Visual AI shots that matched the query. Each shot has timecoded start and end (in seconds), the camera angle, subject and a description of the action.


What you can search for

Shot Search indexes four data layers simultaneously. A query like "girl running" hits all of them at once:

🎬
Visual AI shots
Shot-by-shot descriptions generated from the video image. Each shot has a subject, action, camera angle and timecode.
e.g. “girl”, “close-up”, “running”, “bank interior”
🎙
Transcript
Every spoken word, timecoded to the frame. Matches narration, dialogue and on-screen text.
e.g. “hello”, “camera”, “editing”
💡
Emotions AI
Audience emotional response scores. Search by emotion name to find the moments that carry that feeling.
e.g. “joy”, “tension”, “concentration”, “sadness”
🏷
Visual tags & chapters
Thematic tags and chapter descriptions extracted from the whole clip. Good for high-level filters.
e.g. “outdoor”, “interview”, “action”, “bank”

Shot Search in the editor

Inside the editor, the 🔍 Shots button appears in the Media Bin action bar. It lights up orange as soon as there is at least one clip in the bin. If those clips were analysed in another project in the same library, their full analysis is already available here — no Story AI run required.

Media Bin2
Shot Search
personcarinterviewoutdooractionjoyemotion
2 clips matching girl

Bank Robbers Part I.mp4 594s visual: girl

Matching shots — click to load · E to add
276.0s–295.0smediumyoung girl and mother — runs toward the entrance hall
298.0s–305.0smediumman and little girl — talking while another woman stands behind

Clicking 🔍 Shots opens the Shot Search panel in the same slot as the Transcript and Bin Grid panels — the clip list slides away and Shot Search takes its place. Click or open any other panel to return to the clip list.


Workflow: from search to cut

Search
Type a word — subject, emotion, action or location. Press Enter or click Search.
Browse shots
Results show matching clips with exact shot timecodes, angle and description.
Click a shot row
The clip loads into the player. I/O points are set to the shot’s start and end. The filmstrip shows the yellow range bracket.
Press E
The shot is added to the timeline trimmed exactly to the matched in/out. Or click the button on the row. Works whether the match came from Visual AI, transcript speech or TwelveLabs visual moments.

The selected shot row is highlighted. Its timecode in/out appears in the filmstrip’s yellow handles — the same handles you see when setting I/O points manually. You can adjust them by dragging before pressing E.


Playback — all contexts

KeyAction
JRewind (faster on repeated press)
KStop
LPlay forward (faster on repeated press)
SpacePlay / Pause
Step back 1 frame
Step forward 1 frame
Shift + ←Step back 10 frames
Shift + →Step forward 10 frames

Editing

KeyAction
ISet In point
OSet Out point
EAdd current selection to timeline
WAdd 5-second black slug
MAdd marker at playhead
SSplit clip at playhead (timeline focus)
Ctrl/Cmd + ZUndo
Ctrl/Cmd + SSave project (manual save)

Clip list & Timeline navigation

KeyAction
↑ / ↓Select previous / next clip
EnterOpen clip editor
Backspace / DeleteRemove selected clip
Ctrl/Cmd + scrollZoom timeline in/out
Ctrl/Cmd + =Zoom in
Ctrl/Cmd + −Zoom out

General

KeyAction
EscapeClose any open panel, modal, or menu — also closes the CoWork expanded view and returns to the collapsed strip

AVScript is developed by BION.TV. For support write to avscript@bion.tv.

Previous
Build Your Pipeline. Own Your Story.
Next
Why We're Open-Sourcing AVScript Player