@steipete/summarize-core 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.
Files changed (197) hide show
  1. package/README.md +0 -1
  2. package/dist/esm/content/index.js +5 -5
  3. package/dist/esm/content/index.js.map +1 -1
  4. package/dist/esm/content/link-preview/client.js +23 -8
  5. package/dist/esm/content/link-preview/client.js.map +1 -1
  6. package/dist/esm/content/link-preview/content/article.js +84 -83
  7. package/dist/esm/content/link-preview/content/article.js.map +1 -1
  8. package/dist/esm/content/link-preview/content/cleaner.js +23 -20
  9. package/dist/esm/content/link-preview/content/cleaner.js.map +1 -1
  10. package/dist/esm/content/link-preview/content/constants.js.map +1 -1
  11. package/dist/esm/content/link-preview/content/fetcher.js +46 -40
  12. package/dist/esm/content/link-preview/content/fetcher.js.map +1 -1
  13. package/dist/esm/content/link-preview/content/firecrawl.js +18 -17
  14. package/dist/esm/content/link-preview/content/firecrawl.js.map +1 -1
  15. package/dist/esm/content/link-preview/content/html.js +31 -28
  16. package/dist/esm/content/link-preview/content/html.js.map +1 -1
  17. package/dist/esm/content/link-preview/content/index.js +173 -90
  18. package/dist/esm/content/link-preview/content/index.js.map +1 -1
  19. package/dist/esm/content/link-preview/content/jsonld.js +12 -12
  20. package/dist/esm/content/link-preview/content/jsonld.js.map +1 -1
  21. package/dist/esm/content/link-preview/content/parsers.js +20 -20
  22. package/dist/esm/content/link-preview/content/parsers.js.map +1 -1
  23. package/dist/esm/content/link-preview/content/podcast-utils.js +34 -34
  24. package/dist/esm/content/link-preview/content/podcast-utils.js.map +1 -1
  25. package/dist/esm/content/link-preview/content/readability.js +16 -15
  26. package/dist/esm/content/link-preview/content/readability.js.map +1 -1
  27. package/dist/esm/content/link-preview/content/twitter-utils.js +24 -11
  28. package/dist/esm/content/link-preview/content/twitter-utils.js.map +1 -1
  29. package/dist/esm/content/link-preview/content/types.js +1 -1
  30. package/dist/esm/content/link-preview/content/types.js.map +1 -1
  31. package/dist/esm/content/link-preview/content/utils.js +30 -22
  32. package/dist/esm/content/link-preview/content/utils.js.map +1 -1
  33. package/dist/esm/content/link-preview/content/video.js +19 -19
  34. package/dist/esm/content/link-preview/content/video.js.map +1 -1
  35. package/dist/esm/content/link-preview/content/visibility.js +121 -0
  36. package/dist/esm/content/link-preview/content/visibility.js.map +1 -0
  37. package/dist/esm/content/link-preview/content/youtube.js +10 -10
  38. package/dist/esm/content/link-preview/content/youtube.js.map +1 -1
  39. package/dist/esm/content/link-preview/deps.js +16 -16
  40. package/dist/esm/content/link-preview/deps.js.map +1 -1
  41. package/dist/esm/content/link-preview/fetch-with-timeout.js +4 -4
  42. package/dist/esm/content/link-preview/fetch-with-timeout.js.map +1 -1
  43. package/dist/esm/content/link-preview/types.js +1 -1
  44. package/dist/esm/content/link-preview/types.js.map +1 -1
  45. package/dist/esm/content/transcript/cache.js +47 -22
  46. package/dist/esm/content/transcript/cache.js.map +1 -1
  47. package/dist/esm/content/transcript/index.js +71 -25
  48. package/dist/esm/content/transcript/index.js.map +1 -1
  49. package/dist/esm/content/transcript/normalize.js +10 -10
  50. package/dist/esm/content/transcript/normalize.js.map +1 -1
  51. package/dist/esm/content/transcript/parse.js +125 -13
  52. package/dist/esm/content/transcript/parse.js.map +1 -1
  53. package/dist/esm/content/transcript/providers/generic.js +112 -81
  54. package/dist/esm/content/transcript/providers/generic.js.map +1 -1
  55. package/dist/esm/content/transcript/providers/podcast/apple-flow.js +38 -36
  56. package/dist/esm/content/transcript/providers/podcast/apple-flow.js.map +1 -1
  57. package/dist/esm/content/transcript/providers/podcast/apple.js +5 -5
  58. package/dist/esm/content/transcript/providers/podcast/apple.js.map +1 -1
  59. package/dist/esm/content/transcript/providers/podcast/constants.js +2 -2
  60. package/dist/esm/content/transcript/providers/podcast/constants.js.map +1 -1
  61. package/dist/esm/content/transcript/providers/podcast/itunes.js +44 -42
  62. package/dist/esm/content/transcript/providers/podcast/itunes.js.map +1 -1
  63. package/dist/esm/content/transcript/providers/podcast/json.js +4 -4
  64. package/dist/esm/content/transcript/providers/podcast/json.js.map +1 -1
  65. package/dist/esm/content/transcript/providers/podcast/media.js +66 -56
  66. package/dist/esm/content/transcript/providers/podcast/media.js.map +1 -1
  67. package/dist/esm/content/transcript/providers/podcast/results.js +2 -2
  68. package/dist/esm/content/transcript/providers/podcast/results.js.map +1 -1
  69. package/dist/esm/content/transcript/providers/podcast/rss.js +42 -28
  70. package/dist/esm/content/transcript/providers/podcast/rss.js.map +1 -1
  71. package/dist/esm/content/transcript/providers/podcast/spotify-flow.js +39 -38
  72. package/dist/esm/content/transcript/providers/podcast/spotify-flow.js.map +1 -1
  73. package/dist/esm/content/transcript/providers/podcast/spotify.js +32 -32
  74. package/dist/esm/content/transcript/providers/podcast/spotify.js.map +1 -1
  75. package/dist/esm/content/transcript/providers/podcast.js +52 -43
  76. package/dist/esm/content/transcript/providers/podcast.js.map +1 -1
  77. package/dist/esm/content/transcript/providers/transcription-start.js +78 -0
  78. package/dist/esm/content/transcript/providers/transcription-start.js.map +1 -0
  79. package/dist/esm/content/transcript/providers/youtube/api.js +74 -57
  80. package/dist/esm/content/transcript/providers/youtube/api.js.map +1 -1
  81. package/dist/esm/content/transcript/providers/youtube/apify.js +7 -7
  82. package/dist/esm/content/transcript/providers/youtube/apify.js.map +1 -1
  83. package/dist/esm/content/transcript/providers/youtube/captions.js +112 -74
  84. package/dist/esm/content/transcript/providers/youtube/captions.js.map +1 -1
  85. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js +161 -101
  86. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js.map +1 -1
  87. package/dist/esm/content/transcript/providers/youtube.js +97 -80
  88. package/dist/esm/content/transcript/providers/youtube.js.map +1 -1
  89. package/dist/esm/content/transcript/timestamps.js +79 -0
  90. package/dist/esm/content/transcript/timestamps.js.map +1 -0
  91. package/dist/esm/content/transcript/transcription-config.js +14 -0
  92. package/dist/esm/content/transcript/transcription-config.js.map +1 -0
  93. package/dist/esm/content/transcript/utils.js +35 -35
  94. package/dist/esm/content/transcript/utils.js.map +1 -1
  95. package/dist/esm/content/url.js +59 -28
  96. package/dist/esm/content/url.js.map +1 -1
  97. package/dist/esm/index.js +4 -3
  98. package/dist/esm/index.js.map +1 -1
  99. package/dist/esm/language.js +77 -77
  100. package/dist/esm/language.js.map +1 -1
  101. package/dist/esm/openai/base-url.js +35 -0
  102. package/dist/esm/openai/base-url.js.map +1 -0
  103. package/dist/esm/processes.js +121 -0
  104. package/dist/esm/processes.js.map +1 -0
  105. package/dist/esm/prompts/cli.js +17 -17
  106. package/dist/esm/prompts/cli.js.map +1 -1
  107. package/dist/esm/prompts/file.js +56 -40
  108. package/dist/esm/prompts/file.js.map +1 -1
  109. package/dist/esm/prompts/format.js +2 -2
  110. package/dist/esm/prompts/format.js.map +1 -1
  111. package/dist/esm/prompts/index.js +5 -4
  112. package/dist/esm/prompts/index.js.map +1 -1
  113. package/dist/esm/prompts/link-summary.js +96 -46
  114. package/dist/esm/prompts/link-summary.js.map +1 -1
  115. package/dist/esm/prompts/summary-lengths.js +10 -10
  116. package/dist/esm/prompts/summary-lengths.js.map +1 -1
  117. package/dist/esm/prompts/summary-system.js +13 -0
  118. package/dist/esm/prompts/summary-system.js.map +1 -0
  119. package/dist/esm/shared/contracts.js +1 -1
  120. package/dist/esm/shared/contracts.js.map +1 -1
  121. package/dist/esm/transcription/onnx-cli.js +319 -0
  122. package/dist/esm/transcription/onnx-cli.js.map +1 -0
  123. package/dist/esm/transcription/whisper/constants.js +3 -3
  124. package/dist/esm/transcription/whisper/constants.js.map +1 -1
  125. package/dist/esm/transcription/whisper/core.js +209 -52
  126. package/dist/esm/transcription/whisper/core.js.map +1 -1
  127. package/dist/esm/transcription/whisper/fal.js +14 -14
  128. package/dist/esm/transcription/whisper/fal.js.map +1 -1
  129. package/dist/esm/transcription/whisper/ffmpeg.js +134 -82
  130. package/dist/esm/transcription/whisper/ffmpeg.js.map +1 -1
  131. package/dist/esm/transcription/whisper/groq.js +46 -0
  132. package/dist/esm/transcription/whisper/groq.js.map +1 -0
  133. package/dist/esm/transcription/whisper/openai.js +19 -13
  134. package/dist/esm/transcription/whisper/openai.js.map +1 -1
  135. package/dist/esm/transcription/whisper/utils.js +19 -19
  136. package/dist/esm/transcription/whisper/utils.js.map +1 -1
  137. package/dist/esm/transcription/whisper/whisper-cpp.js +68 -58
  138. package/dist/esm/transcription/whisper/whisper-cpp.js.map +1 -1
  139. package/dist/esm/transcription/whisper.js +4 -4
  140. package/dist/esm/transcription/whisper.js.map +1 -1
  141. package/dist/types/content/cache/types.d.ts +25 -1
  142. package/dist/types/content/index.d.ts +7 -7
  143. package/dist/types/content/link-preview/client.d.ts +9 -4
  144. package/dist/types/content/link-preview/content/cleaner.d.ts +1 -0
  145. package/dist/types/content/link-preview/content/fetcher.d.ts +2 -2
  146. package/dist/types/content/link-preview/content/firecrawl.d.ts +8 -7
  147. package/dist/types/content/link-preview/content/html.d.ts +9 -8
  148. package/dist/types/content/link-preview/content/index.d.ts +3 -3
  149. package/dist/types/content/link-preview/content/twitter-utils.d.ts +1 -0
  150. package/dist/types/content/link-preview/content/types.d.ts +13 -8
  151. package/dist/types/content/link-preview/content/utils.d.ts +3 -3
  152. package/dist/types/content/link-preview/content/video.d.ts +1 -1
  153. package/dist/types/content/link-preview/content/visibility.d.ts +1 -0
  154. package/dist/types/content/link-preview/deps.d.ts +44 -28
  155. package/dist/types/content/link-preview/types.d.ts +10 -4
  156. package/dist/types/content/transcript/cache.d.ts +9 -6
  157. package/dist/types/content/transcript/index.d.ts +9 -6
  158. package/dist/types/content/transcript/parse.d.ts +7 -0
  159. package/dist/types/content/transcript/providers/generic.d.ts +1 -1
  160. package/dist/types/content/transcript/providers/podcast/apple-flow.d.ts +2 -2
  161. package/dist/types/content/transcript/providers/podcast/flow-context.d.ts +4 -4
  162. package/dist/types/content/transcript/providers/podcast/media.d.ts +10 -6
  163. package/dist/types/content/transcript/providers/podcast/results.d.ts +3 -3
  164. package/dist/types/content/transcript/providers/podcast/rss.d.ts +2 -0
  165. package/dist/types/content/transcript/providers/podcast/spotify-flow.d.ts +2 -2
  166. package/dist/types/content/transcript/providers/podcast/spotify.d.ts +2 -2
  167. package/dist/types/content/transcript/providers/podcast.d.ts +5 -5
  168. package/dist/types/content/transcript/providers/transcription-start.d.ts +32 -0
  169. package/dist/types/content/transcript/providers/youtube/api.d.ts +7 -2
  170. package/dist/types/content/transcript/providers/youtube/captions.d.ts +6 -1
  171. package/dist/types/content/transcript/providers/youtube/yt-dlp.d.ts +13 -6
  172. package/dist/types/content/transcript/providers/youtube.d.ts +1 -1
  173. package/dist/types/content/transcript/timestamps.d.ts +5 -0
  174. package/dist/types/content/transcript/transcription-config.d.ts +15 -0
  175. package/dist/types/content/transcript/types.d.ts +15 -7
  176. package/dist/types/content/transcript/utils.d.ts +1 -1
  177. package/dist/types/content/url.d.ts +5 -3
  178. package/dist/types/index.d.ts +5 -4
  179. package/dist/types/language.d.ts +4 -4
  180. package/dist/types/openai/base-url.d.ts +14 -0
  181. package/dist/types/processes.d.ts +50 -0
  182. package/dist/types/prompts/cli.d.ts +3 -3
  183. package/dist/types/prompts/file.d.ts +2 -2
  184. package/dist/types/prompts/index.d.ts +6 -5
  185. package/dist/types/prompts/link-summary.d.ts +9 -4
  186. package/dist/types/prompts/summary-lengths.d.ts +1 -1
  187. package/dist/types/prompts/summary-system.d.ts +1 -0
  188. package/dist/types/transcription/onnx-cli.d.ts +25 -0
  189. package/dist/types/transcription/whisper/core.d.ts +10 -3
  190. package/dist/types/transcription/whisper/ffmpeg.d.ts +5 -0
  191. package/dist/types/transcription/whisper/groq.d.ts +2 -0
  192. package/dist/types/transcription/whisper/openai.d.ts +6 -1
  193. package/dist/types/transcription/whisper/types.d.ts +1 -1
  194. package/dist/types/transcription/whisper/whisper-cpp.d.ts +1 -1
  195. package/dist/types/transcription/whisper.d.ts +5 -5
  196. package/package.json +24 -18
  197. package/LICENSE +0 -21
@@ -1,78 +1,90 @@
1
- import { resolveTranscriptForLink } from '../../transcript/index.js';
2
- import { isDirectMediaUrl, isYouTubeUrl } from '../../url.js';
3
- import { normalizeForPrompt } from './cleaner.js';
4
- import { MIN_READABILITY_CONTENT_CHARACTERS } from './constants.js';
5
- import { fetchHtmlDocument, fetchWithFirecrawl } from './fetcher.js';
6
- import { buildResultFromFirecrawl, shouldFallbackToFirecrawl } from './firecrawl.js';
7
- import { buildResultFromHtmlDocument } from './html.js';
8
- import { extractApplePodcastIds, extractSpotifyEpisodeId } from './podcast-utils.js';
9
- import { extractReadabilityFromHtml } from './readability.js';
10
- import { isAnubisHtml, isBlockedTwitterContent, isTwitterStatusUrl, toNitterUrls, } from './twitter-utils.js';
11
- import { appendNote, ensureTranscriptDiagnostics, finalizeExtractedLinkContent, resolveCacheMode, resolveFirecrawlMode, resolveMaxCharacters, resolveTimeoutMs, selectBaseContent, } from './utils.js';
1
+ import { resolveTranscriptForLink } from "../../transcript/index.js";
2
+ import { resolveTranscriptionConfig } from "../../transcript/transcription-config.js";
3
+ import { isDirectMediaUrl, isYouTubeUrl } from "../../url.js";
4
+ import { normalizeForPrompt } from "./cleaner.js";
5
+ import { MIN_READABILITY_CONTENT_CHARACTERS } from "./constants.js";
6
+ import { fetchHtmlDocument, fetchWithFirecrawl } from "./fetcher.js";
7
+ import { buildResultFromFirecrawl, shouldFallbackToFirecrawl } from "./firecrawl.js";
8
+ import { buildResultFromHtmlDocument } from "./html.js";
9
+ import { extractApplePodcastIds, extractSpotifyEpisodeId } from "./podcast-utils.js";
10
+ import { extractReadabilityFromHtml } from "./readability.js";
11
+ import { isAnubisHtml, isBlockedTwitterContent, isTwitterBroadcastUrl, isTwitterStatusUrl, toNitterUrls, } from "./twitter-utils.js";
12
+ import { appendNote, ensureTranscriptDiagnostics, finalizeExtractedLinkContent, resolveCacheMode, resolveFirecrawlMode, resolveMaxCharacters, resolveTimeoutMs, selectBaseContent, } from "./utils.js";
12
13
  const MAX_TWITTER_TEXT_FOR_TRANSCRIPT = 500;
13
- const buildSkippedTwitterTranscript = (cacheMode, textLength) => ({
14
+ const buildSkippedTwitterTranscript = (cacheMode, notes) => ({
14
15
  text: null,
15
16
  source: null,
16
17
  diagnostics: {
17
18
  cacheMode,
18
- cacheStatus: cacheMode === 'bypass' ? 'bypassed' : 'unknown',
19
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
19
20
  textProvided: false,
20
21
  provider: null,
21
22
  attemptedProviders: [],
22
- notes: `Skipped yt-dlp transcript for long-form tweet text (${textLength} chars)`,
23
+ notes,
23
24
  },
24
25
  });
25
26
  export async function fetchLinkContent(url, options, deps) {
27
+ const transcription = resolveTranscriptionConfig({
28
+ env: deps.env,
29
+ transcription: deps.transcription ?? null,
30
+ falApiKey: deps.falApiKey,
31
+ groqApiKey: deps.groqApiKey,
32
+ openaiApiKey: deps.openaiApiKey,
33
+ });
26
34
  const timeoutMs = resolveTimeoutMs(options);
27
35
  const cacheMode = resolveCacheMode(options);
28
36
  const maxCharacters = resolveMaxCharacters(options);
29
- const youtubeTranscriptMode = options?.youtubeTranscript ?? 'auto';
30
- const mediaTranscriptMode = options?.mediaTranscript ?? 'auto';
37
+ const youtubeTranscriptMode = options?.youtubeTranscript ?? "auto";
38
+ const mediaTranscriptMode = options?.mediaTranscript ?? "auto";
39
+ const transcriptTimestamps = options?.transcriptTimestamps ?? false;
31
40
  const firecrawlMode = resolveFirecrawlMode(options);
32
- const markdownRequested = (options?.format ?? 'text') === 'markdown';
33
- const markdownMode = options?.markdownMode ?? 'auto';
34
- const canUseFirecrawl = firecrawlMode !== 'off' && deps.scrapeWithFirecrawl !== null && !isYouTubeUrl(url);
41
+ const markdownRequested = (options?.format ?? "text") === "markdown";
42
+ const markdownMode = options?.markdownMode ?? "auto";
43
+ const fileMtime = options?.fileMtime ?? null;
44
+ const canUseFirecrawl = firecrawlMode !== "off" && deps.scrapeWithFirecrawl !== null && !isYouTubeUrl(url);
35
45
  const spotifyEpisodeId = extractSpotifyEpisodeId(url);
36
46
  if (spotifyEpisodeId) {
37
- if (!deps.openaiApiKey && !deps.falApiKey) {
38
- throw new Error('Spotify episode transcription requires OPENAI_API_KEY or FAL_KEY (Whisper); otherwise you may only get a captcha/recaptcha HTML page.');
47
+ if (!transcription.openaiApiKey && !transcription.falApiKey) {
48
+ throw new Error("Spotify episode transcription requires OPENAI_API_KEY or FAL_KEY (Whisper); otherwise you may only get a captcha/recaptcha HTML page.");
39
49
  }
40
50
  const transcriptResolution = await resolveTranscriptForLink(url, null, deps, {
41
51
  youtubeTranscriptMode,
42
52
  mediaTranscriptMode,
53
+ transcriptTimestamps,
43
54
  cacheMode,
55
+ fileMtime,
44
56
  });
45
57
  if (!transcriptResolution.text) {
46
58
  const notes = transcriptResolution.diagnostics?.notes;
47
- const suffix = notes ? ` (${notes})` : '';
59
+ const suffix = notes ? ` (${notes})` : "";
48
60
  throw new Error(`Failed to transcribe Spotify episode${suffix}`);
49
61
  }
50
- const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? 'default');
51
- transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, 'Spotify episode: skipped HTML fetch to avoid captcha pages');
62
+ const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? "default");
63
+ transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, "Spotify episode: skipped HTML fetch to avoid captcha pages");
52
64
  return finalizeExtractedLinkContent({
53
65
  url,
54
- baseContent: selectBaseContent('', transcriptResolution.text),
66
+ baseContent: selectBaseContent("", transcriptResolution.text, transcriptResolution.segments),
55
67
  maxCharacters,
56
68
  title: null,
57
69
  description: null,
58
- siteName: 'Spotify',
70
+ siteName: "Spotify",
59
71
  transcriptResolution,
60
72
  video: null,
61
73
  isVideoOnly: false,
62
74
  diagnostics: {
63
- strategy: 'html',
75
+ strategy: "html",
64
76
  firecrawl: {
65
77
  attempted: false,
66
78
  used: false,
67
79
  cacheMode,
68
- cacheStatus: cacheMode === 'bypass' ? 'bypassed' : 'unknown',
69
- notes: 'Spotify short-circuit skipped HTML/Firecrawl',
80
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
81
+ notes: "Spotify short-circuit skipped HTML/Firecrawl",
70
82
  },
71
83
  markdown: {
72
84
  requested: markdownRequested,
73
85
  used: false,
74
86
  provider: null,
75
- notes: 'Spotify short-circuit uses transcript content',
87
+ notes: "Spotify short-circuit uses transcript content",
76
88
  },
77
89
  transcript: transcriptDiagnostics,
78
90
  },
@@ -80,87 +92,136 @@ export async function fetchLinkContent(url, options, deps) {
80
92
  }
81
93
  const appleIds = extractApplePodcastIds(url);
82
94
  if (appleIds) {
83
- if (!deps.openaiApiKey && !deps.falApiKey) {
84
- throw new Error('Apple Podcasts transcription requires OPENAI_API_KEY or FAL_KEY (Whisper); otherwise you may only get a slow/blocked HTML page.');
95
+ if (!transcription.openaiApiKey && !transcription.falApiKey) {
96
+ throw new Error("Apple Podcasts transcription requires OPENAI_API_KEY or FAL_KEY (Whisper); otherwise you may only get a slow/blocked HTML page.");
85
97
  }
86
98
  const transcriptResolution = await resolveTranscriptForLink(url, null, deps, {
87
99
  youtubeTranscriptMode,
88
100
  mediaTranscriptMode,
101
+ transcriptTimestamps,
89
102
  cacheMode,
103
+ fileMtime,
90
104
  });
91
105
  if (!transcriptResolution.text) {
92
106
  const notes = transcriptResolution.diagnostics?.notes;
93
- const suffix = notes ? ` (${notes})` : '';
107
+ const suffix = notes ? ` (${notes})` : "";
94
108
  throw new Error(`Failed to transcribe Apple Podcasts episode${suffix}`);
95
109
  }
96
- const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? 'default');
97
- transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, 'Apple Podcasts: skipped HTML fetch (prefer iTunes lookup / enclosures)');
110
+ const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? "default");
111
+ transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, "Apple Podcasts: skipped HTML fetch (prefer iTunes lookup / enclosures)");
98
112
  return finalizeExtractedLinkContent({
99
113
  url,
100
- baseContent: selectBaseContent('', transcriptResolution.text),
114
+ baseContent: selectBaseContent("", transcriptResolution.text, transcriptResolution.segments),
101
115
  maxCharacters,
102
116
  title: null,
103
117
  description: null,
104
- siteName: 'Apple Podcasts',
118
+ siteName: "Apple Podcasts",
105
119
  transcriptResolution,
106
120
  video: null,
107
121
  isVideoOnly: false,
108
122
  diagnostics: {
109
- strategy: 'html',
123
+ strategy: "html",
124
+ firecrawl: {
125
+ attempted: false,
126
+ used: false,
127
+ cacheMode,
128
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
129
+ notes: "Apple Podcasts short-circuit skipped HTML/Firecrawl",
130
+ },
131
+ markdown: {
132
+ requested: markdownRequested,
133
+ used: false,
134
+ provider: null,
135
+ notes: "Apple Podcasts short-circuit uses transcript content",
136
+ },
137
+ transcript: transcriptDiagnostics,
138
+ },
139
+ });
140
+ }
141
+ if (isTwitterBroadcastUrl(url)) {
142
+ const broadcastTranscriptMode = mediaTranscriptMode === "auto" ? "prefer" : mediaTranscriptMode;
143
+ const transcriptResolution = await resolveTranscriptForLink(url, null, deps, {
144
+ youtubeTranscriptMode,
145
+ mediaTranscriptMode: broadcastTranscriptMode,
146
+ transcriptTimestamps,
147
+ cacheMode,
148
+ fileMtime,
149
+ });
150
+ if (!transcriptResolution.text) {
151
+ const notes = transcriptResolution.diagnostics?.notes;
152
+ const suffix = notes ? ` (${notes})` : "";
153
+ throw new Error(`Failed to transcribe X broadcast${suffix}`);
154
+ }
155
+ const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? "default");
156
+ transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, "X broadcast: skipped HTML/Firecrawl");
157
+ return finalizeExtractedLinkContent({
158
+ url,
159
+ baseContent: selectBaseContent("", transcriptResolution.text, transcriptResolution.segments),
160
+ maxCharacters,
161
+ title: null,
162
+ description: null,
163
+ siteName: "X",
164
+ transcriptResolution,
165
+ video: { kind: "direct", url },
166
+ isVideoOnly: true,
167
+ diagnostics: {
168
+ strategy: "html",
110
169
  firecrawl: {
111
170
  attempted: false,
112
171
  used: false,
113
172
  cacheMode,
114
- cacheStatus: cacheMode === 'bypass' ? 'bypassed' : 'unknown',
115
- notes: 'Apple Podcasts short-circuit skipped HTML/Firecrawl',
173
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
174
+ notes: "X broadcast short-circuit skipped HTML/Firecrawl",
116
175
  },
117
176
  markdown: {
118
177
  requested: markdownRequested,
119
178
  used: false,
120
179
  provider: null,
121
- notes: 'Apple Podcasts short-circuit uses transcript content',
180
+ notes: "X broadcast uses transcript content",
122
181
  },
123
182
  transcript: transcriptDiagnostics,
124
183
  },
125
184
  });
126
185
  }
127
- if (isDirectMediaUrl(url) && mediaTranscriptMode === 'prefer') {
186
+ if (isDirectMediaUrl(url) && mediaTranscriptMode === "prefer") {
128
187
  const transcriptResolution = await resolveTranscriptForLink(url, null, deps, {
129
188
  youtubeTranscriptMode,
130
189
  mediaTranscriptMode,
190
+ transcriptTimestamps,
131
191
  cacheMode,
192
+ fileMtime,
132
193
  });
133
194
  if (!transcriptResolution.text) {
134
195
  const notes = transcriptResolution.diagnostics?.notes;
135
- const suffix = notes ? ` (${notes})` : '';
196
+ const suffix = notes ? ` (${notes})` : "";
136
197
  throw new Error(`Failed to transcribe media${suffix}`);
137
198
  }
138
- const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? 'default');
139
- transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, 'Direct media URL: skipped HTML/Firecrawl');
199
+ const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? "default");
200
+ transcriptDiagnostics.notes = appendNote(transcriptDiagnostics.notes, "Direct media URL: skipped HTML/Firecrawl");
140
201
  return finalizeExtractedLinkContent({
141
202
  url,
142
- baseContent: selectBaseContent('', transcriptResolution.text),
203
+ baseContent: selectBaseContent("", transcriptResolution.text, transcriptResolution.segments),
143
204
  maxCharacters,
144
205
  title: null,
145
206
  description: null,
146
207
  siteName: null,
147
208
  transcriptResolution,
148
- video: { kind: 'direct', url },
209
+ video: { kind: "direct", url },
149
210
  isVideoOnly: true,
150
211
  diagnostics: {
151
- strategy: 'html',
212
+ strategy: "html",
152
213
  firecrawl: {
153
214
  attempted: false,
154
215
  used: false,
155
216
  cacheMode,
156
- cacheStatus: cacheMode === 'bypass' ? 'bypassed' : 'unknown',
157
- notes: 'Direct media URL skipped HTML/Firecrawl',
217
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
218
+ notes: "Direct media URL skipped HTML/Firecrawl",
158
219
  },
159
220
  markdown: {
160
221
  requested: markdownRequested,
161
222
  used: false,
162
223
  provider: null,
163
- notes: 'Direct media URL uses transcript content',
224
+ notes: "Direct media URL uses transcript content",
164
225
  },
165
226
  transcript: transcriptDiagnostics,
166
227
  },
@@ -172,7 +233,7 @@ export async function fetchLinkContent(url, options, deps) {
172
233
  attempted: false,
173
234
  used: false,
174
235
  cacheMode,
175
- cacheStatus: cacheMode === 'bypass' ? 'bypassed' : 'unknown',
236
+ cacheStatus: cacheMode === "bypass" ? "bypassed" : "unknown",
176
237
  notes: null,
177
238
  };
178
239
  const twitterStatus = isTwitterStatusUrl(url);
@@ -209,6 +270,7 @@ export async function fetchLinkContent(url, options, deps) {
209
270
  maxCharacters,
210
271
  youtubeTranscriptMode,
211
272
  mediaTranscriptMode,
273
+ transcriptTimestamps,
212
274
  firecrawlDiagnostics,
213
275
  markdownRequested,
214
276
  deps,
@@ -216,66 +278,85 @@ export async function fetchLinkContent(url, options, deps) {
216
278
  if (firecrawlResult) {
217
279
  return firecrawlResult;
218
280
  }
219
- firecrawlDiagnostics.notes = appendNote(firecrawlDiagnostics.notes, 'Firecrawl returned empty content');
281
+ firecrawlDiagnostics.notes = appendNote(firecrawlDiagnostics.notes, "Firecrawl returned empty content");
220
282
  return null;
221
283
  };
222
284
  const attemptBird = async () => {
223
285
  if (!deps.readTweetWithBird || !twitterStatus) {
224
286
  return null;
225
287
  }
226
- deps.onProgress?.({ kind: 'bird-start', url });
288
+ deps.onProgress?.({ kind: "bird-start", url });
227
289
  try {
228
290
  const tweet = await deps.readTweetWithBird({ url, timeoutMs });
229
- const text = tweet?.text?.trim() ?? '';
291
+ const text = tweet?.text?.trim() ?? "";
230
292
  if (text.length === 0) {
231
- deps.onProgress?.({ kind: 'bird-done', url, ok: false, textBytes: null });
293
+ deps.onProgress?.({ kind: "bird-done", url, ok: false, textBytes: null });
232
294
  return null;
233
295
  }
234
296
  const title = tweet?.author?.username ? `@${tweet.author.username}` : null;
235
297
  const description = null;
236
- const siteName = 'X';
237
- const skipTranscript = text.length >= MAX_TWITTER_TEXT_FOR_TRANSCRIPT;
238
- const transcriptResolution = skipTranscript
239
- ? buildSkippedTwitterTranscript(cacheMode, text.length)
298
+ const siteName = "X";
299
+ const media = tweet?.media ?? null;
300
+ const mediaUrl = media?.preferredUrl ?? media?.urls?.[0] ?? null;
301
+ const hasMedia = Boolean(mediaUrl);
302
+ const shouldAttemptTranscript = mediaTranscriptMode === "prefer" || (mediaTranscriptMode === "auto" && hasMedia);
303
+ const autoModeNote = !shouldAttemptTranscript
304
+ ? "Skipped tweet transcript (media transcript mode is auto; enable --video-mode transcript to force audio)."
305
+ : null;
306
+ const longFormNote = !hasMedia && text.length >= MAX_TWITTER_TEXT_FOR_TRANSCRIPT
307
+ ? `Skipped yt-dlp transcript for long-form tweet text (${text.length} chars)`
308
+ : null;
309
+ const skipTranscriptReason = [autoModeNote, longFormNote].filter(Boolean).join(" ") || null;
310
+ const mediaTranscriptModeForTweet = shouldAttemptTranscript ? "prefer" : mediaTranscriptMode;
311
+ const transcriptResolution = skipTranscriptReason
312
+ ? buildSkippedTwitterTranscript(cacheMode, skipTranscriptReason)
240
313
  : await resolveTranscriptForLink(url, null, deps, {
241
314
  youtubeTranscriptMode,
242
- mediaTranscriptMode,
315
+ mediaTranscriptMode: mediaTranscriptModeForTweet,
316
+ mediaKindHint: media?.kind ?? null,
317
+ transcriptTimestamps,
243
318
  cacheMode,
319
+ fileMtime,
244
320
  });
245
- const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? 'default');
321
+ const transcriptDiagnostics = ensureTranscriptDiagnostics(transcriptResolution, cacheMode ?? "default");
246
322
  const result = finalizeExtractedLinkContent({
247
323
  url,
248
- baseContent: selectBaseContent(text, transcriptResolution.text),
324
+ baseContent: selectBaseContent(text, transcriptResolution.text, transcriptResolution.segments),
249
325
  maxCharacters,
250
326
  title,
251
327
  description,
252
328
  siteName,
253
329
  transcriptResolution,
254
- video: null,
330
+ video: mediaUrl && media?.kind === "video"
331
+ ? {
332
+ kind: "direct",
333
+ url: mediaUrl,
334
+ }
335
+ : null,
255
336
  isVideoOnly: false,
256
337
  diagnostics: {
257
- strategy: 'bird',
338
+ strategy: "bird",
258
339
  firecrawl: firecrawlDiagnostics,
259
340
  markdown: {
260
341
  requested: markdownRequested,
261
342
  used: false,
262
343
  provider: null,
263
- notes: 'Bird tweet fetch provides plain text',
344
+ notes: "Bird tweet fetch provides plain text",
264
345
  },
265
346
  transcript: transcriptDiagnostics,
266
347
  },
267
348
  });
268
349
  deps.onProgress?.({
269
- kind: 'bird-done',
350
+ kind: "bird-done",
270
351
  url,
271
352
  ok: true,
272
- textBytes: Buffer.byteLength(result.content, 'utf8'),
353
+ textBytes: Buffer.byteLength(result.content, "utf8"),
273
354
  });
274
355
  return result;
275
356
  }
276
357
  catch (error) {
277
358
  birdError = error;
278
- deps.onProgress?.({ kind: 'bird-done', url, ok: false, textBytes: null });
359
+ deps.onProgress?.({ kind: "bird-done", url, ok: false, textBytes: null });
279
360
  return null;
280
361
  }
281
362
  };
@@ -288,31 +369,31 @@ export async function fetchLinkContent(url, options, deps) {
288
369
  return null;
289
370
  }
290
371
  for (const nitterUrl of nitterUrls) {
291
- deps.onProgress?.({ kind: 'nitter-start', url: nitterUrl });
372
+ deps.onProgress?.({ kind: "nitter-start", url: nitterUrl });
292
373
  try {
293
374
  const nitterResult = await fetchHtmlDocument(deps.fetch, nitterUrl, { timeoutMs });
294
375
  const nitterHtml = nitterResult.html;
295
376
  if (!nitterHtml.trim()) {
296
377
  nitterError = new Error(`Nitter returned empty body from ${new URL(nitterUrl).host}`);
297
- deps.onProgress?.({ kind: 'nitter-done', url: nitterUrl, ok: false, textBytes: null });
378
+ deps.onProgress?.({ kind: "nitter-done", url: nitterUrl, ok: false, textBytes: null });
298
379
  continue;
299
380
  }
300
381
  if (isAnubisHtml(nitterHtml)) {
301
382
  nitterError = new Error(`Nitter returned Anubis challenge from ${new URL(nitterUrl).host}`);
302
- deps.onProgress?.({ kind: 'nitter-done', url: nitterUrl, ok: false, textBytes: null });
383
+ deps.onProgress?.({ kind: "nitter-done", url: nitterUrl, ok: false, textBytes: null });
303
384
  continue;
304
385
  }
305
386
  deps.onProgress?.({
306
- kind: 'nitter-done',
387
+ kind: "nitter-done",
307
388
  url: nitterUrl,
308
389
  ok: true,
309
- textBytes: Buffer.byteLength(nitterHtml, 'utf8'),
390
+ textBytes: Buffer.byteLength(nitterHtml, "utf8"),
310
391
  });
311
392
  return nitterHtml;
312
393
  }
313
394
  catch (error) {
314
395
  nitterError = error;
315
- deps.onProgress?.({ kind: 'nitter-done', url: nitterUrl, ok: false, textBytes: null });
396
+ deps.onProgress?.({ kind: "nitter-done", url: nitterUrl, ok: false, textBytes: null });
316
397
  }
317
398
  }
318
399
  return null;
@@ -326,6 +407,7 @@ export async function fetchLinkContent(url, options, deps) {
326
407
  maxCharacters,
327
408
  youtubeTranscriptMode,
328
409
  mediaTranscriptMode,
410
+ transcriptTimestamps,
329
411
  firecrawlDiagnostics,
330
412
  markdownRequested,
331
413
  markdownMode,
@@ -334,13 +416,13 @@ export async function fetchLinkContent(url, options, deps) {
334
416
  readabilityCandidate: null,
335
417
  });
336
418
  if (!isBlockedTwitterContent(nitterResult.content)) {
337
- nitterResult.diagnostics.strategy = 'nitter';
419
+ nitterResult.diagnostics.strategy = "nitter";
338
420
  return nitterResult;
339
421
  }
340
- nitterError = new Error('Nitter returned blocked or empty content');
422
+ nitterError = new Error("Nitter returned blocked or empty content");
341
423
  }
342
- if (firecrawlMode === 'always') {
343
- const firecrawlResult = await attemptFirecrawl('Firecrawl forced via options');
424
+ if (firecrawlMode === "always") {
425
+ const firecrawlResult = await attemptFirecrawl("Firecrawl forced via options");
344
426
  if (firecrawlResult) {
345
427
  return firecrawlResult;
346
428
  }
@@ -358,27 +440,27 @@ export async function fetchLinkContent(url, options, deps) {
358
440
  }
359
441
  if (!htmlResult) {
360
442
  if (!canUseFirecrawl) {
361
- throw htmlError instanceof Error ? htmlError : new Error('Failed to fetch HTML document');
443
+ throw htmlError instanceof Error ? htmlError : new Error("Failed to fetch HTML document");
362
444
  }
363
- const firecrawlResult = await attemptFirecrawl('HTML fetch failed; falling back to Firecrawl');
445
+ const firecrawlResult = await attemptFirecrawl("HTML fetch failed; falling back to Firecrawl");
364
446
  if (firecrawlResult) {
365
447
  return firecrawlResult;
366
448
  }
367
449
  const firecrawlError = firecrawlDiagnostics.notes
368
450
  ? `; Firecrawl notes: ${firecrawlDiagnostics.notes}`
369
- : '';
370
- throw new Error(`Failed to fetch HTML document${firecrawlError}${htmlError instanceof Error ? `; HTML error: ${htmlError.message}` : ''}`);
451
+ : "";
452
+ throw new Error(`Failed to fetch HTML document${firecrawlError}${htmlError instanceof Error ? `; HTML error: ${htmlError.message}` : ""}`);
371
453
  }
372
454
  const html = htmlResult.html;
373
455
  const effectiveUrl = htmlResult.finalUrl || url;
374
456
  let readabilityCandidate = null;
375
- if (firecrawlMode === 'auto' && shouldFallbackToFirecrawl(html)) {
457
+ if (firecrawlMode === "auto" && shouldFallbackToFirecrawl(html)) {
376
458
  readabilityCandidate = await extractReadabilityFromHtml(html, effectiveUrl);
377
459
  const readabilityText = readabilityCandidate?.text
378
460
  ? normalizeForPrompt(readabilityCandidate.text)
379
- : '';
461
+ : "";
380
462
  if (readabilityText.length < MIN_READABILITY_CONTENT_CHARACTERS) {
381
- const firecrawlResult = await attemptFirecrawl('HTML content looked blocked/thin; falling back to Firecrawl');
463
+ const firecrawlResult = await attemptFirecrawl("HTML content looked blocked/thin; falling back to Firecrawl");
382
464
  if (firecrawlResult) {
383
465
  return firecrawlResult;
384
466
  }
@@ -391,6 +473,7 @@ export async function fetchLinkContent(url, options, deps) {
391
473
  maxCharacters,
392
474
  youtubeTranscriptMode,
393
475
  mediaTranscriptMode,
476
+ transcriptTimestamps,
394
477
  firecrawlDiagnostics,
395
478
  markdownRequested,
396
479
  markdownMode,
@@ -400,15 +483,15 @@ export async function fetchLinkContent(url, options, deps) {
400
483
  });
401
484
  if (twitterStatus && isBlockedTwitterContent(htmlExtracted.content)) {
402
485
  const birdNote = !deps.readTweetWithBird
403
- ? 'Bird not available'
486
+ ? "Bird not available"
404
487
  : birdError
405
488
  ? `Bird failed: ${birdError instanceof Error ? birdError.message : String(birdError)}`
406
- : 'Bird returned no text';
489
+ : "Bird returned no text";
407
490
  const nitterNote = nitterUrls.length > 0
408
491
  ? nitterError
409
492
  ? `Nitter failed: ${nitterError instanceof Error ? nitterError.message : String(nitterError)}`
410
- : 'Nitter returned no text'
411
- : 'Nitter not available';
493
+ : "Nitter returned no text"
494
+ : "Nitter not available";
412
495
  throw new Error(`Unable to fetch tweet content from X. ${birdNote}. ${nitterNote}.`);
413
496
  }
414
497
  return htmlExtracted;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/content/link-preview/content/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/content/link-preview/content/index.ts"],"names":[],"mappings":"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"}