# Premiere / OBS marker types

Reference for tagging streams in Premiere and writing `editDesc` chapters.  
Companion to [`prompts.txt`](prompts.txt) (editDesc cleanup rules).

## Deliverable vs internal

| Category | In YouTube chapters / `editDesc`? |
|----------|-----------------------------------|
| Descriptive location & activity markers | Yes |
| Deliverable tangent pairs (tag in / tag out) | Yes |
| Pipeline stamps (`gamign`, `env`, raw `SEG`) | No |
| `FUNI`, `FUNI(INT)`, `funi`, `INT:`, `LORE:` | No |
| `AFK` / `UNAFK` | Usually yes (viewer-facing breaks) |
| `starting soon` / `preramble` / `postramble` / `goodbye` (renamed from Start, BEGIN, last env, END) | Yes (stream bookends) |
| Raw `BEGIN` / `END` / `AFK` / `UNAFK` | Yes (or folded into longer chapter titles) |

---

## OBS pipeline stamps (purple)

Hotkey stamps from the streaming layout. **Not chapter titles** — they mark OBS scene/layout switches and get stripped from `editDesc` (see `prompts.txt`).

| Marker | Purpose |
|--------|---------|
| **gamign** | Gaming layout / game capture active (intentional typo). |
| **env** | Environment / desktop / non-game layout. The **last** `env` of the stream (desktop at wrap-up) is usually relabeled **`postramble`** in `editDesc` — same timestamp, different chapter title. |
| **SEG** | Orange OBS chapter stamp for “new topic segment.” Often replaced in post with a descriptive deliverable label, or converted to `INT:` if the tangent is editor-only. |

These align to OBS marker times, not transcript guesses. When adding deliverable chapters, use the **marker timestamp**, not speech alone.

---

## Internal editor notes

Never front-facing. Strip from `editDesc`.

| Prefix | Purpose |
|--------|---------|
| **INT:** | Internal note to editor — excluded from delivery. **White** in Premiere. Example: `INT: desktop` (alt-tab too fast to matter on VOD). Not the same as “interruption”; non-deliverable tangents get `INT:`, deliverable ones get descriptive tag in/out. **Opsec pass:** probe **multiple frames** around each `gamign`/`env` cluster (±5–15s); add `INT:` only when a **desktop, browser, or other sensitive UI** is actually visible — not automatically on every `env` stamp. OBS env layout (meme frame, chat overlay) without taskbar/browser is lower risk; full MapGenie/desktop tabs = high priority. |
| **FUNI** | **“Clip that”** — flag a moment to save for **TikTok, Reels, and YouTube Shorts**. **Blue** — OBS hotkey stamp during stream. May include a short label (e.g. `FUNI cozy awoo`). |
| **FUNI(INT)** | Was **FUNI** originally; relabeled **`FUNI(INT)`** manually when the clip note is internal/editor-only rather than a straight short. Stays **blue** (FUNI lineage). Strip from `editDesc` like other internal markers. |
| **funi** | Same purpose as **FUNI**, but **lowercase** and **aquamarine** — added manually in post (not an OBS marker). Example: `funi ubear gift`. |
| **LORE:** | Lore / callback note for editor or future reference, not a public chapter. |

---

## Stream structure — hard tags (yellow/tan)

Predefined stamps from the OBS/py pipeline. **Yellow/tan** in Premiere (`4281049552` in [`0csv_to_xml.py`](2026/0csv_to_xml.py); muted tan-yellow in the UI). `setColorByIndex(4)` — not index 5 (that is **white**, used for `INT:`).

| Raw marker | Purpose |
|------------|---------|
| **Start** | Pre-stream hold. **Green** (default color when no `pproColor` is set — from `0csv_to_xml.py`). |
| **BEGIN** | Stream proper begins (hard tag). |
| **AFK** | Stepping away — break starts. |
| **UNAFK** | Back from break. |
| **END** | Stream over (hard tag). |

### `editDesc` rename conventions

Premiere keeps the raw stamp names; chapters use friendlier labels at the **same timestamps**:

| Raw stamp | `editDesc` chapter title |
|-----------|--------------------------|
| **Start** | **starting soon** (always) |
| **BEGIN** | **preramble**, **setup + rambling**, or similar (often) |
| last **env** | **postramble** (often) |
| **END** | **goodbye** (always) |

`prompts.txt` still strips raw `env` lines — you replace that slot with `postramble` when writing chapters. `BEGIN` / `END` / `AFK` / `UNAFK` stay as chapter lines (or get merged into longer titles like `chatting + goodbye`).

---

## Deliverable content markers (descriptive)

Short labels: locations, bosses, setup beats, tangents worth skipping or revisiting. May be yours (live/post) or agent-added during visual tagging.

**Red is only for agentic stamps** — markers the agent adds during MCP/visual passes (`Underworks`, `Wisp Thicket`, etc.). Agent `INT:` / `LORE:` → **white**. Your own descriptive stamps → **orange** (same family as `SEG`). Do **not** recolor your existing markers to red; leave pipeline/FUNI/bookend colors alone.

### Gameplay & exploration
Examples: `Bellhart`, `far fields arena`, `goo beast defeated`, `first sinner fight`.

### Deliverable tangents — tag in / tag out
For skippable or revisit-worthy segments (gift popups, detours, downloads):

1. **Tag in** — descriptive name at segment start (e.g. `Subnautica 2 gift`).
2. **Tag out** — descriptive name where main content resumes (e.g. `far fields arena` after gift ends).

Both bounds are deliverable chapter candidates. Do **not** use `gamign` or `env` as tag-out labels.

---

## Agentic stamping workflow (MCP)

Run on the **active sequence** in Premiere Pro with the CEP bridge panel connected (`ws://127.0.0.1:9801`). Do **not** auto-fill `editDesc` — markers and `prtranscript/` sidecars only.

### 1. Premiere + MCP prep

1. Open the stream `.prproj` / sequence (e.g. `2026-06-18 slump.ts`).
2. Open **PremierPro MCP Bridge** (CEP) — confirm connected on port **9801**.
3. Rebuild MCP if transcript tools are missing: `go build -o bin/server.exe ./cmd/server` in `AdobePremiereProMCP/go-orchestrator`, then restart the **premiere-pro** MCP in Cursor.
4. Local mp4 for ffmpeg probes: `{year}/{date} {stream}.mp4` (e.g. `2026/2026-06-18 slump.ts.mp4`).

### 2. Export transcript (before visual pass)

Premiere 25 **Text > Transcript** is not readable via ExtendScript. Export through MCP:

| Tool | `premiere_export_sequence_transcript` |
|------|----------------------------------------|
| `output_path` | `editDesc/prtranscript/{stream}.prtranscript` (absolute path) |
| `format` | `prtranscript` (default), `json`, or `text` |

**Pr 25 (preferred):** open **Window > UXP Plugins > PremierPro MCP UXP Bridge** and confirm **Connected** on `ws://127.0.0.1:9802`. Source clips must already be transcribed in **Text > Transcript**.

Install once: `scripts/install-uxp-panel-win.bat` in the MCP repo. Enable UXP developer mode in Premiere preferences.

**Fallback (no UXP / Pr 24):** in Text panel, **Create Captions**, then call the same tool (reads caption tracks; speakers often `Unknown`).

Optional: `premiere_export_captions` → `.srt` / `.vtt` when a caption track exists.

Use the exported `*_prtranscript.txt` (or `.prtranscript` blocks) as **segment seeds** for the visual pass — not as chapter timestamps alone.

### 3. Baseline snapshot

`premiere_get_sequence_markers` → save `editDesc/prtranscript/{stream}_markers_baseline.json`.

### 4. Visual pass

1. Merge transcript seeds with existing marker labels.
2. ffmpeg probes: `editDesc/prtranscript/_*_probe/` — opsec clusters (below) plus ~10‑min sweeps during gameplay.
3. `premiere_capture_frame_base64` at seeds / map titles when mp4 is unavailable.
4. Write `editDesc/prtranscript/{stream}_visual_tags.txt`.

### 5. Add markers

- **Red (1):** new agent deliverable location/activity stamps only.
- **White (5):** agent-added `INT:` / `LORE:` only when opsec rules justify them.
- Never recolor or rename the user's existing markers.

### 6. After snapshot + save

Save `editDesc/prtranscript/{stream}_markers_after.json`. **Ctrl+S** the project (Synology paths may time out on `premiere_save_project`).

---

## Opsec pass (agent)

For each `gamign` ↔ `env` cluster:

1. Export frames at the stamp and **±3s, ±8s, ±15s** (ffmpeg on `{year}/{stream}.mp4` → `prtranscript/_*_probe/`).
2. Inspect for **taskbar, desktop wallpaper, browser tabs/URL bar, file paths, MapGenie, Discord DMs**, etc.
3. Add `INT:` **only when exposure is visible** — label specifically (`INT: desktop`, `INT: mapgenie`, `INT: mapcheck`, …).
4. **Do not** pair every `env` with `INT: desktop`. In-game menus (inventory, pause, tasks, map) and OBS env layout (avatar + meme frame + chat) are **not** desktop exposure unless a real OS/browser window is on screen.
5. If nothing sensitive appears in the probe window, leave the cluster with no agent `INT:`.

---

## `editDesc` workflow

- Chapters in `editDesc/*.txt` are **semi-manual** (JSyntax Workflows + cursor edit prompt).
- Agent tagging work targets **Premiere markers**; do not auto-fill `editDesc` with `INT:`, `FUNI`/`funi`, or pipeline stamps.
- Agent adds **red** markers only for its own new deliverable location/activity stamps; set **white** on agent-added `INT:` / `LORE:` only. Your descriptive stamps stay **orange**. Never bulk-recolor the user's markers.
- Transcription aids live in **`editDesc/prtranscript/`** (per year): `*_prtranscript.txt`, `*_visual_tags.txt`, marker JSON snapshots, probe frames (`_gap_probe/`), etc. — not mixed with deliverable chapter `.txt` files.
- `prompts.txt` rules still apply: remove `FUNI`, `INT`, `LORE`, `gamign`, and `env` lines (treat lowercase `funi` the same as `FUNI`); normalize YouTube timestamps.

---

## Premiere marker colors (`0csv_to_xml.py`)

| Marker family | Color | `setColorByIndex` |
|---------------|-------|-------------------|
| Start | Green (default) | 0 |
| Agent-added deliverable tags (locations, tag in/out, bosses) | Red | 1 |
| gamign, env | Purple | 2 |
| SEG; your manual descriptive stamps | Orange | 3 |
| BEGIN, END, AFK, UNAFK | Yellow/tan | 4 |
| INT: | White | 5 |
| FUNI, FUNI(INT) | Blue | 6 |
| funi | Aquamarine / turquoise | 7 |

When adding markers via MCP: **new agent stamps** → red = 1; agent `INT:` / `LORE:` → white = 5. Do not change colors on markers you did not add.

---

## DRACONIANDISCOURSE S2 hybrid streams (Draconian Discourse + gaming)

**Since S2**, most live sessions use a **hybrid timeline** — not the old split where gaming VOD and DD were separate exports.

| Deliverable | Timeline | Description file | Notes |
|-------------|----------|------------------|-------|
| **Full stream VOD** (`{name}.ts`) | **Entire live recording** — DD block **then** gaming block in one sequence | `{year}/editDesc/{date} {name}.ts.txt` | Keeps **`starting soon`**, **`AFK`/`UNAFK`** breaks, **`goodbye`**, and the gaming tail. Same Premiere project as the live recording. Markers cover **both** DD and gaming. This is why the full `.ts` exists: it is the complete VOD. |
| **DD-only upload** | Trimmed DD segment only (same channel, same thumb) | `DRACONIANDISCOURSE/S2/E{n}/DD_S2E{n}.txt` stylized manifest | Derivative cut — **not** a second full timeline. **Cuts** cold open (`starting soon`), **`AFK`/`UNAFK`** segments, and **`goodbye`**. Content usually begins at **`PRERAMBLE`**. Chapters = DD topic tokens only. |
| **DD-only stream** (rare) | DD only — no gaming tail | DD manifest only | When the whole session is discourse; no post-DD `gamign` block to stamp. Same trim rules as DD-only upload when exported. |

**Why two deliverables:** the full `{name}.ts` preserves the whole stream arc (hold, breaks, sign-off, optional gaming). The DD-only version is a tighter podcast-style cut of the discourse block alone — no cold open, no AFK padding, no farewell — which is why those bookends live on the full VOD markers/`editDesc`, not in `DD_S2E{n}.txt`.

### Stamping style (from DD S2 workflow)

Reference: `0STREAMUNIVERSE/DRACONIANDISCOURSE/.specstory/history` (S2E2–S2E5 marker passes).

**DD portion (before first post-discourse `gamign` / `CONCLUSION` boundary):**

1. **Topic tokens** — short `ALL_CAPS` labels, often `WORD_WORD` (e.g. `TRIP_RETROSPECTIVE`, `INTRO_HAWLEY`, `STEAM_HOOK`, `FUND_HYPOCRISY`). Match the tone of `DD_S2E{n}.txt` manifest chapters.
2. **Tie to OBS times** — chapter rows in `editDesc` / DD manifest must use **marker timestamps**, not transcript guesses alone.
3. **Preserve internal stamps** — `INT:` / converted `SEG`, all `FUNI`, pipeline `gamign`/`env`: keep names and colors; strip from deliverable chapter lists only.
4. **Broad topics** — compress rapid-fire stamps within ~1 min into one label; don’t micro-chapter every tangent.
5. **Bookends** — on **full `{name}.ts`**: `starting soon` / `PRERAMBLE` / `AFK`/`UNAFK` / `goodbye` (last `env` → `postramble` in `editDesc` when applicable). On **`DD_S2E{n}.txt`**: omit `starting soon`, AFK breaks, and `goodbye` — manifest starts at discourse content (usually **`PRERAMBLE`**).

**Gaming portion (after DD ends — first sustained `gamign` / `silksong prep` / equivalent):**

1. **Rename & condense** purple (`gamign`/`env`), orange (`SEG`), and tan/yellow (`BEGIN`/`END`/`AFK`/`UNAFK`) stamps that remain after the DD cutoff — merge research toggles (`gamign`↔`env` ping-pong) into one deliverable label where possible.
2. **Labels** — lowercase descriptive gameplay names in `{name}.ts.txt` (`silksong prep`, `lost lace`); agent **red** only for **new** location/boss/activity stamps the user hasn’t set.
3. **Transcript + frames** — use `*_prtranscript.json` seeds plus ffmpeg probes (`_floom_probe/`, etc.) or `premiere_capture_frame_base64` for boss titles, map names, opsec clusters.
4. **Do not** recolor or rename the user’s existing markers; agent adds red / white only.

**Premiere hygiene (DD passes):**

- **Never** `premiere_delete_all_markers` on hybrid sequences.
- To replace DD chapter rows: ExtendScript delete markers **before** cutoff time only, then add chapter markers; leave post-`SEG` / post-`CONCLUSION` gaming markers intact.
- Register undo (`premiere_undo`) before bulk rename/delete experiments.

**Agent scope on hybrid `*.ts` sequences:**

- Full `{name}.ts.txt` — semi-manual; agent does **not** auto-fill. Stamp Premiere + write `prtranscript/` sidecars.
- `DD_S2E{n}.txt` — separate stylized manifest for the DD-only derivative; topic tokens only for the DD block.
- Gaming agent pass runs on the **same** active sequence, scoped to timestamps **after** the DD boundary (see `editDesc` `CONCLUSION` / first post-DD `gamign`).
