@kenkaiiii/gg-editor-premiere-panel
v0.2.6
Published
Adobe Premiere Pro extension that lets gg-editor drive Premiere. Ships both a UXP plugin (Premiere 25.6+) and a legacy CEP panel (sunset Sept 2026).
Readme
@kenkaiiii/gg-editor-premiere-panel
This package ships two panels that both speak the same wire protocol to gg-editor:
| Panel | Best for | Lifespan | |---|---|---| | UXP plugin (recommended) | Premiere Pro 25.6+ | The only path that survives Adobe's September 2026 ExtendScript sunset | | CEP panel (legacy) | Premiere Pro 22 → 25.x | Works through September 2026, then removed by Adobe |
Both panels can be installed at once — they have different bundle ids and don't conflict. gg-editor picks whichever responds first.
Why two panels?
On macOS, gg-editor can drive Premiere through osascript → AppleEvents → ExtendScript as a fallback. On Windows there's no equivalent transport — the only way to script a running Premiere is from inside the host itself. That's where these extensions come in.
Beyond Windows support, the CEP panel is also faster than osascript on macOS (~10–30 ms per call vs ~200–500 ms), and the UXP plugin is the only one that will keep working past Adobe's September 2026 sunset of CEP/ExtendScript.
Install (UXP — recommended)
npm i -g @kenkaiiii/gg-editor-premiere-panel
gg-editor-premiere-panel install # defaults to --uxpThat command copies the plugin to:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Adobe/UXP/Plugins/External/com.kenkaiiii.gg-editor-premiere-panel.uxp/ |
| Windows | %APPDATA%\Adobe\UXP\Plugins\External\com.kenkaiiii.gg-editor-premiere-panel.uxp\ |
Then once, in Premiere Pro:
- Quit and restart Premiere
- Open Premiere Settings → Plugins and tick "Enable Developer Mode"
- Restart Premiere again (developer mode needs a restart)
- Open Window → UXP Plugins → GG Editor
- Click Connect
That's it. Now run ggeditor --host premiere from another terminal.
Why ggeditor hosts the WebSocket server (and the panel connects to it): UXP plugins can't open listening TCP sockets. So the gg-editor CLI binds a localhost WebSocket server on port 7437, and the UXP plugin dials out to it. (The CEP panel is the other way round — the panel is the HTTP server, ggeditor is the client.)
Install (CEP — legacy)
gg-editor-premiere-panel install --cepThat command:
- Copies the panel files to your CEP extensions directory
- Sets
PlayerDebugMode=1for CSXS versions 9–12 (required for unsigned panels)
Then restart Premiere Pro, open Window → Extensions → GG Editor. The panel should show "listening" and a port number.
Use
ggeditor --host premiere # gg-editor CLI talks to whichever panel is openThat's it. No further config.
CLI commands
gg-editor-premiere-panel install # install UXP plugin (default)
gg-editor-premiere-panel install --cep # install legacy CEP panel
gg-editor-premiere-panel uninstall # remove UXP plugin
gg-editor-premiere-panel uninstall --cep # remove CEP panel
gg-editor-premiere-panel status # show install state for both
gg-editor-premiere-panel debug-on # enable PlayerDebugMode (CEP only)
gg-editor-premiere-panel debug-off # disable PlayerDebugMode (CEP only)Where things live
| What | macOS | Windows |
|---|---|---|
| UXP plugin | ~/Library/Application Support/Adobe/UXP/Plugins/External/com.kenkaiiii.gg-editor-premiere-panel.uxp/ | %APPDATA%\Adobe\UXP\Plugins\External\com.kenkaiiii.gg-editor-premiere-panel.uxp\ |
| CEP panel | ~/Library/Application Support/Adobe/CEP/extensions/com.kenkaiiii.gg-editor-premiere-panel/ | %APPDATA%\Adobe\CEP\extensions\com.kenkaiiii.gg-editor-premiere-panel\ |
| PlayerDebugMode (CEP only) | ~/Library/Preferences/com.adobe.CSXS.<N>.plist | HKCU\Software\Adobe\CSXS.<N> (registry) |
CEP debug mode is set for CSXS versions 9 through 12 (covers Premiere 2019 to 2025+). UXP doesn't use PlayerDebugMode; instead it requires the Settings → Plugins → Enable Developer Mode toggle inside Premiere itself.
Wire protocol
UXP (WebSocket, gg-editor is the server)
The plugin connects out to ws://127.0.0.1:7437 (or 7438..7443 if the default is busy). On connect it sends a hello frame:
{ "kind": "hello", "product": "gg-editor-premiere-panel", "panelKind": "uxp", "version": "0.2.0" }Then RPC requests flow ggeditor → plugin, with replies on the same socket:
→ { "id": "1", "method": "get_timeline", "params": {} }
← { "id": "1", "ok": true, "result": { ... } }
← { "id": "1", "ok": false, "error": "..." }CEP (HTTP, panel is the server)
GET /health
→ { "ok": true, "product": "gg-editor-premiere-panel", "port": 7437, "kind": "cep" }
POST /rpc
Body: { "method": "get_timeline", "params": {} }
→ { "ok": true, "result": {...} }
→ { "ok": false, "error": "..." }Methods
Both panels expose the same set:
ping— health + Premiere versionget_timeline— clips, markers, fps, durationget_markers— list of markers on the active sequenceadd_marker— drop a marker with note + color + durationappend_clip— import + add at end of active sequencereplace_clip— swap a clip's media without disturbing rangeclone_timeline— duplicate the active sequencesave_project— File → Saveimport_to_media_pool— bulk import into a binimport_subtitles— import an SRT into the projectimport_timeline— bulk import EDL/FCPXML/AAFinsert_clip_on_track— surgical insert at a record-frame
Unsupported via either panel (use write_edl + import_timeline from gg-editor):
cut_at,ripple_delete— no scriptable razor on either runtimerender— needs Adobe Media Encoder integration; deferredset_clip_speed, Lumetri color ops — not exposed on either runtime today
Security
- The UXP plugin only ever connects to
ws://127.0.0.1(declared viarequiredPermissions.network.domainsin its manifest). The WS server bgg-editor binds is127.0.0.1-only. - The CEP panel's HTTP server binds to
127.0.0.1only. Never exposed beyond localhost. PlayerDebugMode=1lets unsigned CEP panels load. This is the standard development flag — Adobe documents it.
Troubleshooting
(UXP) Plugin doesn't show up in Window → UXP Plugins:
- Confirm developer mode: Premiere → Settings → Plugins → "Enable Developer Mode" must be ticked
- Run
gg-editor-premiere-panel status— confirm the install path exists - Fully quit Premiere and relaunch
(UXP) Panel says "disconnected":
- Make sure
ggeditoris running before you click Connect, OR enable "Connect on launch" so the panel keeps retrying - Check the port matches in both places (default 7437; the panel field is editable)
(CEP) Panel doesn't show up in Window → Extensions:
- Run
gg-editor-premiere-panel status— confirm install dir exists - Run
gg-editor-premiere-panel debug-on— sometimes Premiere updates wipe this - Fully quit Premiere (not just close the project) and relaunch
- Check Window → Workspaces — the Extensions submenu only appears for some workspaces
(CEP) Panel shows "bind failed":
- Port 7437 is in use. Set
GG_EDITOR_PREMIERE_PORT=8000(or any free port) in the env Premiere launches with.
ggeditor --host premiere says "panel not reachable":
- For UXP: panel must be open AND clicked Connect
- For CEP: panel must be open (it only starts the HTTP server while the window is visible)
License
MIT
