Premiere Pro Bridge
Public Made by Adomby adom
Let the AI edit video in Adobe Premiere Pro on your desktop (import, cut, trim, razor, effects, audio, previews, export) with no mouse or keyboard. Check adom-bridge bridge_list for 'premiere'; install with bridge_install + adom-wiki pkg install adom/premiere-bridge, then start with premiere_status.
name: premiere-editing description: >- Use when cutting, trimming, adding effects, transitions, keyframes or audio changes to a Premiere timeline. Recipes for editing a Premiere Pro timeline through the premiere bridge — rough cuts from clips, razor + ripple delete, closing gaps, trimming, effects (Gaussian Blur, Lumetri, etc.), Motion/Opacity transforms, keyframe animation, video transitions, audio volume in dB, audio fades and ducking, markers, MOGRT titles, clip speed, and adding tracks. Trigger words: rough cut, cut out the silence, remove this part, tighten the edit, close the gap, add blur, zoom in, scale the clip, fade to black, fade in, cross dissolve, lower the volume, duck the music, fade out the audio, add a title, speed up the clip, slow motion, add a track, keyframe. user-invocable: true
Parent skill: premiere-bridge
Editing recipes
Re-read premiere_get_sequence between edits: clip refs ("V1:2") are positional and shift.
Build a rough cut
adom-bridge premiere_import_media '{"paths":["/Users/me/Footage/a.mp4","/Users/me/Footage/b.mp4"]}'
adom-bridge premiere_create_sequence '{"name":"Rough Cut","fromItems":["a.mp4"]}' # matches a.mp4's size/fps
adom-bridge premiere_append_clip '{"item":"b.mp4"}'
adom-bridge premiere_contact_sheet '{"count":8}'
item accepts the project item's id, exact name, "Bin/name", or {mediaPath}.
Remove a section (e.g. 12.0–15.5 s)
adom-bridge premiere_razor '{"time":12.0}'
adom-bridge premiere_razor '{"time":15.5}'
adom-bridge premiere_get_sequence '{"detail":false}' # the middle piece is the one starting at 12.0
adom-bridge premiere_remove_clips '{"clip":"V1:3","ripple":true}' # its linked audio goes too
razor uses the CEP helper's true razor when it's connected (method:"qe-razor"). Otherwise it uses an exact UXP fallback (method:"uxp-overwrite"), which keeps A/V sync but leaves effects on the left half only, and refuses clips with a speed change.
Trim / move / gaps
premiere_trim_clip {clip, trimStart:0.5}shaves 0.5 s off the head.trimEndshaves the tail.start/endset absolute timeline times.premiere_remove_gap {clip}pulls the clip and everything after it left to close the gap before it.premiere_move_clip {clip, by:-2}or{to:30}. Moving onto another clip overwrites it.
Effects and parameters
adom-bridge premiere_list_effects '{"kind":"video","search":"blur"}'
adom-bridge premiere_add_effect '{"clip":"V1:0","name":"Gaussian Blur"}'
adom-bridge premiere_get_clip_effects '{"clip":"V1:0"}' # exact component + param names, values
adom-bridge premiere_set_param '{"clip":"V1:0","component":"Gaussian Blur","param":"<name from get_clip_effects>","value":30}'
Always take component/param names from get_clip_effects; they vary by effect and Premiere version.
- Motion > Position is normalized:
[0.5,0.5]is the frame centre. Scale is a percent. premiere_set_transform {clip, scale:120, position:[0.45,0.5], rotation, opacity}sets several at once.
Keyframes (fades, zooms)
adom-bridge premiere_add_keyframes '{"clip":"V1:1","component":"Opacity","param":"Opacity","keyframes":[{"time":11,"value":0},{"time":13,"value":100}],"interpolation":"linear"}'
Times are sequence time; the bridge converts them to the clip's media time for you (pass timeBase:"clip" to give media time directly). Enabling animation also drops an automatic key at the clip start.
Transitions
premiere_add_transition {clip, name:"Cross Dissolve", duration:1, position:"end"|"start"}. Video only. For audio, fade with keyframes.
Audio
- Level:
premiere_set_clip_volume {clip:"A1:0", db:-6}. 0 dB = unity. Addtimeto set a keyframe instead. - Fades:
premiere_audio_fade {clip:"A2:0", type:"out", duration:2}. - Ducking music under a voiceover: put volume keyframes on the music clip around the VO's start/end with
premiere_set_clip_volume {clip, db:-18, time}. premiere_audio_probe {clip}reads back the level in dB.- Mute a track:
premiere_set_track_mute {track:"A3"}.
Markers, titles, transcripts
premiere_add_marker {time, name, comments, colorIndex}andpremiere_list_markers.- Titles:
premiere_insert_mogrt {path:"…/Lower Third.mogrt", time, track:"V2"}, thenget_clip_effects+set_paramto change the text. premiere_transcribe {item}starts Speech-to-Text.premiere_get_transcript {item}returns word timings, which are good for finding cut points.
Helper-only verbs (need the CEP helper connected)
premiere_set_speed {clip, speed:0.5, ripple}, premiere_add_tracks {video:1, audio:1}, premiere_remove_track, premiere_lock_track, premiere_set_track_target, premiere_extendscript {code}. These act on the active sequence.
Anything else
premiere_eval {code} runs an async JS function body inside Premiere with ppro (the API), h (helpers: findClip, toTick, tx, trackClips…) and args. Edits must go through h.tx(project, "label", () => [actions]), with the actions built synchronously:
const p = await ppro.Project.getActiveProject(); const seq = await p.getActiveSequence();
const { clip } = await h.findClip(seq, "V1:0");
h.tx(p, "Disable", () => clip.createSetDisabledAction(true));
return "ok";
---
name: premiere-editing
description: >-
Use when cutting, trimming, adding effects, transitions, keyframes or audio changes to a Premiere timeline. Recipes for editing a Premiere Pro timeline through the premiere bridge — rough cuts from clips, razor + ripple delete, closing gaps, trimming, effects (Gaussian Blur, Lumetri, etc.), Motion/Opacity transforms, keyframe animation, video transitions, audio volume in dB, audio fades and ducking, markers, MOGRT titles, clip speed, and adding tracks. Trigger words: rough cut, cut out the silence, remove this part, tighten the edit, close the gap, add blur, zoom in, scale the clip, fade to black, fade in, cross dissolve, lower the volume, duck the music, fade out the audio, add a title, speed up the clip, slow motion, add a track, keyframe.
user-invocable: true
---
Parent skill: **premiere-bridge**
# Editing recipes
Re-read `premiere_get_sequence` between edits: clip refs (`"V1:2"`) are positional and shift.
## Build a rough cut
```bash
adom-bridge premiere_import_media '{"paths":["/Users/me/Footage/a.mp4","/Users/me/Footage/b.mp4"]}'
adom-bridge premiere_create_sequence '{"name":"Rough Cut","fromItems":["a.mp4"]}' # matches a.mp4's size/fps
adom-bridge premiere_append_clip '{"item":"b.mp4"}'
adom-bridge premiere_contact_sheet '{"count":8}'
```
`item` accepts the project item's id, exact name, `"Bin/name"`, or `{mediaPath}`.
## Remove a section (e.g. 12.0–15.5 s)
```bash
adom-bridge premiere_razor '{"time":12.0}'
adom-bridge premiere_razor '{"time":15.5}'
adom-bridge premiere_get_sequence '{"detail":false}' # the middle piece is the one starting at 12.0
adom-bridge premiere_remove_clips '{"clip":"V1:3","ripple":true}' # its linked audio goes too
```
`razor` uses the CEP helper's true razor when it's connected (`method:"qe-razor"`). Otherwise it uses an exact UXP fallback (`method:"uxp-overwrite"`), which keeps A/V sync but leaves effects on the left half only, and refuses clips with a speed change.
## Trim / move / gaps
- `premiere_trim_clip {clip, trimStart:0.5}` shaves 0.5 s off the head. `trimEnd` shaves the tail. `start`/`end` set absolute timeline times.
- `premiere_remove_gap {clip}` pulls the clip and everything after it left to close the gap before it.
- `premiere_move_clip {clip, by:-2}` or `{to:30}`. Moving onto another clip overwrites it.
## Effects and parameters
```bash
adom-bridge premiere_list_effects '{"kind":"video","search":"blur"}'
adom-bridge premiere_add_effect '{"clip":"V1:0","name":"Gaussian Blur"}'
adom-bridge premiere_get_clip_effects '{"clip":"V1:0"}' # exact component + param names, values
adom-bridge premiere_set_param '{"clip":"V1:0","component":"Gaussian Blur","param":"<name from get_clip_effects>","value":30}'
```
Always take `component`/`param` names from `get_clip_effects`; they vary by effect and Premiere version.
- **Motion > Position is normalized**: `[0.5,0.5]` is the frame centre. Scale is a percent.
- `premiere_set_transform {clip, scale:120, position:[0.45,0.5], rotation, opacity}` sets several at once.
## Keyframes (fades, zooms)
```bash
adom-bridge premiere_add_keyframes '{"clip":"V1:1","component":"Opacity","param":"Opacity","keyframes":[{"time":11,"value":0},{"time":13,"value":100}],"interpolation":"linear"}'
```
Times are **sequence time**; the bridge converts them to the clip's media time for you (pass `timeBase:"clip"` to give media time directly). Enabling animation also drops an automatic key at the clip start.
## Transitions
`premiere_add_transition {clip, name:"Cross Dissolve", duration:1, position:"end"|"start"}`. Video only. For audio, fade with keyframes.
## Audio
- Level: `premiere_set_clip_volume {clip:"A1:0", db:-6}`. 0 dB = unity. Add `time` to set a keyframe instead.
- Fades: `premiere_audio_fade {clip:"A2:0", type:"out", duration:2}`.
- Ducking music under a voiceover: put volume keyframes on the music clip around the VO's start/end with `premiere_set_clip_volume {clip, db:-18, time}`.
- `premiere_audio_probe {clip}` reads back the level in dB.
- Mute a track: `premiere_set_track_mute {track:"A3"}`.
## Markers, titles, transcripts
- `premiere_add_marker {time, name, comments, colorIndex}` and `premiere_list_markers`.
- Titles: `premiere_insert_mogrt {path:"…/Lower Third.mogrt", time, track:"V2"}`, then `get_clip_effects` + `set_param` to change the text.
- `premiere_transcribe {item}` starts Speech-to-Text. `premiere_get_transcript {item}` returns word timings, which are good for finding cut points.
## Helper-only verbs (need the CEP helper connected)
`premiere_set_speed {clip, speed:0.5, ripple}`, `premiere_add_tracks {video:1, audio:1}`, `premiere_remove_track`, `premiere_lock_track`, `premiere_set_track_target`, `premiere_extendscript {code}`. These act on the **active** sequence.
## Anything else
`premiere_eval {code}` runs an async JS function body inside Premiere with `ppro` (the API), `h` (helpers: `findClip`, `toTick`, `tx`, `trackClips`…) and `args`. Edits must go through `h.tx(project, "label", () => [actions])`, with the actions built synchronously:
```js
const p = await ppro.Project.getActiveProject(); const seq = await p.getActiveSequence();
const { clip } = await h.findClip(seq, "V1:0");
h.tx(p, "Disable", () => clip.createSetDisabledAction(true));
return "ok";
```