imperium-crawl 1.5.3 → 2.1.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/README.md +49 -34
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/network/interceptor.d.ts +19 -0
- package/dist/network/interceptor.d.ts.map +1 -0
- package/dist/network/interceptor.js +82 -0
- package/dist/network/interceptor.js.map +1 -0
- package/dist/network/types.d.ts +27 -0
- package/dist/network/types.d.ts.map +1 -0
- package/dist/network/types.js +2 -0
- package/dist/network/types.js.map +1 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +6 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/recipes/influencer-competitor-spy.json +14 -0
- package/dist/recipes/influencer-hashtag-scout.json +14 -0
- package/dist/recipes/influencer-niche-discovery.json +14 -0
- package/dist/security/action-policy.d.ts +26 -0
- package/dist/security/action-policy.d.ts.map +1 -0
- package/dist/security/action-policy.js +136 -0
- package/dist/security/action-policy.js.map +1 -0
- package/dist/security/auth-vault.d.ts +49 -0
- package/dist/security/auth-vault.d.ts.map +1 -0
- package/dist/security/auth-vault.js +133 -0
- package/dist/security/auth-vault.js.map +1 -0
- package/dist/security/domain-filter.d.ts +19 -0
- package/dist/security/domain-filter.d.ts.map +1 -0
- package/dist/security/domain-filter.js +114 -0
- package/dist/security/domain-filter.js.map +1 -0
- package/dist/security/types.d.ts +19 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/types.js +2 -0
- package/dist/security/types.js.map +1 -0
- package/dist/sessions/encryption.d.ts +37 -0
- package/dist/sessions/encryption.d.ts.map +1 -0
- package/dist/sessions/encryption.js +108 -0
- package/dist/sessions/encryption.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/manager.d.ts +3 -0
- package/dist/sessions/manager.d.ts.map +1 -1
- package/dist/sessions/manager.js +28 -2
- package/dist/sessions/manager.js.map +1 -1
- package/dist/skills/manager.d.ts +11 -2
- package/dist/skills/manager.d.ts.map +1 -1
- package/dist/skills/manager.js.map +1 -1
- package/dist/snapshot/annotator.d.ts +21 -0
- package/dist/snapshot/annotator.d.ts.map +1 -0
- package/dist/snapshot/annotator.js +152 -0
- package/dist/snapshot/annotator.js.map +1 -0
- package/dist/snapshot/boundary.d.ts +7 -0
- package/dist/snapshot/boundary.d.ts.map +1 -0
- package/dist/snapshot/boundary.js +12 -0
- package/dist/snapshot/boundary.js.map +1 -0
- package/dist/snapshot/differ.d.ts +40 -0
- package/dist/snapshot/differ.d.ts.map +1 -0
- package/dist/snapshot/differ.js +194 -0
- package/dist/snapshot/differ.js.map +1 -0
- package/dist/snapshot/extractor.d.ts +27 -0
- package/dist/snapshot/extractor.d.ts.map +1 -0
- package/dist/snapshot/extractor.js +265 -0
- package/dist/snapshot/extractor.js.map +1 -0
- package/dist/snapshot/index.d.ts +8 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +6 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/snapshot/store.d.ts +28 -0
- package/dist/snapshot/store.d.ts.map +1 -0
- package/dist/snapshot/store.js +65 -0
- package/dist/snapshot/store.js.map +1 -0
- package/dist/snapshot/types.d.ts +42 -0
- package/dist/snapshot/types.d.ts.map +1 -0
- package/dist/snapshot/types.js +2 -0
- package/dist/snapshot/types.js.map +1 -0
- package/dist/social/ai-fallback.d.ts +22 -0
- package/dist/social/ai-fallback.d.ts.map +1 -0
- package/dist/social/ai-fallback.js +137 -0
- package/dist/social/ai-fallback.js.map +1 -0
- package/dist/social/parsers.d.ts +28 -0
- package/dist/social/parsers.d.ts.map +1 -0
- package/dist/social/parsers.js +146 -0
- package/dist/social/parsers.js.map +1 -0
- package/dist/social/types.d.ts +55 -0
- package/dist/social/types.d.ts.map +1 -0
- package/dist/social/types.js +5 -0
- package/dist/social/types.js.map +1 -0
- package/dist/social/whisper.d.ts +29 -0
- package/dist/social/whisper.d.ts.map +1 -0
- package/dist/social/whisper.js +88 -0
- package/dist/social/whisper.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/interact.d.ts +194 -5
- package/dist/tools/interact.d.ts.map +1 -1
- package/dist/tools/interact.js +355 -20
- package/dist/tools/interact.js.map +1 -1
- package/dist/tools/manifest.d.ts.map +1 -1
- package/dist/tools/manifest.js +9 -0
- package/dist/tools/manifest.js.map +1 -1
- package/dist/tools/reddit.d.ts +36 -0
- package/dist/tools/reddit.d.ts.map +1 -0
- package/dist/tools/reddit.js +190 -0
- package/dist/tools/reddit.js.map +1 -0
- package/dist/tools/run-skill.d.ts +18 -0
- package/dist/tools/run-skill.d.ts.map +1 -1
- package/dist/tools/run-skill.js +681 -0
- package/dist/tools/run-skill.js.map +1 -1
- package/dist/tools/snapshot.d.ts +53 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/snapshot.js +160 -0
- package/dist/tools/snapshot.js.map +1 -0
- package/dist/tools/tiktok.d.ts +30 -0
- package/dist/tools/tiktok.d.ts.map +1 -0
- package/dist/tools/tiktok.js +246 -0
- package/dist/tools/tiktok.js.map +1 -0
- package/dist/tools/youtube.d.ts +33 -0
- package/dist/tools/youtube.d.ts.map +1 -0
- package/dist/tools/youtube.js +489 -0
- package/dist/tools/youtube.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared parsers for social media tools.
|
|
3
|
+
*
|
|
4
|
+
* parseCompactNumber: "1.2M" -> 1200000
|
|
5
|
+
* parseRelativeTime: "3 hours ago" -> ISO date string
|
|
6
|
+
* sanitizeText: strip HTML tags, collapse whitespace
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Parse compact number strings like "1.2M", "842K", "3.5B", "1,234".
|
|
10
|
+
* Returns NaN for unparseable input.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseCompactNumber(str: string): number;
|
|
13
|
+
/**
|
|
14
|
+
* Parse relative time strings like "3 hours ago", "1 day ago", "2 months ago".
|
|
15
|
+
* Returns ISO date string, or null if unparseable.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseRelativeTime(str: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Strip HTML tags and collapse whitespace.
|
|
20
|
+
*/
|
|
21
|
+
export declare function sanitizeText(html: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Extract JSON from a script tag pattern like `var ytInitialData = {...};`
|
|
24
|
+
* Also handles `<script id="varName" type="application/json">{...}</script>`.
|
|
25
|
+
* Returns parsed object or null.
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractScriptJson(html: string, varName: string): unknown | null;
|
|
28
|
+
//# sourceMappingURL=parsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/social/parsers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAYD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAwE/E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared parsers for social media tools.
|
|
3
|
+
*
|
|
4
|
+
* parseCompactNumber: "1.2M" -> 1200000
|
|
5
|
+
* parseRelativeTime: "3 hours ago" -> ISO date string
|
|
6
|
+
* sanitizeText: strip HTML tags, collapse whitespace
|
|
7
|
+
*/
|
|
8
|
+
const MULTIPLIERS = {
|
|
9
|
+
K: 1_000,
|
|
10
|
+
M: 1_000_000,
|
|
11
|
+
B: 1_000_000_000,
|
|
12
|
+
T: 1_000_000_000_000,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Parse compact number strings like "1.2M", "842K", "3.5B", "1,234".
|
|
16
|
+
* Returns NaN for unparseable input.
|
|
17
|
+
*/
|
|
18
|
+
export function parseCompactNumber(str) {
|
|
19
|
+
if (!str)
|
|
20
|
+
return NaN;
|
|
21
|
+
// Clean: remove commas, spaces, plus signs
|
|
22
|
+
const cleaned = str.replace(/[,\s+]/g, "").trim();
|
|
23
|
+
// Try suffix match: "1.2M", "842K"
|
|
24
|
+
const match = cleaned.match(/^([\d.]+)\s*([KMBT])/i);
|
|
25
|
+
if (match) {
|
|
26
|
+
const num = parseFloat(match[1]);
|
|
27
|
+
const suffix = match[2].toUpperCase();
|
|
28
|
+
return Math.round(num * (MULTIPLIERS[suffix] || 1));
|
|
29
|
+
}
|
|
30
|
+
// Plain number
|
|
31
|
+
return parseFloat(cleaned) || NaN;
|
|
32
|
+
}
|
|
33
|
+
const TIME_UNITS = {
|
|
34
|
+
second: 1_000,
|
|
35
|
+
minute: 60_000,
|
|
36
|
+
hour: 3_600_000,
|
|
37
|
+
day: 86_400_000,
|
|
38
|
+
week: 604_800_000,
|
|
39
|
+
month: 2_592_000_000, // ~30 days
|
|
40
|
+
year: 31_536_000_000, // ~365 days
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Parse relative time strings like "3 hours ago", "1 day ago", "2 months ago".
|
|
44
|
+
* Returns ISO date string, or null if unparseable.
|
|
45
|
+
*/
|
|
46
|
+
export function parseRelativeTime(str) {
|
|
47
|
+
if (!str)
|
|
48
|
+
return null;
|
|
49
|
+
const match = str.match(/(\d+)\s+(second|minute|hour|day|week|month|year)s?\s+ago/i);
|
|
50
|
+
if (!match)
|
|
51
|
+
return null;
|
|
52
|
+
const amount = parseInt(match[1], 10);
|
|
53
|
+
const unit = match[2].toLowerCase();
|
|
54
|
+
const ms = TIME_UNITS[unit];
|
|
55
|
+
if (!ms)
|
|
56
|
+
return null;
|
|
57
|
+
return new Date(Date.now() - amount * ms).toISOString();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Strip HTML tags and collapse whitespace.
|
|
61
|
+
*/
|
|
62
|
+
export function sanitizeText(html) {
|
|
63
|
+
if (!html)
|
|
64
|
+
return "";
|
|
65
|
+
return html
|
|
66
|
+
.replace(/<[^>]*>/g, "")
|
|
67
|
+
.replace(/&/g, "&")
|
|
68
|
+
.replace(/</g, "<")
|
|
69
|
+
.replace(/>/g, ">")
|
|
70
|
+
.replace(/"/g, '"')
|
|
71
|
+
.replace(/'/g, "'")
|
|
72
|
+
.replace(/ /g, " ")
|
|
73
|
+
.replace(/\s+/g, " ")
|
|
74
|
+
.trim();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract JSON from a script tag pattern like `var ytInitialData = {...};`
|
|
78
|
+
* Also handles `<script id="varName" type="application/json">{...}</script>`.
|
|
79
|
+
* Returns parsed object or null.
|
|
80
|
+
*/
|
|
81
|
+
export function extractScriptJson(html, varName) {
|
|
82
|
+
// Strategy 1: <script id="varName" type="application/json">{...}</script>
|
|
83
|
+
const scriptTagPattern = new RegExp(`<script[^>]+id=["']${varName}["'][^>]*>([\\s\\S]*?)</script>`, "i");
|
|
84
|
+
const scriptTagMatch = scriptTagPattern.exec(html);
|
|
85
|
+
if (scriptTagMatch) {
|
|
86
|
+
try {
|
|
87
|
+
return JSON.parse(scriptTagMatch[1]);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Fall through to other strategies
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Strategy 2: var varName = {...}; or window['varName'] = {...};
|
|
94
|
+
const patterns = [
|
|
95
|
+
new RegExp(`var\\s+${varName}\\s*=\\s*`, "i"),
|
|
96
|
+
new RegExp(`window\\[['"]${varName}['"]\\]\\s*=\\s*`, "i"),
|
|
97
|
+
];
|
|
98
|
+
for (const pattern of patterns) {
|
|
99
|
+
const match = pattern.exec(html);
|
|
100
|
+
if (!match)
|
|
101
|
+
continue;
|
|
102
|
+
const start = match.index + match[0].length;
|
|
103
|
+
// Find matching brace
|
|
104
|
+
let depth = 0;
|
|
105
|
+
let inString = false;
|
|
106
|
+
let escape = false;
|
|
107
|
+
let stringChar = "";
|
|
108
|
+
for (let i = start; i < html.length; i++) {
|
|
109
|
+
const ch = html[i];
|
|
110
|
+
if (escape) {
|
|
111
|
+
escape = false;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (ch === "\\") {
|
|
115
|
+
escape = true;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (inString) {
|
|
119
|
+
if (ch === stringChar)
|
|
120
|
+
inString = false;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (ch === '"' || ch === "'") {
|
|
124
|
+
inString = true;
|
|
125
|
+
stringChar = ch;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (ch === "{" || ch === "[")
|
|
129
|
+
depth++;
|
|
130
|
+
if (ch === "}" || ch === "]") {
|
|
131
|
+
depth--;
|
|
132
|
+
if (depth === 0) {
|
|
133
|
+
const jsonStr = html.substring(start, i + 1);
|
|
134
|
+
try {
|
|
135
|
+
return JSON.parse(jsonStr);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/social/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for social media tools (YouTube, Reddit).
|
|
3
|
+
*/
|
|
4
|
+
export interface SocialVideo {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
url: string;
|
|
8
|
+
thumbnail?: string;
|
|
9
|
+
duration?: string;
|
|
10
|
+
views?: number;
|
|
11
|
+
likes?: number;
|
|
12
|
+
author: string;
|
|
13
|
+
author_url?: string;
|
|
14
|
+
published?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SocialPost {
|
|
18
|
+
id: string;
|
|
19
|
+
title: string;
|
|
20
|
+
url: string;
|
|
21
|
+
author: string;
|
|
22
|
+
score?: number;
|
|
23
|
+
comments_count?: number;
|
|
24
|
+
published?: string;
|
|
25
|
+
subreddit?: string;
|
|
26
|
+
text?: string;
|
|
27
|
+
thumbnail?: string;
|
|
28
|
+
is_video?: boolean;
|
|
29
|
+
flair?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SocialComment {
|
|
32
|
+
id: string;
|
|
33
|
+
author: string;
|
|
34
|
+
text: string;
|
|
35
|
+
score?: number;
|
|
36
|
+
published?: string;
|
|
37
|
+
replies_count?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface SocialProfile {
|
|
40
|
+
name: string;
|
|
41
|
+
url: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
subscribers?: number;
|
|
44
|
+
avatar?: string;
|
|
45
|
+
verified?: boolean;
|
|
46
|
+
video_count?: number;
|
|
47
|
+
created?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SocialSearchResult<T> {
|
|
50
|
+
query?: string;
|
|
51
|
+
platform: "youtube" | "reddit";
|
|
52
|
+
results: T[];
|
|
53
|
+
total?: number;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/social/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/social/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Whisper integration for audio transcription.
|
|
3
|
+
* Used as fallback when YouTube captions are unavailable.
|
|
4
|
+
*
|
|
5
|
+
* Requires LLM_API_KEY with LLM_PROVIDER=openai (or any OpenAI-compatible key).
|
|
6
|
+
*/
|
|
7
|
+
export interface WhisperResult {
|
|
8
|
+
text: string;
|
|
9
|
+
segments?: Array<{
|
|
10
|
+
start: number;
|
|
11
|
+
end: number;
|
|
12
|
+
text: string;
|
|
13
|
+
}>;
|
|
14
|
+
language?: string;
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if Whisper transcription is available (OpenAI API key configured).
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasWhisperConfigured(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Transcribe audio data using OpenAI Whisper API.
|
|
23
|
+
* Returns timestamped segments.
|
|
24
|
+
*/
|
|
25
|
+
export declare function transcribeAudio(audioData: Buffer | Uint8Array, options?: {
|
|
26
|
+
language?: string;
|
|
27
|
+
filename?: string;
|
|
28
|
+
}): Promise<WhisperResult>;
|
|
29
|
+
//# sourceMappingURL=whisper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper.d.ts","sourceRoot":"","sources":["../../src/social/whisper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C;AAgBD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,aAAa,CAAC,CA6ExB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Whisper integration for audio transcription.
|
|
3
|
+
* Used as fallback when YouTube captions are unavailable.
|
|
4
|
+
*
|
|
5
|
+
* Requires LLM_API_KEY with LLM_PROVIDER=openai (or any OpenAI-compatible key).
|
|
6
|
+
*/
|
|
7
|
+
import { getLLMConfig } from "../llm/index.js";
|
|
8
|
+
const WHISPER_API_URL = "https://api.openai.com/v1/audio/transcriptions";
|
|
9
|
+
const WHISPER_MODEL = "whisper-1";
|
|
10
|
+
const MAX_AUDIO_SIZE = 25 * 1024 * 1024; // 25MB Whisper limit
|
|
11
|
+
/**
|
|
12
|
+
* Check if Whisper transcription is available (OpenAI API key configured).
|
|
13
|
+
*/
|
|
14
|
+
export function hasWhisperConfigured() {
|
|
15
|
+
const config = getLLMConfig();
|
|
16
|
+
if (!config)
|
|
17
|
+
return false;
|
|
18
|
+
// Whisper only works with OpenAI API keys
|
|
19
|
+
// But users might have LLM_PROVIDER=anthropic with a separate OPENAI_API_KEY
|
|
20
|
+
return config.provider === "openai" || !!process.env.OPENAI_API_KEY?.trim();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get the OpenAI API key for Whisper.
|
|
24
|
+
* Prefers OPENAI_API_KEY env var, falls back to LLM_API_KEY if provider is openai.
|
|
25
|
+
*/
|
|
26
|
+
function getWhisperApiKey() {
|
|
27
|
+
const explicit = process.env.OPENAI_API_KEY?.trim();
|
|
28
|
+
if (explicit)
|
|
29
|
+
return explicit;
|
|
30
|
+
const config = getLLMConfig();
|
|
31
|
+
if (config && config.provider === "openai")
|
|
32
|
+
return config.apiKey;
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Transcribe audio data using OpenAI Whisper API.
|
|
37
|
+
* Returns timestamped segments.
|
|
38
|
+
*/
|
|
39
|
+
export async function transcribeAudio(audioData, options) {
|
|
40
|
+
const apiKey = getWhisperApiKey();
|
|
41
|
+
if (!apiKey) {
|
|
42
|
+
throw new Error("OpenAI API key required for Whisper transcription. Set OPENAI_API_KEY or LLM_API_KEY with LLM_PROVIDER=openai.");
|
|
43
|
+
}
|
|
44
|
+
if (audioData.length > MAX_AUDIO_SIZE) {
|
|
45
|
+
throw new Error(`Audio file too large (${Math.round(audioData.length / 1024 / 1024)}MB). Whisper limit is 25MB. Try a shorter video.`);
|
|
46
|
+
}
|
|
47
|
+
const filename = options?.filename || "audio.webm";
|
|
48
|
+
// Build multipart form data manually (no FormData in Node < 18 without polyfill)
|
|
49
|
+
const boundary = `----WhisperBoundary${Date.now()}`;
|
|
50
|
+
const parts = [];
|
|
51
|
+
// Add model field
|
|
52
|
+
parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="model"\r\n\r\n${WHISPER_MODEL}\r\n`));
|
|
53
|
+
// Add response_format for segments
|
|
54
|
+
parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="response_format"\r\n\r\nverbose_json\r\n`));
|
|
55
|
+
// Add language if specified
|
|
56
|
+
if (options?.language) {
|
|
57
|
+
parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="language"\r\n\r\n${options.language}\r\n`));
|
|
58
|
+
}
|
|
59
|
+
// Add audio file
|
|
60
|
+
parts.push(Buffer.from(`--${boundary}\r\nContent-Disposition: form-data; name="file"; filename="${filename}"\r\nContent-Type: audio/webm\r\n\r\n`));
|
|
61
|
+
parts.push(Buffer.from(audioData));
|
|
62
|
+
parts.push(Buffer.from(`\r\n--${boundary}--\r\n`));
|
|
63
|
+
const body = Buffer.concat(parts);
|
|
64
|
+
const res = await fetch(WHISPER_API_URL, {
|
|
65
|
+
method: "POST",
|
|
66
|
+
headers: {
|
|
67
|
+
Authorization: `Bearer ${apiKey}`,
|
|
68
|
+
"Content-Type": `multipart/form-data; boundary=${boundary}`,
|
|
69
|
+
},
|
|
70
|
+
body,
|
|
71
|
+
});
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
const errorText = await res.text().catch(() => res.statusText);
|
|
74
|
+
throw new Error(`Whisper API error ${res.status}: ${errorText}`);
|
|
75
|
+
}
|
|
76
|
+
const data = await res.json();
|
|
77
|
+
return {
|
|
78
|
+
text: data.text,
|
|
79
|
+
segments: data.segments?.map((s) => ({
|
|
80
|
+
start: Math.round(s.start * 100) / 100,
|
|
81
|
+
end: Math.round(s.end * 100) / 100,
|
|
82
|
+
text: s.text.trim(),
|
|
83
|
+
})),
|
|
84
|
+
language: data.language,
|
|
85
|
+
duration: data.duration,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=whisper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper.js","sourceRoot":"","sources":["../../src/social/whisper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAElB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CACzH;AAED,eAAO,MAAM,QAAQ,EAAE,cAAc,EAkCpC,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -16,10 +16,13 @@ import * as queryApi from "./query-api.js";
|
|
|
16
16
|
import * as monitorWebsocket from "./monitor-websocket.js";
|
|
17
17
|
import * as aiExtract from "./ai-extract.js";
|
|
18
18
|
import * as interact from "./interact.js";
|
|
19
|
+
import * as snapshot from "./snapshot.js";
|
|
19
20
|
import * as batchScrape from "./batch-scrape.js";
|
|
20
21
|
import * as listJobs from "./list-jobs.js";
|
|
21
22
|
import * as jobStatus from "./job-status.js";
|
|
22
23
|
import * as deleteJob from "./delete-job.js";
|
|
24
|
+
import * as youtube from "./youtube.js";
|
|
25
|
+
import * as reddit from "./reddit.js";
|
|
23
26
|
export const allTools = [
|
|
24
27
|
// Scraping tools (no API key needed)
|
|
25
28
|
scrape,
|
|
@@ -45,10 +48,14 @@ export const allTools = [
|
|
|
45
48
|
aiExtract,
|
|
46
49
|
// Interaction & session tools (Playwright needed)
|
|
47
50
|
interact,
|
|
51
|
+
snapshot,
|
|
48
52
|
// Batch processing
|
|
49
53
|
batchScrape,
|
|
50
54
|
listJobs,
|
|
51
55
|
jobStatus,
|
|
52
56
|
deleteJob,
|
|
57
|
+
// Social media tools (no API key needed)
|
|
58
|
+
youtube,
|
|
59
|
+
reddit,
|
|
53
60
|
];
|
|
54
61
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAUtC,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,qCAAqC;IACrC,MAAwB;IACxB,KAAuB;IACvB,GAAqB;IACrB,OAAyB;IACzB,WAA6B;IAC7B,UAA4B;IAC5B,sCAAsC;IACtC,MAAwB;IACxB,UAA4B;IAC5B,WAA6B;IAC7B,WAA6B;IAC7B,eAAe;IACf,WAA6B;IAC7B,QAA0B;IAC1B,UAA4B;IAC5B,sDAAsD;IACtD,YAA8B;IAC9B,QAA0B;IAC1B,gBAAkC;IAClC,oCAAoC;IACpC,SAA2B;IAC3B,kDAAkD;IAClD,QAA0B;IAC1B,QAA0B;IAC1B,mBAAmB;IACnB,WAA6B;IAC7B,QAA0B;IAC1B,SAA2B;IAC3B,SAA2B;IAC3B,yCAAyC;IACzC,OAAyB;IACzB,MAAwB;CACzB,CAAC"}
|