Metadata-Version: 2.4
Name: navig-pipeline
Version: 0.7.2
Summary: The content assembly line: short vertical clips cut to the beat, narrated reels, captions and hooks, and download → transcribe → script → narrate → fan-out — its own navig-pipeline command, with your own keys; also `navig pipeline` inside navig.
Author-email: NAVIG Development Team <opensource@navig.run>
License-Expression: Apache-2.0
Project-URL: Homepage, https://navig.run
Project-URL: Documentation, https://navig.run/docs
Keywords: navig,cli,agent,automation,plugin,pipeline,workflow,orchestration
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: navig-sdk>=2.16.0
Requires-Dist: navig-generate>=0.2.1
Requires-Dist: navig-media-core>=0.2.0
Requires-Dist: navig-audio>=0.3.0
Requires-Dist: numpy>=1.24
Requires-Dist: typer>=0.14.0
Requires-Dist: rich>=13.7.0
Provides-Extra: all
Requires-Dist: navig-text>=0.4.0; extra == "all"
Requires-Dist: navig-download>=0.2.0; extra == "all"
Requires-Dist: navig-social>=0.2.0; extra == "all"
Requires-Dist: navig-browser[drive]>=0.1.0; extra == "all"
Provides-Extra: film
Requires-Dist: navig-browser[drive]>=0.1.0; extra == "film"
Provides-Extra: cast
Requires-Dist: pywinpty>=2.0.13; sys_platform == "win32" and extra == "cast"
Dynamic: license-file

# navig-pipeline

<!-- navig:plugin-card:start -->
<!-- Generated by scripts/gen_plugin_catalog.py — edit the plugin's pyproject.toml, not this block. -->

> The content assembly line: short vertical clips cut to the beat, narrated reels, captions and hooks, and download → transcribe → script → narrate → fan-out — its own navig-pipeline command, with your own keys; also `navig pipeline` inside navig.

**Works on its own** — its own CLI, no navig required · v0.7.2 · [PyPI](https://pypi.org/project/navig-pipeline/)

![navig-pipeline demo](https://raw.githubusercontent.com/navig-run/plugins/main/navig-pipeline/docs/demo.gif)

**On its own** (no navig needed)

```bash
pip install navig-pipeline
navig-pipeline --help   # no navig needed
```

**With navig**

```bash
pip install navig-pipeline
navig content --help
```

<details><summary>Commands</summary>

| Command | What it does |
|---|---|
| `navig content` | Run navig content |
| `navig content captions` | ✍️  Transcribe a track to an .srt — with word-level timings. |
| `navig content cast` | 🎬 Capture a REAL command's output for the Reel Stage — once, replayable at any size. |
| `navig content clip` | 🎵 Build a vertical clip cut to a track you already have — no narration. |
| `navig content episode build` | 🎬 Build an episode end to end — and stop at the first stage that fails. |
| `navig content episode draft` | 📝 Draft an episode from an article — hook, beats, narration, posting copy. |
| `navig content episode plan` | 🧭 Reconstruct a narration plan (rebuild.json) from a legacy episode's voice + cuts. |
| `navig content episode stats record` | Store a snapshot of a posted episode's numbers (from TikTok's insights screen). |
| `navig content episode stats show` | Every episode side by side: what the cut is (hook, cuts, pace) and how it did. |
| `navig content hooks` | 🎣 Rank the passages of a track worth cutting a short clip from. |
| `navig content localize` | 🌍 The same picture in another language — captures untouched. |
| `navig content publish` | 📦 A render → a ready-to-post pack: spec check, cover, caption, hashtags. |
| `navig content qa` | 🔎 Catch a video's design bugs before (and after) rendering it. |
| `navig content recipe apply` | Unpack a recipe into an episode folder — hash-checked, never half-applied. |
| `navig content recipe export` | Pack an episode's irreplaceable sources — scenes, shotlists, narration plan, casts. |
| `navig content reel` | 🎬 Build a vertical reel per language — capture, narrate, caption, score. |
| `navig content run` | Run the assembly line from a topic (or a source clip) to a fanned-out post. |
| `navig content schedule` | Autopilot — run + publish the assembly line on a recurring cadence. |
| `navig content stage` | 📱 Compile a scene into a self-contained, phone-sized page a reel or clip can film. |
| `navig content status` | Show which assembly-line stages are wired (their plugin is installed). |
| `navig content telegram-import` | Import a Telegram channel's media into the local library, then optionally delete the |

</details>

<!-- navig:plugin-card:end -->

The **content assembly line**: short vertical clips cut to the beat, narrated reels, captions
and hooks, and a download → transcribe → script → narrate → publish flow. It runs on its own
as `navig-pipeline`, and inside navig as `navig pipeline`.

```
acquire (navig-download) → transcribe (navig-audio) → script (navig-text)
     → narrate (navig-audio) → publish (navig-social)
```

## On its own

```bash
pip install navig-pipeline                     # adds the `navig-pipeline` command
navig-pipeline status                          # which stages are wired here
navig-pipeline captions track.mp3              # word-timed .srt — no key needed (local Whisper)
navig-pipeline hooks track.mp3                 # passages worth cutting, with timings
navig-pipeline clip shot.md --range 30-45      # a vertical clip cut to the beat (ffmpeg on PATH)
navig-pipeline reel episode.md                 # narrated reel from a scenario
pip install "navig-pipeline[all]"              # + the script, acquire and publish stages of `run`
navig-pipeline run --topic "…" --dry-run
```

The media engine comes from navig-generate and the voice from navig-audio, both installed with
this. Captions use navig-audio's transcription: the OpenAI Whisper API when an OpenAI key is
set, faster-whisper on this machine otherwise. Keys come from the environment or the shared
vault (`navig-vault`).

**Filming a live URL** in a clip or reel drives your installed Chrome through navig-browser
(`pip install "navig-pipeline[film]"`, also in `[all]`); generated shots and stills need no
browser. Two things are part of navig and say so when used without it: **`schedule`** (navig's
daemon runs it) and `telegram-import` (navig's Telegram client).

## Inside navig

The same commands are `navig pipeline …`, plus the Telegram and scheduling features above.

## Why it exists

Capabilities compose. The pipeline reaches across plugins through the same public seams a
user would (navig-audio's transcription and narration, navig-generate's media engine,
navig-social's fan-out), and every stage is optional: a plugin that isn't installed drops its
stage, reported rather than silently skipped. `run` is a **dry run** unless you pass `--live`.
