# What Information Is Included in the Packed Transcript File (`takes_packed.md`)?

> Discover what information is in the packed transcript file takes_packed.md. Learn about its phrase-level, time-annotated content including headers, speaker phrases, audio events, and silence boundaries.

- Repository: [Browser Use/video-use](https://github.com/browser-use/video-use)
- Tags: api-reference
- Published: 2026-08-06

---

**The [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) file is a phrase‑level, time‑annotated transcript that serves as the primary reading view fed to the LLM, containing take headers, timestamped speaker phrases, audio events, and silence‑gap boundaries in a compact Markdown format.**

The `video-use` repository generates [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) as the central artifact for video editing workflows. Produced by [`helpers/pack_transcripts.py`](https://github.com/browser-use/video-use/blob/main/helpers/pack_transcripts.py), this file aggregates raw ElevenLabs Scribe JSON output into a single lightweight document (≈ 12 KB) that the language model can consume directly without processing heavy visual assets.

## Core Information Elements in [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md)

The packed transcript file contains six distinct information types organized for efficient LLM parsing.

### Take Headers

Each video take begins with a Markdown heading that identifies the source and basic metadata:

```

## C0103  (duration: 43.0s, 8 phrases)

```

This header format appears at 【README.md†L79-L84】 and provides immediate context about which raw take the following phrases originate from.

### Phrase Lines with Timestamps and Speaker IDs

The bulk of the file consists of time‑annotated phrase lines following this strict format:

```

[002.52-005.36] S0 Ninety percent of what a web agent does is completely wasted.

```

Each line contains:
- **Time range** — start and end timestamps in `[SSS.MM-SSS.MM]` format
- **Speaker label** — `S0`, `S1`, etc. indicating which speaker is talking
- **Spoken text** — the transcribed phrase content

This format is documented at 【README.md†L81-L85】 and enables precise editing decisions tied to specific moments in the video.

### Audio Event Markers

Parenthetical markers capture non‑verbal audio cues that ElevenLabs Scribe detects:

- `(laughter)`
- `(applause)`
- `(sigh)`

These events are retained from the raw Scribe output as noted at 【README.md†L73-L76】, giving the LLM awareness of audience reactions and speaker expressions without listening to audio.

### Silence‑Gap Breaks

The packing script creates implicit phrase boundaries whenever silence ≥ 0.5 seconds is detected. According to 【SKILL.md†L46-L48】, this threshold ensures natural pause points appear as separate lines, making cut suggestions align with conversational rhythm.

### Speaker Diarization Labels

The `S0`, `S1`, `S2`... notation provides **speaker diarization** — automated identification of who speaks when. This multi‑speaker tracking appears throughout 【README.md†L73-L77】 and enables the LLM to distinguish between different voices in the transcript.

### Compact Markdown Structure

The entire file uses plain Markdown without embedded media, described at 【README.md†L78-L90】. This lightweight format prioritizes token efficiency: the LLM reads only text rather than filmstrips, waveforms, or word‑label PNGs generated by the secondary `timeline_view` layer.

## How [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) Is Generated

The file is produced by a dedicated helper script that processes raw transcription data.

### Generation Command

```bash

# From the project root, run the packing script:

python helpers/pack_transcripts.py --edit-dir /path/to/your/videos

# Result: /path/to/your/videos/edit/takes_packed.md

```

The [`pack_transcripts.py`](https://github.com/browser-use/video-use/blob/main/pack_transcripts.py) CLI script reads ElevenLabs Scribe JSON files from each take directory and outputs the consolidated Markdown file.

### Parsing the File Programmatically

```python
from pathlib import Path
import re

def load_packed(path: Path) -> list[dict]:
    """Parse takes_packed.md into a list of phrase dicts."""
    phrases = []
    for line in path.read_text().splitlines():
        if line.startswith('##'):        # start of a new take – ignore for phrase list

            continue
        m = re.match(r'\s*\[([\d.]+)-([\d.]+)\]\s+S(\d+)\s+(.*)', line)
        if m:
            start, end, speaker, text = m.groups()
            phrases.append({
                'start': float(start),
                'end': float(end),
                'speaker': int(speaker),
                'text': text,
            })
    return phrases

packed = load_packed(Path('edit/takes_packed.md'))
print(packed[:2])   # shows the first two phrase entries

```

This parser extracts structured data from the packed transcript format, converting timestamp strings into numeric values for downstream processing.

## Using [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) in LLM Prompts

The packed transcript integrates directly into editing prompts:

```text
You have the following transcript (phrases are time‑annotated):
[002.52-005.36] S0 Ninety percent of what a web agent does is completely wasted.
[006.08-006.74] S0 We fixed this.
...
Based on this, suggest cut points that align with natural pauses.

```

As documented in 【SKILL.md†L10-L13】, [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) is the **primary derived artifact** — the sole source the LLM reads for making editing decisions. Visual references are fetched on‑demand through the `timeline_view` layer when specific timestamps need verification.

## Key Source Files

| File | Role | Location |
|------|------|----------|
| [`helpers/pack_transcripts.py`](https://github.com/browser-use/video-use/blob/main/helpers/pack_transcripts.py) | CLI script that reads raw ElevenLabs Scribe JSON and writes [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) | 【helpers/pack_transcripts.py】 |
| [`README.md`](https://github.com/browser-use/video-use/blob/main/README.md) (section *How it works*) | Describes the two‑layer architecture and packed transcript purpose | 【README.md†L73-L90】 |
| [`SKILL.md`](https://github.com/browser-use/video-use/blob/main/SKILL.md) (section *Production rules*) | Lists [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) as primary artifact and explains generation rules | 【SKILL.md†L10-L13】【SKILL.md†L46-L48】 |

## Summary

- **[`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md)** contains **phrase‑level, time‑annotated transcripts** with speaker diarization — the complete textual foundation for video editing decisions
- **Six information types**: take headers, timestamped phrases, audio events, silence breaks, speaker labels, and compact Markdown formatting
- **Generated by** [`helpers/pack_transcripts.py`](https://github.com/browser-use/video-use/blob/main/helpers/pack_transcripts.py) from ElevenLabs Scribe JSON output as the **LLM's primary reading view**
- **Processed via** the `video-use` two‑layer architecture where visuals remain secondary to this lightweight text source

## Frequently Asked Questions

### What is the difference between raw Scribe JSON and [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md)?

The raw ElevenLabs Scribe JSON contains verbose transcription metadata including confidence scores, word‑level timing, and audio features. [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) compresses this into phrase‑level lines with only essential information: time ranges, speaker IDs, spoken text, and audio events. This compaction reduces file size from potentially megabytes to ~12 KB while preserving everything the LLM needs for editing.

### How does the 0.5‑second silence threshold affect phrase boundaries?

According to 【SKILL.md†L46-L48】, any silence gap of 0.5 seconds or longer triggers a new phrase line in [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md). This threshold was chosen to align phrase breaks with natural conversational pauses, making the resulting boundaries suitable for clean video cuts without mid‑sentence interruptions.

### Can [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) handle multi‑speaker dialog?

Yes. The speaker diarization system assigns `S0`, `S1`, `S2` (and higher) labels to distinguish speakers throughout the transcript as shown at 【README.md†L73-L77】. The LLM can track conversation flow, identify who makes specific points, and suggest cuts that maintain speaker continuity or create reaction shots based on these labels.

### Where does [`takes_packed.md`](https://github.com/browser-use/video-use/blob/main/takes_packed.md) fit in the overall `video-use` architecture?

The file sits at the **first layer** of the two‑layer system described in 【README.md†L78-L90】. It provides the LLM's reading view, while the second `timeline_view` layer handles on‑demand visual generation (filmstrips, waveforms, word labels). This separation keeps the LLM's context window focused on textual content while preserving access to visual verification when needed.