@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
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Transcript timestamps plan + clickable chat jumps."
|
|
3
|
+
read_when:
|
|
4
|
+
- "When planning transcript timestamps or click-to-seek UX."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Transcript Timestamps Plan
|
|
8
|
+
|
|
9
|
+
Short scope
|
|
10
|
+
|
|
11
|
+
- Add `--timestamps` flag to request timed transcripts.
|
|
12
|
+
- Preserve existing plain transcript text; add structured segments + timed text.
|
|
13
|
+
- Chat mode: include timed transcript + prompt for `[mm:ss]` references.
|
|
14
|
+
- Sidepanel: click timestamp → seek media (video or audio), keep play state.
|
|
15
|
+
- Coverage: YouTube, podcasts, embedded captions, generic media; whisper.cpp = no segments unless we add verbose output later.
|
|
16
|
+
|
|
17
|
+
## 1) API / data model
|
|
18
|
+
|
|
19
|
+
- New option: `FetchLinkContentOptions.transcriptTimestamps?: boolean`.
|
|
20
|
+
- Thread through provider options (`ProviderFetchOptions`).
|
|
21
|
+
- New types:
|
|
22
|
+
- `TranscriptSegment`: `{ startMs: number; endMs?: number | null; text: string }`.
|
|
23
|
+
- `TranscriptResolution.segments?: TranscriptSegment[] | null`.
|
|
24
|
+
- `ExtractedLinkContent.transcriptSegments?: TranscriptSegment[] | null`.
|
|
25
|
+
- `ExtractedLinkContent.transcriptTimedText?: string | null` (helper).
|
|
26
|
+
- Keep `TranscriptResolution.text` unchanged (plain transcript).
|
|
27
|
+
|
|
28
|
+
Notes
|
|
29
|
+
|
|
30
|
+
- `--timestamps` should only alter output when requested; default output remains stable.
|
|
31
|
+
- For JSON output, include both `transcriptSegments` and `transcriptTimedText` when requested.
|
|
32
|
+
|
|
33
|
+
## 2) Provider updates
|
|
34
|
+
|
|
35
|
+
YouTube (youtubei)
|
|
36
|
+
|
|
37
|
+
- Parse `startMs` (and duration if present) from `transcriptSegmentRenderer`.
|
|
38
|
+
- Build segments array; `text` still plain (join of text).
|
|
39
|
+
|
|
40
|
+
YouTube (captionTracks json3 / xml)
|
|
41
|
+
|
|
42
|
+
- json3 provides `events[].tStartMs` and `dDurationMs`; parse segments from `events.segs[].utf8`.
|
|
43
|
+
- XML captions include `start` + `dur`; parse segments when present.
|
|
44
|
+
|
|
45
|
+
Podcast RSS transcripts
|
|
46
|
+
|
|
47
|
+
- VTT parser should output segments (start/end + cue text).
|
|
48
|
+
- JSON transcript: support `segments` with `start`/`startMs` + `end`/`endMs` + `text`.
|
|
49
|
+
- Plain text transcripts: `segments = null`.
|
|
50
|
+
|
|
51
|
+
Generic embedded captions
|
|
52
|
+
|
|
53
|
+
- When track is VTT/JSON, parse into segments; otherwise `null`.
|
|
54
|
+
|
|
55
|
+
yt-dlp / whisper / whisper.cpp
|
|
56
|
+
|
|
57
|
+
- Keep `segments = null` (plain text only).
|
|
58
|
+
- Optional future: request verbose or SRT output from OpenAI/FAL when supported.
|
|
59
|
+
|
|
60
|
+
## 3) Cache behavior
|
|
61
|
+
|
|
62
|
+
- Store `segments` in transcript metadata (or dedicated cache field).
|
|
63
|
+
- If `--timestamps` and cached transcript lacks segments, treat as miss and refetch.
|
|
64
|
+
- Keep cache keys stable; only bypass when timestamps requested.
|
|
65
|
+
|
|
66
|
+
## 4) CLI / daemon
|
|
67
|
+
|
|
68
|
+
- Add `--timestamps` to CLI help + config.
|
|
69
|
+
- Map to `FetchLinkContentOptions.transcriptTimestamps`.
|
|
70
|
+
- `--extract --json`: include `transcriptSegments` + `transcriptTimedText`.
|
|
71
|
+
- Non-JSON extract: keep plain transcript unless `--timestamps`, then output timed text block.
|
|
72
|
+
|
|
73
|
+
## 5) Chat prompt + content
|
|
74
|
+
|
|
75
|
+
- `buildChatPageContent`: when timestamps requested, include `Timed transcript:` block using `[mm:ss]`.
|
|
76
|
+
- `buildChatSystemPrompt`: add instruction:
|
|
77
|
+
- “When referencing moments, include `[mm:ss]` timestamps from the transcript.”
|
|
78
|
+
|
|
79
|
+
## 6) Chrome extension UI
|
|
80
|
+
|
|
81
|
+
Render
|
|
82
|
+
|
|
83
|
+
- Linkify `[mm:ss]` and `[hh:mm:ss]` in assistant messages.
|
|
84
|
+
- Convert to `timestamp:<seconds>` hrefs (or data attribute).
|
|
85
|
+
|
|
86
|
+
Seek handler
|
|
87
|
+
|
|
88
|
+
- On click: prevent default, parse seconds, send `panel:seek` → background → content script.
|
|
89
|
+
- Content script:
|
|
90
|
+
- Find `<video>` or `<audio>`.
|
|
91
|
+
- Record `wasPaused = media.paused`.
|
|
92
|
+
- `media.currentTime = seconds`.
|
|
93
|
+
- If `!wasPaused`, call `media.play()`; else do nothing.
|
|
94
|
+
- YouTube fallback when no media element:
|
|
95
|
+
- If `window.ytplayer` / YT IFrame API available, `player.seekTo(seconds, true)`.
|
|
96
|
+
|
|
97
|
+
## 7) Tests
|
|
98
|
+
|
|
99
|
+
Core
|
|
100
|
+
|
|
101
|
+
- youtubei transcript parsing yields segments + plain text.
|
|
102
|
+
- captionTracks json3 + xml yield segments.
|
|
103
|
+
- VTT parser yields segments.
|
|
104
|
+
- Cache: timestamps requested + cached without segments → refetch.
|
|
105
|
+
|
|
106
|
+
Daemon / CLI
|
|
107
|
+
|
|
108
|
+
- `--timestamps` propagates into fetch options.
|
|
109
|
+
- JSON extract includes `transcriptSegments` + `transcriptTimedText`.
|
|
110
|
+
|
|
111
|
+
Chrome extension
|
|
112
|
+
|
|
113
|
+
- Chat content includes timed transcript when requested.
|
|
114
|
+
- Sidepanel: timestamp link emits `panel:seek`.
|
|
115
|
+
- Content script seek: playing stays playing, paused stays paused; audio + video.
|
|
116
|
+
|
|
117
|
+
## 8) Changelog
|
|
118
|
+
|
|
119
|
+
- Entry: `--timestamps` flag, timed transcripts in chat, clickable timestamps in extension, podcast support.
|
|
120
|
+
|
|
121
|
+
## 9) Notes / open
|
|
122
|
+
|
|
123
|
+
- “VisPoR” = whisper.cpp: no timestamps unless we add verbose output path.
|
|
124
|
+
- Decide exact format of `transcriptTimedText` (recommend `[mm:ss] text` per line).
|
package/docs/website.md
CHANGED
|
@@ -21,6 +21,19 @@ Use this for non-YouTube URLs.
|
|
|
21
21
|
- With `--format md`, `--markdown-mode auto` may fall back to `uvx markitdown` when available (disable with `--preprocess off`).
|
|
22
22
|
- For podcast URLs (Apple Podcasts, RSS, Spotify episodes), it downloads the episode audio and transcribes via Whisper (prefers local `whisper.cpp` when installed + model available); progress shows “Downloading audio …” then “Transcribing …” (duration uses RSS hints or `ffprobe` when available).
|
|
23
23
|
|
|
24
|
+
Daemon note:
|
|
25
|
+
|
|
26
|
+
- `/v1/summarize` accepts `format: "markdown"` plus `markdownMode`/`preprocess` to return extracted Markdown (especially when `extractOnly: true`).
|
|
27
|
+
|
|
28
|
+
## Short content
|
|
29
|
+
|
|
30
|
+
- If extracted content is shorter than the requested summary length, summarize returns the content as-is.
|
|
31
|
+
- Use `--force-summary` to override and always run the LLM.
|
|
32
|
+
|
|
33
|
+
## Twitter/X
|
|
34
|
+
|
|
35
|
+
- Tweet audio transcription runs only with `--video-mode transcript` (auto mode skips yt-dlp for tweets).
|
|
36
|
+
|
|
24
37
|
## Flags
|
|
25
38
|
|
|
26
39
|
- `--firecrawl off|auto|always`
|
package/docs/youtube.md
CHANGED
|
@@ -40,3 +40,23 @@ YouTube URLs use transcript-first extraction.
|
|
|
40
40
|
```bash
|
|
41
41
|
pnpm summarize -- --extract "https://www.youtube.com/watch?v=I845O57ZSy4&t=11s"
|
|
42
42
|
```
|
|
43
|
+
|
|
44
|
+
## Slides
|
|
45
|
+
|
|
46
|
+
Use `--slides` to extract slide screenshots for YouTube videos (requires `ffmpeg` and `yt-dlp`).
|
|
47
|
+
Scene detection auto-tunes the threshold using sampled frame hashes:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
summarize "https://www.youtube.com/watch?v=..." --slides
|
|
51
|
+
summarize "https://www.youtube.com/watch?v=..." --slides --slides-ocr
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Slides are written to `./slides/<videoId>/` by default (override with `--slides-dir`). OCR results
|
|
55
|
+
are stored in `slides.json` and included in JSON output (`--json`).
|
|
56
|
+
|
|
57
|
+
If yt-dlp gets a 403 from YouTube, set `SUMMARIZE_YT_DLP_COOKIES_FROM_BROWSER=chrome` (or
|
|
58
|
+
`chrome:Profile 1`) to pass cookies through to yt-dlp.
|
|
59
|
+
|
|
60
|
+
Relevant flags:
|
|
61
|
+
|
|
62
|
+
- `--slides-scene-threshold <value>`: starting threshold for scene detection (auto-tuned as needed)
|
package/package.json
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steipete/summarize",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Link → clean text → summary.",
|
|
5
|
-
"type": "module",
|
|
6
5
|
"bin": {
|
|
7
6
|
"summarize": "./dist/cli.js",
|
|
8
7
|
"summarizer": "./dist/cli.js"
|
|
9
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"docs",
|
|
12
|
+
"CHANGELOG.md",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
10
17
|
"main": "./dist/esm/index.js",
|
|
11
18
|
"module": "./dist/esm/index.js",
|
|
12
19
|
"types": "./dist/types/index.d.ts",
|
|
@@ -24,63 +31,65 @@
|
|
|
24
31
|
"import": "./dist/esm/prompts/index.js"
|
|
25
32
|
}
|
|
26
33
|
},
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "pnpm clean && pnpm -C packages/core build && pnpm build:lib && pnpm build:cli",
|
|
36
|
+
"build:bun": "bun scripts/build-bun.js",
|
|
37
|
+
"build:bun:test": "bun scripts/build-bun.js --test",
|
|
38
|
+
"build:cli": "node scripts/build-cli.mjs",
|
|
39
|
+
"build:lib": "tsc -p tsconfig.build.json",
|
|
40
|
+
"check": "pnpm format:check && pnpm lint && pnpm test:coverage",
|
|
41
|
+
"clean": "rimraf dist packages/core/dist",
|
|
42
|
+
"docs:list": "tsx scripts/docs-list.ts",
|
|
43
|
+
"format": "oxfmt --write",
|
|
44
|
+
"format:check": "oxfmt --check",
|
|
45
|
+
"lint": "oxlint --type-aware --tsconfig tsconfig.build.json --config .oxlintrc.json .",
|
|
46
|
+
"lint:fix": "oxlint --type-aware --tsconfig tsconfig.build.json --config .oxlintrc.json --fix . && pnpm format",
|
|
47
|
+
"prepare": "pnpm build",
|
|
48
|
+
"release": "bash scripts/release.sh",
|
|
49
|
+
"s": "tsx src/cli.ts",
|
|
50
|
+
"summarize": "tsx src/cli.ts",
|
|
51
|
+
"test": "vitest run",
|
|
52
|
+
"test:coverage": "vitest run --coverage",
|
|
53
|
+
"test:coverage:build": "pnpm build && pnpm test:coverage",
|
|
54
|
+
"test:extension-e2e": "pnpm -C apps/chrome-extension test:e2e",
|
|
55
|
+
"typecheck": "tsc -p tsconfig.build.json --noEmit"
|
|
36
56
|
},
|
|
37
57
|
"dependencies": {
|
|
38
|
-
"@mariozechner/pi-ai": "^0.
|
|
39
|
-
"
|
|
40
|
-
"
|
|
58
|
+
"@mariozechner/pi-ai": "^0.52.12",
|
|
59
|
+
"@steipete/summarize-core": "workspace:*",
|
|
60
|
+
"commander": "^14.0.3",
|
|
61
|
+
"file-type": "^21.3.0",
|
|
41
62
|
"gpt-tokenizer": "^3.4.0",
|
|
42
63
|
"json5": "^2.2.3",
|
|
43
|
-
"markdansi": "^0.2.
|
|
64
|
+
"markdansi": "^0.2.1",
|
|
44
65
|
"mime": "^4.1.0",
|
|
45
|
-
"ora": "^9.
|
|
46
|
-
"osc-progress": "^0.
|
|
66
|
+
"ora": "^9.3.0",
|
|
67
|
+
"osc-progress": "^0.3.0",
|
|
47
68
|
"tokentally": "^0.1.1",
|
|
48
|
-
"tslog": "^4.10.2"
|
|
49
|
-
"@steipete/summarize-core": "0.9.0"
|
|
69
|
+
"tslog": "^4.10.2"
|
|
50
70
|
},
|
|
51
71
|
"devDependencies": {
|
|
52
|
-
"@
|
|
53
|
-
"@fal-ai/client": "^1.8.1",
|
|
72
|
+
"@fal-ai/client": "^1.9.1",
|
|
54
73
|
"@types/jsdom": "^27.0.0",
|
|
55
|
-
"@types/node": "^25.
|
|
74
|
+
"@types/node": "^25.2.3",
|
|
56
75
|
"@types/sanitize-html": "^2.16.0",
|
|
57
|
-
"@vitest/coverage-v8": "^4.0.
|
|
58
|
-
"esbuild": "^0.27.
|
|
59
|
-
"
|
|
60
|
-
"oxlint
|
|
76
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
77
|
+
"esbuild": "^0.27.3",
|
|
78
|
+
"oxfmt": "0.32.0",
|
|
79
|
+
"oxlint": "^1.47.0",
|
|
80
|
+
"oxlint-tsgolint": "^0.12.2",
|
|
81
|
+
"rimraf": "^6.1.2",
|
|
61
82
|
"tsx": "^4.21.0",
|
|
62
83
|
"typescript": "^5.9.3",
|
|
63
|
-
"vitest": "^4.0.
|
|
84
|
+
"vitest": "^4.0.18"
|
|
64
85
|
},
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
74
|
-
"summarize": "tsx src/cli.ts",
|
|
75
|
-
"s": "tsx src/cli.ts",
|
|
76
|
-
"format": "biome format --write .",
|
|
77
|
-
"lint": "biome check . && oxlint --type-aware --tsconfig tsconfig.build.json --config .oxlintrc.json .",
|
|
78
|
-
"lint:fix": "biome check --write . && oxlint --type-aware --tsconfig tsconfig.build.json --config .oxlintrc.json --fix .",
|
|
79
|
-
"check": "pnpm lint && pnpm test:coverage",
|
|
80
|
-
"test:extension-e2e": "pnpm -C apps/chrome-extension test:e2e",
|
|
81
|
-
"test": "vitest run",
|
|
82
|
-
"test:coverage": "vitest run --coverage",
|
|
83
|
-
"test:coverage:build": "pnpm build && pnpm test:coverage",
|
|
84
|
-
"release": "bash scripts/release.sh"
|
|
86
|
+
"engines": {
|
|
87
|
+
"node": ">=22"
|
|
88
|
+
},
|
|
89
|
+
"packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501",
|
|
90
|
+
"pnpm": {
|
|
91
|
+
"overrides": {
|
|
92
|
+
"vite": "7.3.0"
|
|
93
|
+
}
|
|
85
94
|
}
|
|
86
|
-
}
|
|
95
|
+
}
|