# Exporting runs (ZIP, HTML, EPUB)
How Overview / Artifacts export packages selected run artifacts for offline use.
**Related:** [output layout contract](../contracts/output-contract-v1.md), [output conventions](../dev/output_conventions.md), [known limitations](../known_limitations.md) (EPUB / interactive charts).
## What you get
From **Overview** or **Artifacts**, choose artifacts and download a ZIP. The ZIP contains:
1. **Selected files** — copies of the artifacts you chose (transcript JSON, module data, charts, summaries, …).
2. **`index.html`** — a self-contained reading page built from that **same selection** (transcript view, prose summaries when present, charts gallery). Opens over `file://`.
3. **`index.epub`** — the same informational package as an ebook, when `ebooklib` is installed (see below). Written beside `index.html`; missing dependency or build failure does **not** fail the ZIP of raw files.
**Parity is selection-scoped:** HTML and EPUB only include content resolvable from the artifacts copied into that ZIP — not an automatic full-run book.
### Charts-only export
The Charts page “export visible charts” path remains a **charts ZIP + `index.html` only** (no EPUB).
## Content of `index.html` / `index.epub`
| Section | Source | EPUB notes |
|---------|--------|------------|
| Transcript | Selected / resolvable transcript JSON | Speaker-grouped turns + shared metadata |
| Summaries | Selected summary MD/JSON (LLM, narrative, action items / meeting extracts, speaker summaries, …) | Includes model / provider / truncated provenance when present |
| Charts | Selected `chart_static` / `chart_dynamic` | Static rasters embedded when valid (PNG/JPEG/WebP/GIF); interactive HTML charts become title/meta/description notes (not runnable iframes) |
Generated presentation files (`index.html`, `index.epub`, other `*.epub`) are **not** treated as transcript/summary/chart inputs if re-selected in a later export.
## Export by tag (Library)
From **Library**, open **Export by tag** to package artifacts across many transcripts that share organisation tags (stored on `processing_state`, not chart tags or Groups).
1. Choose one or more **library tags** (AND match).
2. Choose **artifact kinds** — defaults are readable TXT / CSV / SRT / VTT from each match’s **latest analysis run**. Optional kinds: managed transcript JSON, summaries, static charts, data outputs.
3. Preview matching / included / skipped counts and estimated size, then **Create ZIP**.
The ZIP layout is `{slug_or_stem}/{filename}` plus a `manifest.json` describing the selection. This path does **not** generate `index.html` / `index.epub` (those remain Overview / Artifacts / Charts export only). The same 2 GB hard-cap applies to selected source file bytes.
## Hard-cap
Export enforces a size cap on **selected source artifact bytes** before staging. Generated `index.html` / `index.epub` are **exempt** from that pre-check (EPUB may re-embed static chart images already in the ZIP).
## Dependency (`ebooklib`)
EPUB packaging uses optional **`ebooklib`**, declared on the **`visualization`** extra (also in **`[full]`**):
```bash
pip install -e '.[visualization]'
# or
pip install -e '.[full]'
```
Docker / `requirements.txt` images include `ebooklib` with the visualization stack. Without it, ZIP + `index.html` still work; `index.epub` is skipped with a log warning.
## Pipeline vs export
Human-readable **TXT / CSV / SRT / WebVTT** from the `transcript_output` module are ordinary run artifacts. Full HTML/EPUB packages are produced at **export time** from the completed run’s selected artifacts — not as an early pipeline writer that claims summaries/charts before they exist.
Persistent per-run `.epub` registration on disk (outside ZIP export) is not shipped in this release.