poddrill 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/poddrill/SKILL.md +4 -4
- package/README.md +6 -4
- package/package.json +1 -1
|
@@ -19,11 +19,11 @@ Do this once on the computer that will transcribe. Each step is safe to repeat.
|
|
|
19
19
|
|
|
20
20
|
1. Install Node.js 20.19 or newer and `ffmpeg`. Use the Node `.tar.gz` archive from `https://nodejs.org/dist/v20.19.0/`, or run `npx -y node@20.19.0`. On macOS, `brew install ffmpeg`. On Linux, `sudo apt-get install -y ffmpeg`.
|
|
21
21
|
|
|
22
|
-
2. Install the npm package. Run `npm install -g poddrill@0.
|
|
22
|
+
2. Install the npm package. Run `npm install -g poddrill@0.4.0`. Do not use `@latest`. Cloning the git repository is not required. If you clone it, set `GIT_TERMINAL_PROMPT=0`.
|
|
23
23
|
|
|
24
24
|
3. Run `poddrill install-python`. This creates `~/.cache/poddrill/venv` and installs cactus-needle 3.2.0, numpy 2.5.4, and onnxruntime 1.31.0. It uses `uv` when `uv` is on PATH, and otherwise `python3 -m venv`. The npm package named cactus-needle is a different package.
|
|
25
25
|
|
|
26
|
-
4. Run `poddrill fetch-weights`. This downloads `voxceleb_ECAPA512.onnx`
|
|
26
|
+
4. Run `poddrill fetch-weights`. This downloads `voxceleb_ECAPA512.onnx` and `segmentation.onnx`, checks each byte size and SHA-256, and writes them under `~/.cache/poddrill/ecapa/` and `~/.cache/poddrill/segmentation/`. A later run leaves a matching file in place.
|
|
27
27
|
|
|
28
28
|
5. Run `poddrill client doctor --client cursor --json`. Use `grok_build` or `grok_bot` in place of `cursor` when that is the client. For every check whose `state` is `bad`, run the `fix` command on that check, then run doctor again. Skip a check whose `state` is `optional`. Do not install it. Do not mention it. Do not ask the user about it. `workspace` stays `pending` until setup. Stop this loop when doctor exits 0, or when the only `bad` check is `link`.
|
|
29
29
|
|
|
@@ -53,7 +53,7 @@ Read cues only after the embedding is ready. A ready transcript can still be not
|
|
|
53
53
|
|
|
54
54
|
## Speaker groups
|
|
55
55
|
|
|
56
|
-
An asset clusters cues that sound like one voice. That cluster is a speaker group. You assign the group a name, `quote`, `ending`, or `undetermined`. The utility does not choose the name.
|
|
56
|
+
An asset clusters cues that sound like one voice. That cluster is a speaker group. The embedding stage writes the groups before that stage is ready. You assign the group a name, `quote`, `ending`, or `undetermined`. The utility does not choose the name.
|
|
57
57
|
|
|
58
58
|
Label the speaker groups before you write a summary. Do not write a summary from the transcript text alone.
|
|
59
59
|
|
|
@@ -73,7 +73,7 @@ Write the WAV at `<workspace>/audio/<file>.wav`. `poddrill start` resolves the p
|
|
|
73
73
|
|
|
74
74
|
Pass `--language <code>` on `poddrill start` when the episode is not English. The code is `en`, `de`, `fr`, `es`, `it`, `nl`, `pl`, `ja`, `ko`, or `zh`.
|
|
75
75
|
|
|
76
|
-
`poddrill start` returns before the transcript exists. Poll `poddrill episode <id>` until the transcript artifact `state` is `ready` or `failed`. The id is `ep_` plus the first 16 hex characters of the sha256 of the file bytes.
|
|
76
|
+
`poddrill start` returns before the transcript exists. The transcript job diarizes the episode, then transcribes it. Poll `poddrill episode <id>` until the transcript artifact `state` is `ready` or `failed`. The id is `ep_` plus the first 16 hex characters of the sha256 of the file bytes.
|
|
77
77
|
|
|
78
78
|
The transcript is done when that `state` is `ready`. Exit 0 does not mean the transcript is done. If the transcript or the embedding is missing or `failed`, pass the same WAV to `poddrill start` again. The episode id does not change. `created` is false, and the failed artifact runs again.
|
|
79
79
|
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Identify books mentioned in an episode and what it is about:
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## For LLM and Agent
|
|
32
|
-
The supported install is the npm package. Run `npm install -g poddrill@0.
|
|
32
|
+
The supported install is the npm package. Run `npm install -g poddrill@0.4.0`. Do not use `@latest`. Cloning this repository is not required. If you clone it, set `GIT_TERMINAL_PROMPT=0`. The agent then follows the skill shipped in the package.
|
|
33
33
|
|
|
34
34
|
### Requirements
|
|
35
35
|
|
|
@@ -38,7 +38,9 @@ The computer that runs PodDrill needs:
|
|
|
38
38
|
- Node.js 20.19 or newer. Install the `.tar.gz` archive from `https://nodejs.org/dist/v20.19.0/`, or run `npx -y node@20.19.0`. The published CLI is plain JavaScript. The tests in this repository use `node --experimental-strip-types` and need a newer Node.
|
|
39
39
|
- `ffmpeg` on `PATH`.
|
|
40
40
|
- A Python interpreter with cactus-needle 3.2.0, numpy 2.5.4, and onnxruntime 1.31.0. The npm package named cactus-needle is a different package. `poddrill install-python` creates `~/.cache/poddrill/venv` and installs those pins. It uses `uv` when `uv` is on PATH, and otherwise `python3 -m venv`. `PODDRILL_PYTHON` selects another absolute interpreter, and setup stores that path in `poddrill.json`.
|
|
41
|
-
- The ECAPA
|
|
41
|
+
- The ECAPA and segmentation weight files. `poddrill fetch-weights` downloads `voxceleb_ECAPA512.onnx` and `segmentation.onnx`, checks each size and SHA-256, and writes them under `~/.cache/poddrill/ecapa/` and `~/.cache/poddrill/segmentation/`. `PODDRILL_EMBED_WEIGHTS` and `PODDRILL_SEGMENTATION_WEIGHTS` select other paths.
|
|
42
|
+
|
|
43
|
+
The transcript job diarizes the episode, then transcribes it. The embedding job runs after the transcript is ready.
|
|
42
44
|
|
|
43
45
|
`poddrill client doctor` prints a `fix` command for every check that is not ok. `poddrill bootstrap` runs `install-python`, `fetch-weights`, and `setup`.
|
|
44
46
|
|
|
@@ -50,10 +52,10 @@ Grok Bot cannot write its server entry. It prints the custom server to add: the
|
|
|
50
52
|
|
|
51
53
|
`npm test` runs the unit tests. Those tests use `node --experimental-strip-types`.
|
|
52
54
|
|
|
53
|
-
`npm run test:smoke` runs a clean-home install, downloads the ECAPA
|
|
55
|
+
`npm run test:smoke` runs a clean-home install, downloads the ECAPA and segmentation files, and transcribes a short generated clip through `dist/cli.js`. It needs `python3` with `ensurepip`, `ffmpeg`, and `espeak-ng`. If one of those is missing, the test skips and names the missing tool. Run `npm run test:smoke` on a computer that has those tools. Build `dist/` with `npm run build` first.
|
|
54
56
|
|
|
55
57
|
## License
|
|
56
58
|
|
|
57
59
|
MIT License. Copyright 2026 Jianyu Zhao.
|
|
58
60
|
|
|
59
|
-
The ECAPA weights are separate from this license. WeSpeaker ECAPA-TDNN512 pretrained on VoxCeleb. VoxCeleb is used under CC BY 4.0.
|
|
61
|
+
The ECAPA weights are separate from this license. WeSpeaker ECAPA-TDNN512 pretrained on VoxCeleb. VoxCeleb is used under CC BY 4.0. The segmentation weights are separate from this license. pyannote segmentation-3.0 is MIT.
|