@steipete/summarize 0.7.0 → 0.8.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/CHANGELOG.md +52 -0
- package/README.md +53 -2
- package/dist/cli.js +3 -0
- package/dist/esm/cache.js +353 -0
- package/dist/esm/cache.js.map +1 -0
- package/dist/esm/config.js +78 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/content/asset.js +11 -17
- package/dist/esm/content/asset.js.map +1 -1
- package/dist/esm/daemon/auto-mode.js +8 -0
- package/dist/esm/daemon/auto-mode.js.map +1 -0
- package/dist/esm/daemon/cli.js +284 -0
- package/dist/esm/daemon/cli.js.map +1 -0
- package/dist/esm/daemon/config.js +82 -0
- package/dist/esm/daemon/config.js.map +1 -0
- package/dist/esm/daemon/constants.js +8 -0
- package/dist/esm/daemon/constants.js.map +1 -0
- package/dist/esm/daemon/env-merge.js +4 -0
- package/dist/esm/daemon/env-merge.js.map +1 -0
- package/dist/esm/daemon/env-snapshot.js +43 -0
- package/dist/esm/daemon/env-snapshot.js.map +1 -0
- package/dist/esm/daemon/flow-context.js +265 -0
- package/dist/esm/daemon/flow-context.js.map +1 -0
- package/dist/esm/daemon/launchd.js +149 -0
- package/dist/esm/daemon/launchd.js.map +1 -0
- package/dist/esm/daemon/meta.js +35 -0
- package/dist/esm/daemon/meta.js.map +1 -0
- package/dist/esm/daemon/models.js +175 -0
- package/dist/esm/daemon/models.js.map +1 -0
- package/dist/esm/daemon/request-settings.js +91 -0
- package/dist/esm/daemon/request-settings.js.map +1 -0
- package/dist/esm/daemon/schtasks.js +108 -0
- package/dist/esm/daemon/schtasks.js.map +1 -0
- package/dist/esm/daemon/server.js +399 -0
- package/dist/esm/daemon/server.js.map +1 -0
- package/dist/esm/daemon/summarize-progress.js +57 -0
- package/dist/esm/daemon/summarize-progress.js.map +1 -0
- package/dist/esm/daemon/summarize.js +263 -0
- package/dist/esm/daemon/summarize.js.map +1 -0
- package/dist/esm/daemon/systemd.js +117 -0
- package/dist/esm/daemon/systemd.js.map +1 -0
- package/dist/esm/flags.js +3 -1
- package/dist/esm/flags.js.map +1 -1
- package/dist/esm/llm/generate-text.js +445 -154
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/html-to-markdown.js +4 -1
- package/dist/esm/llm/html-to-markdown.js.map +1 -1
- package/dist/esm/llm/prompt.js +14 -0
- package/dist/esm/llm/prompt.js.map +1 -0
- package/dist/esm/llm/transcript-to-markdown.js +57 -0
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -0
- package/dist/esm/model-spec.js +2 -2
- package/dist/esm/model-spec.js.map +1 -1
- package/dist/esm/run/attachments.js +10 -42
- package/dist/esm/run/attachments.js.map +1 -1
- package/dist/esm/run/cache-state.js +48 -0
- package/dist/esm/run/cache-state.js.map +1 -0
- package/dist/esm/run/cli-preflight.js +15 -1
- package/dist/esm/run/cli-preflight.js.map +1 -1
- package/dist/esm/run/cookies/twitter.js +224 -0
- package/dist/esm/run/cookies/twitter.js.map +1 -0
- package/dist/esm/run/fetch-with-timeout.js +1 -1
- package/dist/esm/run/fetch-with-timeout.js.map +1 -1
- package/dist/esm/run/finish-line.js +46 -17
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/input.js +10 -4
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/preprocess.js +52 -72
- package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
- package/dist/esm/run/flows/asset/summary.js +127 -47
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +6 -1
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow.js +168 -82
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +88 -46
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/summary.js +263 -185
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/help.js +33 -2
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/markdown.js +31 -2
- package/dist/esm/run/markdown.js.map +1 -1
- package/dist/esm/run/progress.js +1 -3
- package/dist/esm/run/progress.js.map +1 -1
- package/dist/esm/run/run-env.js +36 -2
- package/dist/esm/run/run-env.js.map +1 -1
- package/dist/esm/run/runner.js +362 -227
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/summary-engine.js +22 -8
- package/dist/esm/run/summary-engine.js.map +1 -1
- package/dist/esm/run/summary-llm.js +4 -1
- package/dist/esm/run/summary-llm.js.map +1 -1
- package/dist/esm/tty/format.js +9 -0
- package/dist/esm/tty/format.js.map +1 -1
- package/dist/esm/tty/spinner.js +37 -11
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/cache.d.ts +70 -0
- package/dist/types/config.d.ts +46 -0
- package/dist/types/content/asset.d.ts +4 -3
- package/dist/types/daemon/auto-mode.d.ts +8 -0
- package/dist/types/daemon/cli.d.ts +9 -0
- package/dist/types/daemon/config.d.ts +19 -0
- package/dist/types/daemon/constants.d.ts +7 -0
- package/dist/types/daemon/env-merge.d.ts +5 -0
- package/dist/types/daemon/env-snapshot.d.ts +4 -0
- package/dist/types/daemon/flow-context.d.ts +28 -0
- package/dist/types/daemon/launchd.d.ts +29 -0
- package/dist/types/daemon/meta.d.ts +12 -0
- package/dist/types/daemon/models.d.ts +27 -0
- package/dist/types/daemon/request-settings.d.ts +27 -0
- package/dist/types/daemon/schtasks.d.ts +16 -0
- package/dist/types/daemon/server.d.ts +12 -0
- package/dist/types/daemon/summarize-progress.d.ts +2 -0
- package/dist/types/daemon/summarize.d.ts +59 -0
- package/dist/types/daemon/systemd.d.ts +16 -0
- package/dist/types/flags.d.ts +1 -1
- package/dist/types/llm/generate-text.d.ts +11 -5
- package/dist/types/llm/html-to-markdown.d.ts +4 -1
- package/dist/types/llm/prompt.d.ts +9 -0
- package/dist/types/llm/transcript-to-markdown.d.ts +34 -0
- package/dist/types/run/attachments.d.ts +4 -10
- package/dist/types/run/cache-state.d.ts +12 -0
- package/dist/types/run/cli-preflight.d.ts +1 -0
- package/dist/types/run/cookies/twitter.d.ts +17 -0
- package/dist/types/run/finish-line.d.ts +31 -1
- package/dist/types/run/flows/asset/preprocess.d.ts +5 -2
- package/dist/types/run/flows/asset/summary.d.ts +11 -0
- package/dist/types/run/flows/url/markdown.d.ts +3 -0
- package/dist/types/run/flows/url/summary.d.ts +6 -3
- package/dist/types/run/flows/url/types.d.ts +52 -18
- package/dist/types/run/help.d.ts +1 -0
- package/dist/types/run/run-env.d.ts +6 -0
- package/dist/types/run/summary-engine.d.ts +8 -2
- package/dist/types/run/summary-llm.d.ts +6 -3
- package/dist/types/tty/format.d.ts +1 -0
- package/dist/types/tty/spinner.d.ts +2 -0
- package/dist/types/version.d.ts +1 -1
- package/docs/README.md +5 -0
- package/docs/cache.md +72 -0
- package/docs/chrome-extension.md +180 -0
- package/docs/cli.md +6 -0
- package/docs/config.md +65 -1
- package/docs/extract-only.md +6 -0
- package/docs/firecrawl.md +6 -0
- package/docs/language.md +6 -0
- package/docs/llm.md +20 -0
- package/docs/manual-tests.md +6 -0
- package/docs/model-auto.md +6 -0
- package/docs/openai.md +6 -0
- package/docs/site/index.html +11 -1
- package/docs/smoketest.md +6 -0
- package/docs/website.md +6 -0
- package/docs/youtube.md +9 -2
- package/package.json +6 -9
- package/dist/cli.cjs +0 -80500
- package/dist/cli.cjs.map +0 -7
package/docs/llm.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "LLM usage, env vars, flags, and prompt rules."
|
|
3
|
+
read_when:
|
|
4
|
+
- "When changing model selection or prompt formatting."
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# LLM / summarization mode
|
|
2
8
|
|
|
3
9
|
By default `summarize` will call an LLM using **direct provider API keys**. When CLI tools are
|
|
@@ -12,6 +18,7 @@ installed, auto mode can use local CLI models when `cli.enabled` is set (see `do
|
|
|
12
18
|
|
|
13
19
|
- `.env` (optional): when running the CLI, `summarize` also reads `.env` in the current working directory and merges it into the environment (real env vars win).
|
|
14
20
|
- `XAI_API_KEY` (required for `xai/...` models)
|
|
21
|
+
- `XAI_BASE_URL` (optional; override xAI API endpoint)
|
|
15
22
|
- `OPENAI_API_KEY` (required for `openai/...` models)
|
|
16
23
|
- `OPENAI_BASE_URL` (optional; OpenAI-compatible API endpoint, e.g. OpenRouter)
|
|
17
24
|
- `OPENAI_USE_CHAT_COMPLETIONS` (optional; force OpenAI chat completions)
|
|
@@ -19,7 +26,9 @@ installed, auto mode can use local CLI models when `cli.enabled` is set (see `do
|
|
|
19
26
|
- `Z_AI_API_KEY` (required for `zai/...` models; supports `ZAI_API_KEY` alias)
|
|
20
27
|
- `Z_AI_BASE_URL` (optional; override default Z.AI base URL)
|
|
21
28
|
- `GEMINI_API_KEY` (required for `google/...` models; also accepts `GOOGLE_GENERATIVE_AI_API_KEY` / `GOOGLE_API_KEY`)
|
|
29
|
+
- `GOOGLE_BASE_URL` / `GEMINI_BASE_URL` (optional; override Google API endpoint)
|
|
22
30
|
- `ANTHROPIC_API_KEY` (required for `anthropic/...` models)
|
|
31
|
+
- `ANTHROPIC_BASE_URL` (optional; override Anthropic API endpoint)
|
|
23
32
|
- `SUMMARIZE_MODEL` (optional; overrides default model selection)
|
|
24
33
|
- `CLAUDE_PATH` / `CODEX_PATH` / `GEMINI_PATH` (optional; override CLI binary paths)
|
|
25
34
|
|
|
@@ -43,12 +52,23 @@ installed, auto mode can use local CLI models when `cli.enabled` is set (see `do
|
|
|
43
52
|
- See `docs/model-auto.md`
|
|
44
53
|
- `--model <preset>`
|
|
45
54
|
- Uses a config-defined preset (see `docs/config.md` → “Presets”).
|
|
55
|
+
- `--prompt <text>` / `--prompt-file <path>`
|
|
56
|
+
- Overrides the built-in summary instructions (prompt becomes the instruction prefix).
|
|
57
|
+
- Prompts are wrapped in `<instructions>`, `<context>`, `<content>` tags.
|
|
58
|
+
- When `--length` is numeric, we add `Output is X characters.` When `--language` is explicitly set, we add `Output should be <language>.`
|
|
59
|
+
- `--no-cache`
|
|
60
|
+
- Bypass cache reads and writes (extracted content, transcripts, summaries).
|
|
61
|
+
- `--cache-stats`
|
|
62
|
+
- Print cache stats and exit.
|
|
63
|
+
- `--clear-cache`
|
|
64
|
+
- Delete the cache database and exit. Must be used alone.
|
|
46
65
|
- `--video-mode auto|transcript|understand`
|
|
47
66
|
- Only relevant for video inputs / video-only pages.
|
|
48
67
|
- `--length short|medium|long|xl|xxl|<chars>`
|
|
49
68
|
- This is *soft guidance* to the model (no hard truncation).
|
|
50
69
|
- Minimum numeric value: 50 chars.
|
|
51
70
|
- Default: `long`.
|
|
71
|
+
- Output format is Markdown; use short paragraphs and only add bullets when they improve scanability.
|
|
52
72
|
- `--max-output-tokens <count>`
|
|
53
73
|
- Hard cap for output tokens (optional).
|
|
54
74
|
- If omitted, no max token parameter is sent (provider default).
|
package/docs/manual-tests.md
CHANGED
package/docs/model-auto.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Auto model selection logic and config rules."
|
|
3
|
+
read_when:
|
|
4
|
+
- "When changing auto selection behavior."
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# Auto model selection (`--model auto`)
|
|
2
8
|
|
|
3
9
|
`--model auto` picks a model based on input kind + token size, and retries with fallbacks when something fails.
|
package/docs/openai.md
CHANGED
package/docs/site/index.html
CHANGED
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
<h1 class="title">Link → clean text → summary.</h1>
|
|
41
41
|
<p class="lede">
|
|
42
42
|
A pragmatic pipeline for the web: <strong>extract</strong> the good stuff, <strong>sanitize</strong> it,
|
|
43
|
-
then <strong>summarize</strong> with your model of choice. Podcast episode pages included.
|
|
43
|
+
then <strong>summarize</strong> with your model of choice. Podcast episode pages included. Plus a Chrome
|
|
44
|
+
side panel extension when you want it in-browser.
|
|
44
45
|
</p>
|
|
45
46
|
|
|
46
47
|
<div class="pillRow">
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
<span class="pill"><span class="pill__dot" aria-hidden="true" style="background: var(--accent2)"></span> YouTube transcripts</span>
|
|
49
50
|
<span class="pill"><span class="pill__dot" aria-hidden="true" style="background: var(--accent3)"></span> Podcast compatibility</span>
|
|
50
51
|
<span class="pill"><span class="pill__dot" aria-hidden="true" style="background: var(--accent3)"></span> JSON + metrics</span>
|
|
52
|
+
<span class="pill"><span class="pill__dot" aria-hidden="true" style="background: var(--accent2)"></span> Chrome extension</span>
|
|
51
53
|
</div>
|
|
52
54
|
|
|
53
55
|
<div class="ctaRow">
|
|
@@ -118,6 +120,14 @@
|
|
|
118
120
|
<p>OpenAI, xAI, Gemini — use what you’ve got, pin what you need.</p>
|
|
119
121
|
<div class="small">Control via <code>--model</code> + env vars</div>
|
|
120
122
|
</div>
|
|
123
|
+
<div class="card reveal">
|
|
124
|
+
<h2>Chrome side panel</h2>
|
|
125
|
+
<p>Summarize the active tab without leaving your browser.</p>
|
|
126
|
+
<div class="small">
|
|
127
|
+
Companion extension for the CLI. Download from the
|
|
128
|
+
<a href="https://github.com/steipete/summarize/releases/latest">latest GitHub release</a>.
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
121
131
|
</section>
|
|
122
132
|
|
|
123
133
|
<footer class="footer">
|
package/docs/smoketest.md
CHANGED
package/docs/website.md
CHANGED
package/docs/youtube.md
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "YouTube transcript extraction modes and fallbacks."
|
|
3
|
+
read_when:
|
|
4
|
+
- "When changing YouTube handling."
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
# YouTube mode
|
|
2
8
|
|
|
3
9
|
YouTube URLs use transcript-first extraction.
|
|
4
10
|
|
|
5
|
-
## `--youtube auto|web|apify|yt-dlp`
|
|
11
|
+
## `--youtube auto|web|no-auto|apify|yt-dlp`
|
|
6
12
|
|
|
7
|
-
- `auto` (default): try `youtubei` → `captionTracks` →
|
|
13
|
+
- `auto` (default): try `youtubei` → `captionTracks` → `yt-dlp` (if configured) → Apify (if token exists)
|
|
8
14
|
- `web`: try `youtubei` → `captionTracks` only
|
|
15
|
+
- `no-auto`: try creator captions only (skip auto-generated/ASR) → `yt-dlp` (if configured)
|
|
9
16
|
- `apify`: Apify only
|
|
10
17
|
- `yt-dlp`: download audio + transcribe (local `whisper.cpp` preferred; OpenAI/FAL fallback)
|
|
11
18
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steipete/summarize",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Link → clean text → summary.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"summarize": "./dist/cli.
|
|
8
|
-
"summarizer": "./dist/cli.
|
|
7
|
+
"summarize": "./dist/cli.js",
|
|
8
|
+
"summarizer": "./dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"main": "./dist/esm/index.js",
|
|
11
11
|
"module": "./dist/esm/index.js",
|
|
@@ -35,20 +35,16 @@
|
|
|
35
35
|
"node": ">=22"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@
|
|
38
|
+
"@mariozechner/pi-ai": "^0.30.2",
|
|
39
|
+
"@steipete/summarize-core": "0.8.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@ai-sdk/anthropic": "3.0.1",
|
|
42
|
-
"@ai-sdk/google": "3.0.1",
|
|
43
|
-
"@ai-sdk/openai": "3.0.1",
|
|
44
|
-
"@ai-sdk/xai": "3.0.1",
|
|
45
42
|
"@biomejs/biome": "^2.3.10",
|
|
46
43
|
"@fal-ai/client": "^1.8.1",
|
|
47
44
|
"@types/jsdom": "^27.0.0",
|
|
48
45
|
"@types/node": "^25.0.3",
|
|
49
46
|
"@types/sanitize-html": "^2.16.0",
|
|
50
47
|
"@vitest/coverage-v8": "^4.0.16",
|
|
51
|
-
"ai": "6.0.3",
|
|
52
48
|
"commander": "^14.0.2",
|
|
53
49
|
"esbuild": "^0.27.2",
|
|
54
50
|
"file-type": "^21.2.0",
|
|
@@ -72,6 +68,7 @@
|
|
|
72
68
|
"build:cli": "node scripts/build-cli.mjs",
|
|
73
69
|
"build:bun": "bun scripts/build-bun.js",
|
|
74
70
|
"build:bun:test": "bun scripts/build-bun.js --test",
|
|
71
|
+
"docs:list": "tsx scripts/docs-list.ts",
|
|
75
72
|
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
76
73
|
"summarize": "tsx src/cli.ts",
|
|
77
74
|
"s": "tsx src/cli.ts",
|