@steipete/summarize 0.9.0 → 0.11.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 +121 -0
- package/LICENSE +1 -1
- package/README.md +391 -183
- package/dist/cli.js +1 -1
- package/dist/esm/cache.js +134 -64
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/cli-main.js +27 -27
- package/dist/esm/cli-main.js.map +1 -1
- package/dist/esm/cli.js +2 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config.js +396 -126
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/content/asset.js +53 -50
- package/dist/esm/content/asset.js.map +1 -1
- package/dist/esm/content/index.js +1 -1
- package/dist/esm/content/index.js.map +1 -1
- package/dist/esm/costs.js +1 -1
- package/dist/esm/costs.js.map +1 -1
- package/dist/esm/daemon/agent.js +548 -0
- package/dist/esm/daemon/agent.js.map +1 -0
- package/dist/esm/daemon/auto-mode.js +3 -3
- package/dist/esm/daemon/auto-mode.js.map +1 -1
- package/dist/esm/daemon/chat.js +88 -178
- package/dist/esm/daemon/chat.js.map +1 -1
- package/dist/esm/daemon/cli-entrypoint.js +72 -0
- package/dist/esm/daemon/cli-entrypoint.js.map +1 -0
- package/dist/esm/daemon/cli.js +91 -83
- package/dist/esm/daemon/cli.js.map +1 -1
- package/dist/esm/daemon/config.js +15 -15
- package/dist/esm/daemon/config.js.map +1 -1
- package/dist/esm/daemon/constants.js +6 -6
- package/dist/esm/daemon/constants.js.map +1 -1
- package/dist/esm/daemon/env-merge.js.map +1 -1
- package/dist/esm/daemon/env-snapshot.js +36 -28
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +86 -32
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/launchd.js +119 -47
- package/dist/esm/daemon/launchd.js.map +1 -1
- package/dist/esm/daemon/meta.js +5 -5
- package/dist/esm/daemon/meta.js.map +1 -1
- package/dist/esm/daemon/models.js +54 -31
- package/dist/esm/daemon/models.js.map +1 -1
- package/dist/esm/daemon/process-registry.js +206 -0
- package/dist/esm/daemon/process-registry.js.map +1 -0
- package/dist/esm/daemon/schtasks.js +96 -32
- package/dist/esm/daemon/schtasks.js.map +1 -1
- package/dist/esm/daemon/server.js +832 -158
- package/dist/esm/daemon/server.js.map +1 -1
- package/dist/esm/daemon/summarize-progress.js +11 -11
- package/dist/esm/daemon/summarize-progress.js.map +1 -1
- package/dist/esm/daemon/summarize.js +61 -32
- package/dist/esm/daemon/summarize.js.map +1 -1
- package/dist/esm/daemon/systemd.js +96 -35
- package/dist/esm/daemon/systemd.js.map +1 -1
- package/dist/esm/firecrawl.js +12 -12
- package/dist/esm/firecrawl.js.map +1 -1
- package/dist/esm/flags.js +55 -31
- package/dist/esm/flags.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/language.js +1 -1
- package/dist/esm/language.js.map +1 -1
- package/dist/esm/llm/cli.js +128 -64
- package/dist/esm/llm/cli.js.map +1 -1
- package/dist/esm/llm/errors.js +1 -1
- package/dist/esm/llm/errors.js.map +1 -1
- package/dist/esm/llm/generate-text.js +107 -98
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/google-models.js +17 -17
- package/dist/esm/llm/google-models.js.map +1 -1
- package/dist/esm/llm/html-to-markdown.js +3 -3
- package/dist/esm/llm/html-to-markdown.js.map +1 -1
- package/dist/esm/llm/model-id.js +38 -16
- package/dist/esm/llm/model-id.js.map +1 -1
- package/dist/esm/llm/prompt.js +5 -5
- package/dist/esm/llm/prompt.js.map +1 -1
- package/dist/esm/llm/providers/anthropic.js +33 -33
- package/dist/esm/llm/providers/anthropic.js.map +1 -1
- package/dist/esm/llm/providers/google.js +19 -19
- package/dist/esm/llm/providers/google.js.map +1 -1
- package/dist/esm/llm/providers/models.js +30 -30
- package/dist/esm/llm/providers/models.js.map +1 -1
- package/dist/esm/llm/providers/openai.js +36 -35
- package/dist/esm/llm/providers/openai.js.map +1 -1
- package/dist/esm/llm/providers/shared.js +8 -8
- package/dist/esm/llm/providers/shared.js.map +1 -1
- package/dist/esm/llm/transcript-to-markdown.js +9 -5
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
- package/dist/esm/llm/usage.js +18 -18
- package/dist/esm/llm/usage.js.map +1 -1
- package/dist/esm/logging/daemon.js +21 -21
- package/dist/esm/logging/daemon.js.map +1 -1
- package/dist/esm/logging/ring-file.js +5 -5
- package/dist/esm/logging/ring-file.js.map +1 -1
- package/dist/esm/markitdown.js +21 -19
- package/dist/esm/markitdown.js.map +1 -1
- package/dist/esm/media-cache.js +251 -0
- package/dist/esm/media-cache.js.map +1 -0
- package/dist/esm/model-auto.js +175 -106
- package/dist/esm/model-auto.js.map +1 -1
- package/dist/esm/model-spec.js +52 -42
- package/dist/esm/model-spec.js.map +1 -1
- package/dist/esm/pricing/litellm.js +4 -4
- package/dist/esm/pricing/litellm.js.map +1 -1
- package/dist/esm/processes.js +2 -0
- package/dist/esm/processes.js.map +1 -0
- package/dist/esm/prompts/index.js +1 -1
- package/dist/esm/prompts/index.js.map +1 -1
- package/dist/esm/refresh-free.js +81 -81
- package/dist/esm/refresh-free.js.map +1 -1
- package/dist/esm/run/attachments.js +47 -44
- package/dist/esm/run/attachments.js.map +1 -1
- package/dist/esm/run/bird.js +125 -12
- package/dist/esm/run/bird.js.map +1 -1
- package/dist/esm/run/cache-state.js +7 -7
- package/dist/esm/run/cache-state.js.map +1 -1
- package/dist/esm/run/cli-fallback-state.js +45 -0
- package/dist/esm/run/cli-fallback-state.js.map +1 -0
- package/dist/esm/run/cli-preflight.js +40 -22
- package/dist/esm/run/cli-preflight.js.map +1 -1
- package/dist/esm/run/constants.js +12 -12
- package/dist/esm/run/constants.js.map +1 -1
- package/dist/esm/run/cookies/twitter.js +47 -47
- package/dist/esm/run/cookies/twitter.js.map +1 -1
- package/dist/esm/run/env.js +21 -15
- package/dist/esm/run/env.js.map +1 -1
- package/dist/esm/run/fetch-with-timeout.js +4 -4
- package/dist/esm/run/fetch-with-timeout.js.map +1 -1
- package/dist/esm/run/finish-line.js +78 -71
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/extract.js +70 -0
- package/dist/esm/run/flows/asset/extract.js.map +1 -0
- package/dist/esm/run/flows/asset/input.js +202 -37
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/media-policy.js +3 -0
- package/dist/esm/run/flows/asset/media-policy.js.map +1 -0
- package/dist/esm/run/flows/asset/media.js +233 -0
- package/dist/esm/run/flows/asset/media.js.map +1 -0
- package/dist/esm/run/flows/asset/output.js +98 -0
- package/dist/esm/run/flows/asset/output.js.map +1 -0
- package/dist/esm/run/flows/asset/preprocess.js +79 -44
- package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
- package/dist/esm/run/flows/asset/summary.js +306 -89
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +31 -31
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow.js +388 -82
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +61 -56
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/slides-output.js +487 -0
- package/dist/esm/run/flows/url/slides-output.js.map +1 -0
- package/dist/esm/run/flows/url/slides-text.js +628 -0
- package/dist/esm/run/flows/url/slides-text.js.map +1 -0
- package/dist/esm/run/flows/url/summary.js +493 -152
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/format.js +10 -10
- package/dist/esm/run/format.js.map +1 -1
- package/dist/esm/run/help.js +179 -84
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/logging.js +20 -12
- package/dist/esm/run/logging.js.map +1 -1
- package/dist/esm/run/markdown.js +12 -12
- package/dist/esm/run/markdown.js.map +1 -1
- package/dist/esm/run/media-cache-state.js +33 -0
- package/dist/esm/run/media-cache-state.js.map +1 -0
- package/dist/esm/run/model-attempts.js.map +1 -1
- package/dist/esm/run/openrouter.js +11 -11
- package/dist/esm/run/openrouter.js.map +1 -1
- package/dist/esm/run/progress.js +19 -1
- package/dist/esm/run/progress.js.map +1 -1
- package/dist/esm/run/run-config.js +16 -16
- package/dist/esm/run/run-config.js.map +1 -1
- package/dist/esm/run/run-context.js +2 -2
- package/dist/esm/run/run-context.js.map +1 -1
- package/dist/esm/run/run-env.js +55 -54
- package/dist/esm/run/run-env.js.map +1 -1
- package/dist/esm/run/run-input.js +3 -3
- package/dist/esm/run/run-input.js.map +1 -1
- package/dist/esm/run/run-metrics.js +16 -16
- package/dist/esm/run/run-metrics.js.map +1 -1
- package/dist/esm/run/run-models.js +28 -23
- package/dist/esm/run/run-models.js.map +1 -1
- package/dist/esm/run/run-output.js +3 -3
- package/dist/esm/run/run-output.js.map +1 -1
- package/dist/esm/run/run-settings.js +108 -21
- package/dist/esm/run/run-settings.js.map +1 -1
- package/dist/esm/run/run-stream.js +4 -4
- package/dist/esm/run/run-stream.js.map +1 -1
- package/dist/esm/run/runner.js +327 -100
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-cli.js +226 -0
- package/dist/esm/run/slides-cli.js.map +1 -0
- package/dist/esm/run/slides-render.js +163 -0
- package/dist/esm/run/slides-render.js.map +1 -0
- package/dist/esm/run/stdin-temp-file.js +77 -0
- package/dist/esm/run/stdin-temp-file.js.map +1 -0
- package/dist/esm/run/stream-output.js +17 -10
- package/dist/esm/run/stream-output.js.map +1 -1
- package/dist/esm/run/streaming.js +16 -16
- package/dist/esm/run/streaming.js.map +1 -1
- package/dist/esm/run/summary-engine.js +89 -57
- package/dist/esm/run/summary-engine.js.map +1 -1
- package/dist/esm/run/summary-llm.js +3 -3
- package/dist/esm/run/summary-llm.js.map +1 -1
- package/dist/esm/run/terminal.js +4 -4
- package/dist/esm/run/terminal.js.map +1 -1
- package/dist/esm/run/tips.js +2 -2
- package/dist/esm/run/tips.js.map +1 -1
- package/dist/esm/run/transcriber-cli.js +148 -0
- package/dist/esm/run/transcriber-cli.js.map +1 -0
- package/dist/esm/run.js +1 -1
- package/dist/esm/run.js.map +1 -1
- package/dist/esm/shared/contracts.js +1 -1
- package/dist/esm/shared/contracts.js.map +1 -1
- package/dist/esm/shared/sse-events.js +16 -12
- package/dist/esm/shared/sse-events.js.map +1 -1
- package/dist/esm/shared/streaming-merge.js +3 -3
- package/dist/esm/shared/streaming-merge.js.map +1 -1
- package/dist/esm/slides/extract.js +1951 -0
- package/dist/esm/slides/extract.js.map +1 -0
- package/dist/esm/slides/index.js +4 -0
- package/dist/esm/slides/index.js.map +1 -0
- package/dist/esm/slides/settings.js +73 -0
- package/dist/esm/slides/settings.js.map +1 -0
- package/dist/esm/slides/store.js +111 -0
- package/dist/esm/slides/store.js.map +1 -0
- package/dist/esm/slides/types.js +2 -0
- package/dist/esm/slides/types.js.map +1 -0
- package/dist/esm/tty/format.js +13 -13
- package/dist/esm/tty/format.js.map +1 -1
- package/dist/esm/tty/osc-progress.js +22 -2
- package/dist/esm/tty/osc-progress.js.map +1 -1
- package/dist/esm/tty/progress/fetch-html.js +20 -16
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript.js +127 -68
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +21 -10
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/theme.js +189 -0
- package/dist/esm/tty/theme.js.map +1 -0
- package/dist/esm/tty/website-progress.js +38 -34
- package/dist/esm/tty/website-progress.js.map +1 -1
- package/dist/esm/version.js +29 -29
- package/dist/esm/version.js.map +1 -1
- package/dist/types/cache.d.ts +19 -7
- package/dist/types/config.d.ts +71 -6
- package/dist/types/content/asset.d.ts +8 -6
- package/dist/types/content/index.d.ts +1 -1
- package/dist/types/costs.d.ts +3 -3
- package/dist/types/daemon/agent.d.ts +25 -0
- package/dist/types/daemon/auto-mode.d.ts +3 -3
- package/dist/types/daemon/chat.d.ts +10 -18
- package/dist/types/daemon/cli-entrypoint.d.ts +2 -0
- package/dist/types/daemon/config.d.ts +2 -2
- package/dist/types/daemon/env-merge.d.ts +1 -1
- package/dist/types/daemon/env-snapshot.d.ts +1 -1
- package/dist/types/daemon/flow-context.d.ts +24 -4
- package/dist/types/daemon/launchd.d.ts +12 -0
- package/dist/types/daemon/models.d.ts +6 -2
- package/dist/types/daemon/process-registry.d.ts +73 -0
- package/dist/types/daemon/schtasks.d.ts +4 -0
- package/dist/types/daemon/server.d.ts +2 -2
- package/dist/types/daemon/summarize-progress.d.ts +1 -1
- package/dist/types/daemon/summarize.d.ts +38 -7
- package/dist/types/daemon/systemd.d.ts +4 -0
- package/dist/types/firecrawl.d.ts +1 -1
- package/dist/types/flags.d.ts +12 -11
- package/dist/types/index.d.ts +4 -4
- package/dist/types/language.d.ts +1 -1
- package/dist/types/llm/attachments.d.ts +1 -1
- package/dist/types/llm/cli.d.ts +3 -3
- package/dist/types/llm/generate-text.d.ts +7 -7
- package/dist/types/llm/html-to-markdown.d.ts +3 -3
- package/dist/types/llm/model-id.d.ts +1 -1
- package/dist/types/llm/prompt.d.ts +2 -2
- package/dist/types/llm/providers/anthropic.d.ts +3 -3
- package/dist/types/llm/providers/google.d.ts +3 -3
- package/dist/types/llm/providers/models.d.ts +2 -2
- package/dist/types/llm/providers/openai.d.ts +4 -4
- package/dist/types/llm/providers/shared.d.ts +2 -2
- package/dist/types/llm/transcript-to-markdown.d.ts +4 -2
- package/dist/types/llm/usage.d.ts +1 -1
- package/dist/types/logging/daemon.d.ts +4 -4
- package/dist/types/markitdown.d.ts +1 -1
- package/dist/types/media-cache.d.ts +22 -0
- package/dist/types/model-auto.d.ts +14 -4
- package/dist/types/model-spec.d.ts +10 -10
- package/dist/types/pricing/litellm.d.ts +1 -1
- package/dist/types/processes.d.ts +1 -0
- package/dist/types/prompts/index.d.ts +1 -1
- package/dist/types/run/attachments.d.ts +7 -7
- package/dist/types/run/bird.d.ts +7 -0
- package/dist/types/run/cache-state.d.ts +2 -2
- package/dist/types/run/cli-fallback-state.d.ts +6 -0
- package/dist/types/run/constants.d.ts +1 -1
- package/dist/types/run/cookies/twitter.d.ts +1 -1
- package/dist/types/run/env.d.ts +1 -1
- package/dist/types/run/finish-line.d.ts +7 -6
- package/dist/types/run/flows/asset/extract.d.ts +18 -0
- package/dist/types/run/flows/asset/input.d.ts +19 -3
- package/dist/types/run/flows/asset/media-policy.d.ts +2 -0
- package/dist/types/run/flows/asset/media.d.ts +21 -0
- package/dist/types/run/flows/asset/output.d.ts +42 -0
- package/dist/types/run/flows/asset/preprocess.d.ts +23 -17
- package/dist/types/run/flows/asset/summary.d.ts +24 -16
- package/dist/types/run/flows/url/extract.d.ts +3 -2
- package/dist/types/run/flows/url/flow.d.ts +1 -1
- package/dist/types/run/flows/url/markdown.d.ts +6 -6
- package/dist/types/run/flows/url/slides-output.d.ts +66 -0
- package/dist/types/run/flows/url/slides-text.d.ts +87 -0
- package/dist/types/run/flows/url/summary.d.ts +18 -10
- package/dist/types/run/flows/url/types.d.ts +52 -21
- package/dist/types/run/format.d.ts +3 -3
- package/dist/types/run/help.d.ts +4 -1
- package/dist/types/run/logging.d.ts +3 -2
- package/dist/types/run/media-cache-state.d.ts +7 -0
- package/dist/types/run/model-attempts.d.ts +1 -1
- package/dist/types/run/progress.d.ts +2 -1
- package/dist/types/run/run-config.d.ts +4 -4
- package/dist/types/run/run-context.d.ts +3 -1
- package/dist/types/run/run-env.d.ts +3 -1
- package/dist/types/run/run-input.d.ts +2 -2
- package/dist/types/run/run-metrics.d.ts +3 -3
- package/dist/types/run/run-models.d.ts +3 -2
- package/dist/types/run/run-output.d.ts +1 -1
- package/dist/types/run/run-settings.d.ts +20 -5
- package/dist/types/run/run-stream.d.ts +2 -2
- package/dist/types/run/runner.d.ts +3 -2
- package/dist/types/run/slides-cli.d.ts +9 -0
- package/dist/types/run/slides-render.d.ts +30 -0
- package/dist/types/run/stdin-temp-file.d.ts +9 -0
- package/dist/types/run/stream-output.d.ts +3 -2
- package/dist/types/run/streaming.d.ts +4 -4
- package/dist/types/run/summary-engine.d.ts +22 -12
- package/dist/types/run/summary-llm.d.ts +5 -5
- package/dist/types/run/transcriber-cli.d.ts +8 -0
- package/dist/types/run/types.d.ts +4 -4
- package/dist/types/run.d.ts +1 -1
- package/dist/types/shared/contracts.d.ts +2 -2
- package/dist/types/shared/sse-events.d.ts +26 -6
- package/dist/types/slides/extract.d.ts +43 -0
- package/dist/types/slides/index.d.ts +5 -0
- package/dist/types/slides/settings.d.ts +20 -0
- package/dist/types/slides/store.d.ts +15 -0
- package/dist/types/slides/types.d.ts +40 -0
- package/dist/types/tty/osc-progress.d.ts +5 -5
- package/dist/types/tty/progress/fetch-html.d.ts +5 -3
- package/dist/types/tty/progress/transcript.d.ts +5 -3
- package/dist/types/tty/spinner.d.ts +3 -1
- package/dist/types/tty/theme.d.ts +44 -0
- package/dist/types/tty/website-progress.d.ts +5 -3
- package/dist/types/version.d.ts +1 -1
- package/docs/README.md +1 -1
- package/docs/_config.yml +26 -0
- package/docs/_layouts/default.html +60 -0
- package/docs/agent.md +367 -0
- package/docs/assets/site.css +748 -0
- package/docs/assets/site.js +72 -0
- package/docs/assets/summarize-cli.png +0 -0
- package/docs/assets/summarize-extension.png +0 -0
- package/docs/assets/youtube-slides.png +0 -0
- package/docs/cache.md +29 -3
- package/docs/chrome-extension.md +72 -16
- package/docs/cli.md +59 -13
- package/docs/config.md +109 -12
- package/docs/extract-only.md +10 -0
- package/docs/index.html +224 -0
- package/docs/index.md +25 -0
- package/docs/llm.md +18 -5
- package/docs/manual-tests.md +2 -0
- package/docs/media.md +6 -2
- package/docs/model-auto.md +3 -2
- package/docs/nvidia-onnx-transcription.md +55 -0
- package/docs/openai.md +1 -1
- package/docs/releasing.md +3 -0
- package/docs/site/404.html +4 -1
- package/docs/site/assets/site.css +399 -228
- package/docs/site/assets/site.js +46 -46
- package/docs/site/assets/summarize-cli.png +0 -0
- package/docs/site/assets/summarize-extension.png +0 -0
- package/docs/site/docs/chrome-extension.html +101 -0
- package/docs/site/docs/config.html +30 -8
- package/docs/site/docs/extract-only.html +17 -4
- package/docs/site/docs/firecrawl.html +13 -3
- package/docs/site/docs/index.html +40 -6
- package/docs/site/docs/llm.html +20 -5
- package/docs/site/docs/openai.html +19 -5
- package/docs/site/docs/website.html +30 -9
- package/docs/site/docs/youtube.html +13 -3
- package/docs/site/index.html +168 -85
- package/docs/slides.md +82 -0
- package/docs/smoketest.md +29 -20
- package/docs/timestamps.md +124 -0
- package/docs/website.md +13 -0
- package/docs/youtube.md +20 -0
- package/package.json +57 -48
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
<link rel="canonical" href="https://summarize.sh/docs/website" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
-
<link
|
|
11
|
+
<link
|
|
12
|
+
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap"
|
|
13
|
+
rel="stylesheet"
|
|
14
|
+
/>
|
|
12
15
|
<link rel="stylesheet" href="../assets/site.css" />
|
|
13
16
|
</head>
|
|
14
17
|
<body>
|
|
@@ -29,6 +32,7 @@
|
|
|
29
32
|
<aside class="side" aria-label="Docs navigation">
|
|
30
33
|
<h2>Docs</h2>
|
|
31
34
|
<a href="./index.html">Overview</a>
|
|
35
|
+
<a href="./chrome-extension.html">Chrome extension</a>
|
|
32
36
|
<a href="./website.html">Website mode</a>
|
|
33
37
|
<a href="./youtube.html">YouTube mode</a>
|
|
34
38
|
<a href="./extract-only.html">Extract</a>
|
|
@@ -41,9 +45,19 @@
|
|
|
41
45
|
<article class="doc reveal">
|
|
42
46
|
<p class="kicker">mode</p>
|
|
43
47
|
<h1>Website mode</h1>
|
|
44
|
-
<p>
|
|
48
|
+
<p>
|
|
49
|
+
Fetch HTML → extract “article-ish” content → normalize to clean text. If extraction
|
|
50
|
+
looks blocked or too thin, retry via Firecrawl Markdown (optional). With
|
|
51
|
+
<code>--format md</code>, the CLI prefers Firecrawl Markdown when configured and can
|
|
52
|
+
also convert HTML → Markdown via <code>--markdown-mode</code> (LLM) or
|
|
53
|
+
<code>uvx markitdown</code>.
|
|
54
|
+
</p>
|
|
45
55
|
|
|
46
|
-
<p>
|
|
56
|
+
<p>
|
|
57
|
+
Podcast pages are supported (Apple Podcasts, Spotify episodes, RSS feeds, Podbean,
|
|
58
|
+
Podchaser, embedded YouTube). Summaries use published transcripts when available,
|
|
59
|
+
otherwise Whisper.
|
|
60
|
+
</p>
|
|
47
61
|
|
|
48
62
|
<h2>Flags</h2>
|
|
49
63
|
<ul>
|
|
@@ -51,22 +65,29 @@
|
|
|
51
65
|
<li><code>--timeout 30s|2m|5000ms</code> (default <code>2m</code>)</li>
|
|
52
66
|
<li><code>--extract</code> (print extracted content; no summary call)</li>
|
|
53
67
|
<li><code>--format md|text</code> (default <code>text</code>)</li>
|
|
54
|
-
<li
|
|
55
|
-
|
|
68
|
+
<li>
|
|
69
|
+
<code>--markdown-mode off|auto|llm|readability</code> (only with
|
|
70
|
+
<code>--format md</code>)
|
|
71
|
+
</li>
|
|
72
|
+
<li>
|
|
73
|
+
<code>--preprocess off|auto|always</code> (default <code>auto</code>; controls
|
|
74
|
+
markitdown usage)
|
|
75
|
+
</li>
|
|
56
76
|
<li><code>--json</code> (emit a single JSON object)</li>
|
|
57
77
|
<li><code>--verbose</code> (progress + which extractor was used)</li>
|
|
58
78
|
<li><code>--metrics off|on|detailed</code></li>
|
|
59
79
|
</ul>
|
|
60
80
|
|
|
61
|
-
<div class="note">
|
|
62
|
-
Plain-text mode: <code>--extract --format text</code>.
|
|
63
|
-
</div>
|
|
81
|
+
<div class="note">Plain-text mode: <code>--extract --format text</code>.</div>
|
|
64
82
|
</article>
|
|
65
83
|
</section>
|
|
66
84
|
|
|
67
85
|
<footer class="footer">
|
|
68
86
|
<span>summarize — Link → clean text → summary.</span>
|
|
69
|
-
<span
|
|
87
|
+
<span
|
|
88
|
+
><a href="./index.html">Docs</a> ·
|
|
89
|
+
<a href="https://github.com/steipete/summarize">Repo</a></span
|
|
90
|
+
>
|
|
70
91
|
</footer>
|
|
71
92
|
</main>
|
|
72
93
|
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
<link rel="canonical" href="https://summarize.sh/docs/youtube" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
-
<link
|
|
11
|
+
<link
|
|
12
|
+
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap"
|
|
13
|
+
rel="stylesheet"
|
|
14
|
+
/>
|
|
12
15
|
<link rel="stylesheet" href="../assets/site.css" />
|
|
13
16
|
</head>
|
|
14
17
|
<body>
|
|
@@ -29,6 +32,7 @@
|
|
|
29
32
|
<aside class="side" aria-label="Docs navigation">
|
|
30
33
|
<h2>Docs</h2>
|
|
31
34
|
<a href="./index.html">Overview</a>
|
|
35
|
+
<a href="./chrome-extension.html">Chrome extension</a>
|
|
32
36
|
<a href="./website.html">Website mode</a>
|
|
33
37
|
<a href="./youtube.html">YouTube mode</a>
|
|
34
38
|
<a href="./extract-only.html">Extract</a>
|
|
@@ -41,7 +45,10 @@
|
|
|
41
45
|
<article class="doc reveal">
|
|
42
46
|
<p class="kicker">mode</p>
|
|
43
47
|
<h1>YouTube mode</h1>
|
|
44
|
-
<p>
|
|
48
|
+
<p>
|
|
49
|
+
Extracts transcripts via multiple strategies. The goal: reliable text, even when YouTube
|
|
50
|
+
is being “difficult”.
|
|
51
|
+
</p>
|
|
45
52
|
|
|
46
53
|
<h2>Tip</h2>
|
|
47
54
|
<ul>
|
|
@@ -53,7 +60,10 @@
|
|
|
53
60
|
|
|
54
61
|
<footer class="footer">
|
|
55
62
|
<span>summarize — Link → clean text → summary.</span>
|
|
56
|
-
<span
|
|
63
|
+
<span
|
|
64
|
+
><a href="./index.html">Docs</a> ·
|
|
65
|
+
<a href="https://github.com/steipete/summarize">Repo</a></span
|
|
66
|
+
>
|
|
57
67
|
</footer>
|
|
58
68
|
</main>
|
|
59
69
|
|
package/docs/site/index.html
CHANGED
|
@@ -4,18 +4,27 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
6
6
|
<meta name="color-scheme" content="dark light" />
|
|
7
|
-
<title>summarize —
|
|
8
|
-
<meta
|
|
7
|
+
<title>summarize — CLI + Chrome Side Panel for fast summaries</title>
|
|
8
|
+
<meta
|
|
9
|
+
name="description"
|
|
10
|
+
content="Summarize is a fast CLI and a Chrome Side Panel extension for clean extraction and sharp summaries."
|
|
11
|
+
/>
|
|
9
12
|
<link rel="canonical" href="https://summarize.sh/" />
|
|
10
13
|
<meta property="og:title" content="summarize" />
|
|
11
|
-
<meta
|
|
14
|
+
<meta
|
|
15
|
+
property="og:description"
|
|
16
|
+
content="Fast summaries, in the CLI and the Chrome Side Panel."
|
|
17
|
+
/>
|
|
12
18
|
<meta property="og:type" content="website" />
|
|
13
19
|
<meta property="og:url" content="https://summarize.sh/" />
|
|
14
|
-
<meta name="theme-color" content="#
|
|
20
|
+
<meta name="theme-color" content="#0b0f12" />
|
|
15
21
|
|
|
16
22
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
17
23
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
18
|
-
<link
|
|
24
|
+
<link
|
|
25
|
+
href="https://fonts.googleapis.com/css2?family=Fraunces:wght@600;700&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap"
|
|
26
|
+
rel="stylesheet"
|
|
27
|
+
/>
|
|
19
28
|
<link rel="stylesheet" href="./assets/site.css" />
|
|
20
29
|
</head>
|
|
21
30
|
<body>
|
|
@@ -33,106 +42,180 @@
|
|
|
33
42
|
</header>
|
|
34
43
|
|
|
35
44
|
<section class="hero">
|
|
36
|
-
<div class="
|
|
37
|
-
<div class="
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
<div class="hero__frame reveal">
|
|
46
|
+
<div class="hero__copy">
|
|
47
|
+
<p class="kicker">CLI + Chrome Extension</p>
|
|
48
|
+
<h1 class="title">Summaries that live where you work.</h1>
|
|
49
|
+
<p class="lede">
|
|
50
|
+
Summarize turns links, files, and media into sharp summaries with a real extraction
|
|
51
|
+
pipeline. Use the <strong>CLI</strong> for automation or the
|
|
52
|
+
<strong>Chrome Side Panel</strong> for one-click summaries of the current tab.
|
|
53
|
+
Supports <strong>local, paid, and free</strong> models.
|
|
54
|
+
</p>
|
|
55
|
+
<div class="ctaRow">
|
|
56
|
+
<a class="btn btn--primary" href="./docs/index.html">Docs</a>
|
|
57
|
+
<a class="btn" href="https://github.com/steipete/summarize">GitHub</a>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="quickRow">
|
|
60
|
+
<div class="quickRow__label">Quickstart</div>
|
|
61
|
+
<div class="quickRow__code">
|
|
62
|
+
<code id="install">npm i -g @steipete/summarize</code>
|
|
63
|
+
<code id="run">summarize "https://example.com/article"</code>
|
|
53
64
|
</div>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<
|
|
57
|
-
<svg class="btn__icon" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
58
|
-
<path d="M6 4h9l3 3v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z" stroke="currentColor" stroke-width="1.5"/>
|
|
59
|
-
<path d="M15 4v4h4" stroke="currentColor" stroke-width="1.5"/>
|
|
60
|
-
</svg>
|
|
61
|
-
Docs
|
|
62
|
-
</a>
|
|
63
|
-
<a class="btn" href="https://github.com/steipete/summarize">
|
|
64
|
-
<svg class="btn__icon" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
65
|
-
<path d="M12 2a10 10 0 0 0-3.16 19.49c.5.09.68-.22.68-.48v-1.7c-2.77.6-3.35-1.18-3.35-1.18-.45-1.14-1.1-1.45-1.1-1.45-.9-.62.07-.6.07-.6 1 .07 1.52 1.02 1.52 1.02.9 1.52 2.36 1.08 2.94.82.09-.64.35-1.08.63-1.33-2.2-.25-4.52-1.1-4.52-4.88 0-1.08.39-1.96 1.02-2.65-.1-.25-.44-1.27.1-2.65 0 0 .84-.27 2.75 1.02a9.46 9.46 0 0 1 5 0c1.9-1.29 2.75-1.02 2.75-1.02.54 1.38.2 2.4.1 2.65.64.69 1.02 1.57 1.02 2.65 0 3.79-2.33 4.63-4.55 4.88.36.31.68.92.68 1.86v2.76c0 .26.18.58.69.48A10 10 0 0 0 12 2Z" fill="currentColor" opacity=".9"/>
|
|
66
|
-
</svg>
|
|
67
|
-
Repo
|
|
68
|
-
</a>
|
|
65
|
+
<div class="quickRow__actions">
|
|
66
|
+
<button class="btn" data-copy="#install">Copy install</button>
|
|
67
|
+
<button class="btn" data-copy="#run">Copy run</button>
|
|
69
68
|
</div>
|
|
70
69
|
</div>
|
|
70
|
+
</div>
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
<div class="hero__visual">
|
|
73
|
+
<figure class="shot shot--cli">
|
|
74
|
+
<img src="./assets/summarize-cli.png" alt="Summarize CLI output" loading="lazy" />
|
|
75
|
+
<figcaption>CLI: streaming summaries in the terminal.</figcaption>
|
|
76
|
+
</figure>
|
|
77
|
+
<figure class="shot shot--ext">
|
|
78
|
+
<img
|
|
79
|
+
src="./assets/summarize-extension.png"
|
|
80
|
+
alt="Summarize Chrome extension side panel"
|
|
81
|
+
loading="lazy"
|
|
82
|
+
/>
|
|
83
|
+
<figcaption>Extension: a live Side Panel for the active tab.</figcaption>
|
|
84
|
+
</figure>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</section>
|
|
74
88
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
89
|
+
<section class="productGrid" aria-label="Products">
|
|
90
|
+
<article class="productCard reveal" id="cli">
|
|
91
|
+
<div class="productCard__head">
|
|
92
|
+
<span class="badge">CLI</span>
|
|
93
|
+
<h2>Fast summaries, scripted or interactive.</h2>
|
|
94
|
+
</div>
|
|
95
|
+
<p>
|
|
96
|
+
Built for automation: extract clean text, summarize with your model, and output JSON or
|
|
97
|
+
Markdown. Works with URLs, PDFs, images, audio/video, YouTube, and podcasts.
|
|
98
|
+
</p>
|
|
99
|
+
<ul class="list">
|
|
100
|
+
<li><strong>Extract + summarize</strong> with Firecrawl fallback.</li>
|
|
101
|
+
<li>
|
|
102
|
+
<strong>Media pipeline</strong> with transcript-first flow and Whisper fallback.
|
|
103
|
+
</li>
|
|
104
|
+
<li>
|
|
105
|
+
<strong>Scriptable output</strong> via <code>--json</code>, <code>--extract</code>,
|
|
106
|
+
<code>--metrics</code>.
|
|
107
|
+
</li>
|
|
108
|
+
</ul>
|
|
109
|
+
<div class="cardCode">
|
|
110
|
+
<pre><code>summarize "https://example.com" --length long
|
|
111
|
+
summarize "https://youtu.be/..." --youtube auto
|
|
112
|
+
summarize "/path/report.pdf" --model google/gemini-3-flash-preview</code></pre>
|
|
113
|
+
</div>
|
|
114
|
+
<div class="ctaRow">
|
|
115
|
+
<a class="btn btn--ghost" href="./docs/cli.html">CLI docs</a>
|
|
116
|
+
<a class="btn" href="./docs/config.html">Config</a>
|
|
117
|
+
</div>
|
|
118
|
+
</article>
|
|
84
119
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<button class="btn" data-copy="#run">Copy run</button>
|
|
90
|
-
</div>
|
|
91
|
-
</div>
|
|
92
|
-
</aside>
|
|
120
|
+
<article class="productCard reveal" id="extension">
|
|
121
|
+
<div class="productCard__head">
|
|
122
|
+
<span class="badge badge--alt">Chrome Extension</span>
|
|
123
|
+
<h2>Summaries in the Side Panel, one click away.</h2>
|
|
93
124
|
</div>
|
|
94
|
-
|
|
125
|
+
<p>
|
|
126
|
+
A real Chrome Side Panel with a tiny local daemon. It streams Markdown summaries for the
|
|
127
|
+
active tab, with auto-summary on navigation.
|
|
128
|
+
</p>
|
|
129
|
+
<ol class="steps">
|
|
130
|
+
<li>Install the CLI + daemon.</li>
|
|
131
|
+
<li>Load the unpacked extension.</li>
|
|
132
|
+
<li>Open Side Panel and connect with the token.</li>
|
|
133
|
+
</ol>
|
|
134
|
+
<div class="callout">
|
|
135
|
+
<strong>Runs locally</strong> on your machine. The daemon is localhost-only and
|
|
136
|
+
token-protected.
|
|
137
|
+
</div>
|
|
138
|
+
<div class="ctaRow">
|
|
139
|
+
<a class="btn btn--ghost" href="./docs/chrome-extension.html">Extension docs</a>
|
|
140
|
+
<a class="btn" href="https://github.com/steipete/summarize/releases/latest"
|
|
141
|
+
>Latest release</a
|
|
142
|
+
>
|
|
143
|
+
</div>
|
|
144
|
+
</article>
|
|
95
145
|
</section>
|
|
96
146
|
|
|
97
|
-
<section class="
|
|
98
|
-
<div class="
|
|
99
|
-
<
|
|
100
|
-
<
|
|
101
|
-
<
|
|
147
|
+
<section class="capGrid" aria-label="Capabilities">
|
|
148
|
+
<div class="capCard reveal">
|
|
149
|
+
<span class="capCard__eyebrow">Extraction</span>
|
|
150
|
+
<h3>HTML -> clean text -> summary</h3>
|
|
151
|
+
<p>Readability, markitdown, and Firecrawl fallback when sites fight back.</p>
|
|
102
152
|
</div>
|
|
103
|
-
<div class="
|
|
104
|
-
<
|
|
105
|
-
<
|
|
106
|
-
<
|
|
153
|
+
<div class="capCard reveal">
|
|
154
|
+
<span class="capCard__eyebrow">Media</span>
|
|
155
|
+
<h3>Podcast + YouTube aware</h3>
|
|
156
|
+
<p>Prefers published transcripts, then Whisper when needed.</p>
|
|
107
157
|
</div>
|
|
108
|
-
<div class="
|
|
109
|
-
<
|
|
110
|
-
<
|
|
111
|
-
<
|
|
158
|
+
<div class="capCard reveal">
|
|
159
|
+
<span class="capCard__eyebrow">Models</span>
|
|
160
|
+
<h3>Provider-agnostic</h3>
|
|
161
|
+
<p>Local OpenAI-compatible gateways, paid providers, and OpenRouter free models.</p>
|
|
112
162
|
</div>
|
|
113
|
-
<div class="
|
|
114
|
-
<
|
|
115
|
-
<
|
|
116
|
-
<
|
|
163
|
+
<div class="capCard reveal">
|
|
164
|
+
<span class="capCard__eyebrow">Outputs</span>
|
|
165
|
+
<h3>Readable + scriptable</h3>
|
|
166
|
+
<p>Streaming TTY output, ANSI Markdown, JSON diagnostics, and metrics.</p>
|
|
117
167
|
</div>
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
168
|
+
</section>
|
|
169
|
+
|
|
170
|
+
<section class="flow">
|
|
171
|
+
<div class="flow__card reveal">
|
|
172
|
+
<h2>How it works</h2>
|
|
173
|
+
<div class="flow__steps">
|
|
174
|
+
<div class="flowStep">
|
|
175
|
+
<span class="flowStep__num">01</span>
|
|
176
|
+
<div>
|
|
177
|
+
<h4>Fetch + extract</h4>
|
|
178
|
+
<p>Pull the source, clean HTML, normalize, or convert to Markdown.</p>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="flowStep">
|
|
182
|
+
<span class="flowStep__num">02</span>
|
|
183
|
+
<div>
|
|
184
|
+
<h4>Transcript when needed</h4>
|
|
185
|
+
<p>Use published transcripts, then Whisper fallback for media.</p>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
<div class="flowStep">
|
|
189
|
+
<span class="flowStep__num">03</span>
|
|
190
|
+
<div>
|
|
191
|
+
<h4>Summarize + format</h4>
|
|
192
|
+
<p>LLM output, streaming in the CLI or Side Panel, with metrics.</p>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
122
196
|
</div>
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
197
|
+
</section>
|
|
198
|
+
|
|
199
|
+
<section class="more">
|
|
200
|
+
<div class="more__card reveal">
|
|
201
|
+
<h2>More</h2>
|
|
202
|
+
<div class="more__grid">
|
|
203
|
+
<a class="moreLink" href="./docs/website.html">Website extraction</a>
|
|
204
|
+
<a class="moreLink" href="./docs/youtube.html">YouTube transcripts</a>
|
|
205
|
+
<a class="moreLink" href="./docs/media.html">Media pipeline</a>
|
|
206
|
+
<a class="moreLink" href="./docs/model-auto.html">Auto model rules</a>
|
|
207
|
+
<a class="moreLink" href="./docs/llm.html">Model + key setup</a>
|
|
208
|
+
<a class="moreLink" href="./docs/config.html">Config schema</a>
|
|
129
209
|
</div>
|
|
130
210
|
</div>
|
|
131
211
|
</section>
|
|
132
212
|
|
|
133
213
|
<footer class="footer">
|
|
134
214
|
<span>Canonical: <a href="https://summarize.sh">summarize.sh</a></span>
|
|
135
|
-
<span
|
|
215
|
+
<span
|
|
216
|
+
><a href="./docs/index.html">Docs</a> ·
|
|
217
|
+
<a href="https://github.com/steipete/summarize">GitHub</a></span
|
|
218
|
+
>
|
|
136
219
|
</footer>
|
|
137
220
|
</main>
|
|
138
221
|
|
package/docs/slides.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Plan for slide-first UX without model usage."
|
|
3
|
+
read_when:
|
|
4
|
+
- "When changing slide summaries, slide UI, or slide/seek behavior in the side panel."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Slides plan (no model)
|
|
8
|
+
|
|
9
|
+
## Goals
|
|
10
|
+
|
|
11
|
+
- Expanded slides view = full-width cards, top of summary.
|
|
12
|
+
- Click slide = seek video timestamp (no modal).
|
|
13
|
+
- Descriptions scale with length setting.
|
|
14
|
+
- Always show all slides (even if text missing).
|
|
15
|
+
- No model call for slide descriptions.
|
|
16
|
+
|
|
17
|
+
## Data sources
|
|
18
|
+
|
|
19
|
+
- Primary: transcript timed text (already available with timestamps).
|
|
20
|
+
- Secondary: OCR text from slides (truncate, selectable).
|
|
21
|
+
- Tertiary: empty description (still render card).
|
|
22
|
+
|
|
23
|
+
## Description generation (no model)
|
|
24
|
+
|
|
25
|
+
- For each slide timestamp `t`:
|
|
26
|
+
- Pull transcript segments within a time window around `t`.
|
|
27
|
+
- Concatenate into plain text (no bullets).
|
|
28
|
+
- If no transcript: use OCR text (trim).
|
|
29
|
+
- If neither: empty string.
|
|
30
|
+
- Always render all slide cards; missing text → show slide only.
|
|
31
|
+
|
|
32
|
+
## Length scaling
|
|
33
|
+
|
|
34
|
+
- Map summary length to per-slide target chars.
|
|
35
|
+
- Use existing length presets (short/medium/long/xl/xxl + custom):
|
|
36
|
+
- `short`: ~120 chars/slide
|
|
37
|
+
- `medium`: ~200 chars/slide
|
|
38
|
+
- `long`: ~320 chars/slide
|
|
39
|
+
- `xl`: ~480 chars/slide
|
|
40
|
+
- `xxl`: ~700 chars/slide
|
|
41
|
+
- custom: derive from maxCharacters (e.g. `maxChars / min(slideCount, 10)`, clamp).
|
|
42
|
+
- Clamp per-slide text: `[80, 900]` chars.
|
|
43
|
+
- Window size should expand with length (e.g. 20s → 90s).
|
|
44
|
+
|
|
45
|
+
## UI behavior
|
|
46
|
+
|
|
47
|
+
- Default summary stays unchanged (no slide text).
|
|
48
|
+
- Slide strip (compact) stays horizontal; no modal required.
|
|
49
|
+
- Expand toggle switches to vertical full-width list:
|
|
50
|
+
- cards: thumbnail, timestamp, text.
|
|
51
|
+
- cards appear above summary.
|
|
52
|
+
- Slide click: seek only (no modal).
|
|
53
|
+
- OCR toggle appears near summarize control only when OCR is significant
|
|
54
|
+
(enough slides + total OCR chars); otherwise hide it.
|
|
55
|
+
|
|
56
|
+
## CLI
|
|
57
|
+
|
|
58
|
+
- `summarize <url> --slides` streams a short intro paragraph and then a continuous narrative with slide images inserted inline where `[slide:N]` markers appear.
|
|
59
|
+
- The model is responsible for inserting every slide marker in order; text length is still governed by `--length`.
|
|
60
|
+
- If inline images are unsupported, the CLI prints text-only output and notes how to export slides to disk.
|
|
61
|
+
- Timestamp links use OSC-8 when supported (YouTube/Vimeo/Loom/Dropbox).
|
|
62
|
+
- Progress line reports slide extraction steps (includes slide counts when available).
|
|
63
|
+
- `summarize <url> --slides --extract` prints the full timed transcript and inserts slide images inline at matching timestamps.
|
|
64
|
+
- `summarize slides <url>` extracts slides without summarizing (use `--render auto|kitty|iterm` for inline thumbnails).
|
|
65
|
+
- Defaults to writing images under `./slides/<sourceId>/` (override via `--slides-dir` / `--output`).
|
|
66
|
+
|
|
67
|
+
## Implementation notes
|
|
68
|
+
|
|
69
|
+
- Build `slideDescriptions` map in panel:
|
|
70
|
+
- Use `summary.timedText` when available.
|
|
71
|
+
- Split transcript into segments with timestamps (already in payload).
|
|
72
|
+
- Store per-slide text on client (no daemon model calls).
|
|
73
|
+
- Ensure summary cache keys untouched; only client-only rendering.
|
|
74
|
+
- Slide extraction downloads the media once for detect+extract; set `SLIDES_EXTRACT_STREAM=1` to allow stream fallback (lower accuracy).
|
|
75
|
+
|
|
76
|
+
## Steps
|
|
77
|
+
|
|
78
|
+
1. Add slide-description builder in sidepanel using transcript timed text + OCR fallback.
|
|
79
|
+
2. Add length-based per-slide char budget and window sizing.
|
|
80
|
+
3. Render expanded card list with timestamps + text.
|
|
81
|
+
4. Remove modal; click = seek only.
|
|
82
|
+
5. Add tests for slide description + fallback.
|
package/docs/smoketest.md
CHANGED
|
@@ -9,55 +9,64 @@ read_when:
|
|
|
9
9
|
Goal: exercise URL + file inputs, extraction + LLM summary paths, multiple models.
|
|
10
10
|
|
|
11
11
|
## Preconditions
|
|
12
|
+
|
|
12
13
|
- API keys set for at least: `OPENAI_API_KEY`, `GEMINI_API_KEY`.
|
|
13
14
|
- Optional: `FIRECRAWL_API_KEY` to test fallback (if available).
|
|
14
15
|
|
|
15
16
|
## Models (cheap/fast)
|
|
17
|
+
|
|
16
18
|
- `openai/gpt-5-mini`
|
|
17
19
|
- `google/gemini-3-flash-preview`
|
|
18
20
|
|
|
19
21
|
## Matrix (20 cases)
|
|
20
22
|
|
|
21
23
|
### Websites (LLM summary, 10)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
|
|
25
|
+
1. Static HTML: `https://example.com` (model: gemini-3-flash)
|
|
26
|
+
2. Wikipedia article: `https://en.wikipedia.org/wiki/Swift_(programming_language)` (model: gpt-5-mini)
|
|
27
|
+
3. MDN doc: `https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200` (model: gemini-3-flash)
|
|
28
|
+
4. Reuters article: `https://www.reuters.com/world/` (model: gpt-5-mini)
|
|
29
|
+
5. BBC article: `https://www.bbc.com/news` (model: gemini-3-flash)
|
|
30
|
+
6. GitHub README: `https://github.com/vitejs/vite` (model: gpt-5-mini)
|
|
31
|
+
7. Substack post: pick any public post (model: gemini-3-flash)
|
|
32
|
+
8. Medium post: pick any public post (model: gpt-5-mini)
|
|
33
|
+
9. JS-heavy page: `https://vercel.com` (model: gemini-3-flash)
|
|
34
|
+
10. 404 page: `https://example.com/does-not-exist` (model: gpt-5-mini)
|
|
32
35
|
|
|
33
36
|
### YouTube (LLM summary, 2)
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
|
|
38
|
+
11. Captions available: pick a popular talk/interview (model: gemini-3-flash, `--youtube auto`)
|
|
39
|
+
12. No captions: pick a random channel upload w/o captions (model: gpt-5-mini, `--youtube auto`)
|
|
36
40
|
|
|
37
41
|
### Remote files (LLM summary, 4)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
|
|
43
|
+
13. PDF URL: any public PDF report (model: gemini-3-flash)
|
|
44
|
+
14. PNG URL: `https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png` (model: gpt-5-mini)
|
|
45
|
+
15. MP3 URL: any public MP3 sample (model: gemini-3-flash)
|
|
46
|
+
16. CSV URL: any public CSV sample (model: gpt-5-mini)
|
|
42
47
|
|
|
43
48
|
### Local files (LLM summary, 4)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
|
|
50
|
+
17. `tests/fixtures/sample.txt` (create if missing) (model: gemini-3-flash)
|
|
51
|
+
18. `tests/fixtures/sample.md` (create if missing) (model: gpt-5-mini)
|
|
52
|
+
19. `tests/fixtures/sample.json` (create if missing) (model: gemini-3-flash)
|
|
53
|
+
20. `tests/fixtures/sample.png` (create if missing; use a real PNG, not 1x1) (model: gpt-5-mini)
|
|
48
54
|
|
|
49
55
|
## Commands (template)
|
|
56
|
+
|
|
50
57
|
- Website: `pnpm summarize -- "<url>" --model <model> --length short`
|
|
51
58
|
- YouTube: `pnpm summarize -- "<url>" --model <model> --youtube auto`
|
|
52
59
|
- File URL: `pnpm summarize -- "<url>" --model <model>`
|
|
53
60
|
- Local file: `pnpm summarize -- "<path>" --model <model>`
|
|
54
61
|
|
|
55
62
|
## Capture
|
|
63
|
+
|
|
56
64
|
- Log: stdout + stderr, exit code, and timing line.
|
|
57
65
|
- Note extraction path (HTML vs Firecrawl vs YouTube transcript).
|
|
58
66
|
- File errors: media type rejection, size limits, token preflight.
|
|
59
67
|
|
|
60
68
|
## Bug bar
|
|
69
|
+
|
|
61
70
|
- Crash, hang, or non-zero exit.
|
|
62
71
|
- Empty summary with non-empty input.
|
|
63
72
|
- Incorrect mode selection (e.g., YouTube treated as normal URL).
|