@usenaive-sdk/cli 0.2.3 → 0.2.5
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/dist/commands/aeo.d.ts +2 -0
- package/dist/commands/aeo.js +410 -0
- package/dist/commands/aeo.js.map +1 -0
- package/dist/commands/app-data.d.ts +2 -0
- package/dist/commands/app-data.js +415 -0
- package/dist/commands/app-data.js.map +1 -0
- package/dist/commands/business.d.ts +2 -0
- package/dist/commands/business.js +451 -0
- package/dist/commands/business.js.map +1 -0
- package/dist/commands/ecommerce.d.ts +2 -0
- package/dist/commands/ecommerce.js +267 -0
- package/dist/commands/ecommerce.js.map +1 -0
- package/dist/commands/seo.d.ts +2 -0
- package/dist/commands/seo.js +504 -0
- package/dist/commands/seo.js.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
+
import { agentOutput } from "../output.js";
|
|
4
|
+
export const seoCmd = new Command("seo")
|
|
5
|
+
.description("SEO tools — keyword research, backlink analysis, and competitive intelligence via DataForSEO")
|
|
6
|
+
.addHelpText("after", `
|
|
7
|
+
Subcommands:
|
|
8
|
+
naive seo keywords Keyword research (Google, Bing, Google Trends)
|
|
9
|
+
naive seo backlinks Backlink analysis and domain metrics
|
|
10
|
+
naive seo labs Competitive intelligence and SERP analysis
|
|
11
|
+
|
|
12
|
+
Examples:
|
|
13
|
+
$ naive seo keywords google search-volume --keywords "seo tools,keyword research"
|
|
14
|
+
$ naive seo backlinks summary --target "example.com"
|
|
15
|
+
$ naive seo labs google keyword-overview --keywords "seo tools"
|
|
16
|
+
|
|
17
|
+
Credits:
|
|
18
|
+
Keywords: 1 credit per live call
|
|
19
|
+
Backlinks: 2 credits per live call
|
|
20
|
+
Labs: 2 credits per live call
|
|
21
|
+
Meta/utility endpoints: free
|
|
22
|
+
`);
|
|
23
|
+
// ===========================================================================
|
|
24
|
+
// KEYWORDS
|
|
25
|
+
// ===========================================================================
|
|
26
|
+
const keywordsCmd = new Command("keywords")
|
|
27
|
+
.description("Keyword research via DataForSEO Keywords Data API (Google, Bing, Google Trends)");
|
|
28
|
+
// --- Google Keywords ---
|
|
29
|
+
const googleKwCmd = new Command("google")
|
|
30
|
+
.description("Google Ads keyword data — search volume, keyword ideas, ad traffic");
|
|
31
|
+
function addKeywordSubcommand(parent, name, desc, engine, routePrefix) {
|
|
32
|
+
parent
|
|
33
|
+
.command(name)
|
|
34
|
+
.description(desc)
|
|
35
|
+
.option("--keywords <list>", "Comma-separated keywords")
|
|
36
|
+
.option("--target <domain>", "Target domain or URL")
|
|
37
|
+
.option("--category <id>", "Category ID")
|
|
38
|
+
.option("--location <code>", "Location code (e.g. 2840 for US)")
|
|
39
|
+
.option("--language <code>", "Language code (e.g. en)")
|
|
40
|
+
.option("--task", "Submit as async task instead of live")
|
|
41
|
+
.option("--json <body>", "Raw JSON body (overrides other options)")
|
|
42
|
+
.action(async (opts) => {
|
|
43
|
+
const body = opts.json
|
|
44
|
+
? JSON.parse(opts.json)
|
|
45
|
+
: buildKeywordBody(opts);
|
|
46
|
+
const suffix = opts.task ? "/task" : "";
|
|
47
|
+
const resp = await apiRequest("POST", `/v1/seo/keywords/${routePrefix}/${name}${suffix}`, body);
|
|
48
|
+
handleApiError(`seo.keywords.${engine}.${name}`, resp);
|
|
49
|
+
agentOutput({
|
|
50
|
+
action: `seo.keywords.${engine}.${name}`,
|
|
51
|
+
result: resp.data,
|
|
52
|
+
next_steps: [
|
|
53
|
+
{ command: `naive seo keywords ${engine} ${name} --help`, description: "See all options" },
|
|
54
|
+
{ command: `naive seo labs ${engine} keyword-overview --keywords "<kw>"`, description: "Get detailed keyword metrics" },
|
|
55
|
+
],
|
|
56
|
+
hints: [
|
|
57
|
+
opts.task ? "Async task submitted — check with task-get" : "Live results returned",
|
|
58
|
+
"Cost: 1 credit (live calls only)",
|
|
59
|
+
],
|
|
60
|
+
related_commands: [`naive seo keywords ${engine}`, "naive seo labs"],
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
addKeywordSubcommand(googleKwCmd, "search-volume", "Get search volume for keywords", "google", "google");
|
|
65
|
+
addKeywordSubcommand(googleKwCmd, "keywords-for-keywords", "Get related keywords for seed keywords", "google", "google");
|
|
66
|
+
addKeywordSubcommand(googleKwCmd, "keywords-for-site", "Get keywords for a website", "google", "google");
|
|
67
|
+
addKeywordSubcommand(googleKwCmd, "keywords-for-category", "Get keywords for an ad category", "google", "google");
|
|
68
|
+
addKeywordSubcommand(googleKwCmd, "ad-traffic-by-keywords", "Get ad traffic estimates", "google", "google");
|
|
69
|
+
addKeywordSubcommand(googleKwCmd, "ad-traffic-by-platforms", "Get ad traffic by platform breakdown", "google", "google");
|
|
70
|
+
// Google keyword meta
|
|
71
|
+
["locations", "languages", "categories", "adwords-status"].forEach((meta) => {
|
|
72
|
+
googleKwCmd
|
|
73
|
+
.command(meta)
|
|
74
|
+
.description(`List available ${meta} for Google keyword data`)
|
|
75
|
+
.action(async () => {
|
|
76
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google/${meta}`);
|
|
77
|
+
handleApiError(`seo.keywords.google.${meta}`, resp);
|
|
78
|
+
agentOutput({
|
|
79
|
+
action: `seo.keywords.google.${meta}`,
|
|
80
|
+
result: resp.data,
|
|
81
|
+
next_steps: [],
|
|
82
|
+
hints: ["Free endpoint — no credits used"],
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
// Google keyword task retrieval
|
|
87
|
+
googleKwCmd
|
|
88
|
+
.command("task-get <endpoint> <id>")
|
|
89
|
+
.description("Get results for a completed async keyword task")
|
|
90
|
+
.action(async (endpoint, id) => {
|
|
91
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google/${endpoint}/task/${id}`);
|
|
92
|
+
handleApiError("seo.keywords.google.task-get", resp);
|
|
93
|
+
agentOutput({
|
|
94
|
+
action: "seo.keywords.google.task-get",
|
|
95
|
+
result: resp.data,
|
|
96
|
+
next_steps: [],
|
|
97
|
+
hints: ["Task results retrieved"],
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
googleKwCmd
|
|
101
|
+
.command("tasks-ready <endpoint>")
|
|
102
|
+
.description("List ready tasks for a Google keyword endpoint")
|
|
103
|
+
.action(async (endpoint) => {
|
|
104
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google/${endpoint}/tasks-ready`);
|
|
105
|
+
handleApiError("seo.keywords.google.tasks-ready", resp);
|
|
106
|
+
agentOutput({
|
|
107
|
+
action: "seo.keywords.google.tasks-ready",
|
|
108
|
+
result: resp.data,
|
|
109
|
+
next_steps: [],
|
|
110
|
+
hints: ["Use task-get to retrieve results for ready tasks"],
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
// --- Bing Keywords ---
|
|
114
|
+
const bingKwCmd = new Command("bing")
|
|
115
|
+
.description("Bing keyword data — search volume, keyword ideas");
|
|
116
|
+
addKeywordSubcommand(bingKwCmd, "search-volume", "Get Bing search volume", "bing", "bing");
|
|
117
|
+
addKeywordSubcommand(bingKwCmd, "keywords-for-keywords", "Get related Bing keywords", "bing", "bing");
|
|
118
|
+
addKeywordSubcommand(bingKwCmd, "keywords-for-site", "Get Bing keywords for a site", "bing", "bing");
|
|
119
|
+
addKeywordSubcommand(bingKwCmd, "keywords-for-category", "Get Bing keywords for a category", "bing", "bing");
|
|
120
|
+
addKeywordSubcommand(bingKwCmd, "keyword-performance", "Get Bing keyword performance", "bing", "bing");
|
|
121
|
+
["locations", "languages", "categories"].forEach((meta) => {
|
|
122
|
+
bingKwCmd
|
|
123
|
+
.command(meta)
|
|
124
|
+
.description(`List available ${meta} for Bing keyword data`)
|
|
125
|
+
.action(async () => {
|
|
126
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/bing/${meta}`);
|
|
127
|
+
handleApiError(`seo.keywords.bing.${meta}`, resp);
|
|
128
|
+
agentOutput({
|
|
129
|
+
action: `seo.keywords.bing.${meta}`,
|
|
130
|
+
result: resp.data,
|
|
131
|
+
next_steps: [],
|
|
132
|
+
hints: ["Free endpoint — no credits used"],
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
bingKwCmd
|
|
137
|
+
.command("task-get <endpoint> <id>")
|
|
138
|
+
.description("Get results for a completed async Bing keyword task")
|
|
139
|
+
.action(async (endpoint, id) => {
|
|
140
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/bing/${endpoint}/task/${id}`);
|
|
141
|
+
handleApiError("seo.keywords.bing.task-get", resp);
|
|
142
|
+
agentOutput({
|
|
143
|
+
action: "seo.keywords.bing.task-get",
|
|
144
|
+
result: resp.data,
|
|
145
|
+
next_steps: [],
|
|
146
|
+
hints: ["Task results retrieved"],
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
bingKwCmd
|
|
150
|
+
.command("tasks-ready <endpoint>")
|
|
151
|
+
.description("List ready tasks for a Bing keyword endpoint")
|
|
152
|
+
.action(async (endpoint) => {
|
|
153
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/bing/${endpoint}/tasks-ready`);
|
|
154
|
+
handleApiError("seo.keywords.bing.tasks-ready", resp);
|
|
155
|
+
agentOutput({
|
|
156
|
+
action: "seo.keywords.bing.tasks-ready",
|
|
157
|
+
result: resp.data,
|
|
158
|
+
next_steps: [],
|
|
159
|
+
hints: ["Use task-get to retrieve results for ready tasks"],
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
// --- Google Trends ---
|
|
163
|
+
const trendsKwCmd = new Command("google-trends")
|
|
164
|
+
.description("Google Trends keyword data — explore trending topics");
|
|
165
|
+
addKeywordSubcommand(trendsKwCmd, "explore", "Explore Google Trends data", "google-trends", "google-trends");
|
|
166
|
+
["locations", "languages", "categories"].forEach((meta) => {
|
|
167
|
+
trendsKwCmd
|
|
168
|
+
.command(meta)
|
|
169
|
+
.description(`List available ${meta} for Google Trends`)
|
|
170
|
+
.action(async () => {
|
|
171
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google-trends/${meta}`);
|
|
172
|
+
handleApiError(`seo.keywords.google-trends.${meta}`, resp);
|
|
173
|
+
agentOutput({
|
|
174
|
+
action: `seo.keywords.google-trends.${meta}`,
|
|
175
|
+
result: resp.data,
|
|
176
|
+
next_steps: [],
|
|
177
|
+
hints: ["Free endpoint — no credits used"],
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
trendsKwCmd
|
|
182
|
+
.command("task-get <endpoint> <id>")
|
|
183
|
+
.description("Get results for a completed Google Trends task")
|
|
184
|
+
.action(async (endpoint, id) => {
|
|
185
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google-trends/${endpoint}/task/${id}`);
|
|
186
|
+
handleApiError("seo.keywords.google-trends.task-get", resp);
|
|
187
|
+
agentOutput({
|
|
188
|
+
action: "seo.keywords.google-trends.task-get",
|
|
189
|
+
result: resp.data,
|
|
190
|
+
next_steps: [],
|
|
191
|
+
hints: ["Task results retrieved"],
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
trendsKwCmd
|
|
195
|
+
.command("tasks-ready <endpoint>")
|
|
196
|
+
.description("List ready tasks for a Google Trends endpoint")
|
|
197
|
+
.action(async (endpoint) => {
|
|
198
|
+
const resp = await apiRequest("GET", `/v1/seo/keywords/google-trends/${endpoint}/tasks-ready`);
|
|
199
|
+
handleApiError("seo.keywords.google-trends.tasks-ready", resp);
|
|
200
|
+
agentOutput({
|
|
201
|
+
action: "seo.keywords.google-trends.tasks-ready",
|
|
202
|
+
result: resp.data,
|
|
203
|
+
next_steps: [],
|
|
204
|
+
hints: ["Use task-get to retrieve results for ready tasks"],
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
// Keywords utility
|
|
208
|
+
keywordsCmd
|
|
209
|
+
.command("endpoints")
|
|
210
|
+
.description("List all available Keywords Data API endpoints")
|
|
211
|
+
.action(async () => {
|
|
212
|
+
const resp = await apiRequest("GET", "/v1/seo/keywords/endpoints");
|
|
213
|
+
handleApiError("seo.keywords.endpoints", resp);
|
|
214
|
+
agentOutput({
|
|
215
|
+
action: "seo.keywords.endpoints",
|
|
216
|
+
result: resp.data,
|
|
217
|
+
next_steps: [],
|
|
218
|
+
hints: ["Free endpoint — no credits used"],
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
keywordsCmd.addCommand(googleKwCmd);
|
|
222
|
+
keywordsCmd.addCommand(bingKwCmd);
|
|
223
|
+
keywordsCmd.addCommand(trendsKwCmd);
|
|
224
|
+
// ===========================================================================
|
|
225
|
+
// BACKLINKS
|
|
226
|
+
// ===========================================================================
|
|
227
|
+
const backlinksCmd = new Command("backlinks")
|
|
228
|
+
.description("Backlink analysis — link profiles, referring domains, competitors, bulk metrics");
|
|
229
|
+
function addBacklinkSubcommand(name, desc) {
|
|
230
|
+
backlinksCmd
|
|
231
|
+
.command(name)
|
|
232
|
+
.description(desc)
|
|
233
|
+
.option("--target <domain>", "Target domain or URL")
|
|
234
|
+
.option("--targets <list>", "Comma-separated targets (for bulk/intersection)")
|
|
235
|
+
.option("--limit <n>", "Max results to return")
|
|
236
|
+
.option("--offset <n>", "Results offset for pagination")
|
|
237
|
+
.option("--order-by <field>", "Sort field")
|
|
238
|
+
.option("--json <body>", "Raw JSON body (overrides other options)")
|
|
239
|
+
.action(async (opts) => {
|
|
240
|
+
const body = opts.json
|
|
241
|
+
? JSON.parse(opts.json)
|
|
242
|
+
: buildBacklinkBody(opts);
|
|
243
|
+
const resp = await apiRequest("POST", `/v1/seo/backlinks/${name}`, body);
|
|
244
|
+
handleApiError(`seo.backlinks.${name}`, resp);
|
|
245
|
+
agentOutput({
|
|
246
|
+
action: `seo.backlinks.${name}`,
|
|
247
|
+
result: resp.data,
|
|
248
|
+
next_steps: [
|
|
249
|
+
{ command: `naive seo backlinks ${name} --help`, description: "See all options" },
|
|
250
|
+
{ command: "naive seo backlinks summary --target <domain>", description: "Get backlink summary for a domain" },
|
|
251
|
+
],
|
|
252
|
+
hints: ["Cost: 2 credits"],
|
|
253
|
+
related_commands: ["naive seo backlinks", "naive seo labs"],
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
const backlinkEndpointList = [
|
|
258
|
+
["summary", "Get backlink summary for a domain"],
|
|
259
|
+
["history", "Get historical backlink data"],
|
|
260
|
+
["backlinks", "List backlinks for a target"],
|
|
261
|
+
["anchors", "Get anchor text distribution"],
|
|
262
|
+
["domain-pages", "List pages with backlinks on a domain"],
|
|
263
|
+
["domain-pages-summary", "Summary of pages with backlinks"],
|
|
264
|
+
["referring-domains", "List referring domains"],
|
|
265
|
+
["referring-networks", "List referring networks (IP ranges)"],
|
|
266
|
+
["competitors", "Find backlink competitors"],
|
|
267
|
+
["domain-intersection", "Find common referring domains between targets"],
|
|
268
|
+
["page-intersection", "Find common referring pages between targets"],
|
|
269
|
+
["timeseries-summary", "Backlink timeseries summary"],
|
|
270
|
+
["timeseries-new-lost", "New and lost backlinks over time"],
|
|
271
|
+
["bulk-backlinks", "Bulk backlink counts for multiple targets"],
|
|
272
|
+
["bulk-referring-domains", "Bulk referring domain counts"],
|
|
273
|
+
["bulk-ranks", "Bulk domain rank data"],
|
|
274
|
+
["bulk-spam-score", "Bulk spam scores for domains"],
|
|
275
|
+
["bulk-new-lost", "Bulk new/lost backlinks"],
|
|
276
|
+
["bulk-pages-summary", "Bulk pages summary for multiple targets"],
|
|
277
|
+
];
|
|
278
|
+
backlinkEndpointList.forEach(([name, desc]) => addBacklinkSubcommand(name, desc));
|
|
279
|
+
backlinksCmd
|
|
280
|
+
.command("index")
|
|
281
|
+
.description("Get current backlink index info (free)")
|
|
282
|
+
.action(async () => {
|
|
283
|
+
const resp = await apiRequest("GET", "/v1/seo/backlinks/index");
|
|
284
|
+
handleApiError("seo.backlinks.index", resp);
|
|
285
|
+
agentOutput({
|
|
286
|
+
action: "seo.backlinks.index",
|
|
287
|
+
result: resp.data,
|
|
288
|
+
next_steps: [],
|
|
289
|
+
hints: ["Free endpoint — no credits used"],
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
backlinksCmd
|
|
293
|
+
.command("available-filters")
|
|
294
|
+
.description("List available backlink filters (free)")
|
|
295
|
+
.action(async () => {
|
|
296
|
+
const resp = await apiRequest("GET", "/v1/seo/backlinks/available-filters");
|
|
297
|
+
handleApiError("seo.backlinks.available-filters", resp);
|
|
298
|
+
agentOutput({
|
|
299
|
+
action: "seo.backlinks.available-filters",
|
|
300
|
+
result: resp.data,
|
|
301
|
+
next_steps: [],
|
|
302
|
+
hints: ["Free endpoint — no credits used"],
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
backlinksCmd
|
|
306
|
+
.command("id-list")
|
|
307
|
+
.description("Get list of backlink task IDs")
|
|
308
|
+
.option("--json <body>", "Raw JSON body")
|
|
309
|
+
.action(async (opts) => {
|
|
310
|
+
const body = opts.json ? JSON.parse(opts.json) : {};
|
|
311
|
+
const resp = await apiRequest("POST", "/v1/seo/backlinks/id-list", body);
|
|
312
|
+
handleApiError("seo.backlinks.id-list", resp);
|
|
313
|
+
agentOutput({
|
|
314
|
+
action: "seo.backlinks.id-list",
|
|
315
|
+
result: resp.data,
|
|
316
|
+
next_steps: [],
|
|
317
|
+
hints: ["Free endpoint — no credits used"],
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
// ===========================================================================
|
|
321
|
+
// LABS
|
|
322
|
+
// ===========================================================================
|
|
323
|
+
const labsCmd = new Command("labs")
|
|
324
|
+
.description("DataForSEO Labs — competitive intelligence, SERP analysis, keyword difficulty");
|
|
325
|
+
// --- Google Labs ---
|
|
326
|
+
const googleLabsCmd = new Command("google")
|
|
327
|
+
.description("Google SERP analysis — ranked keywords, competitors, domain metrics");
|
|
328
|
+
function addLabsSubcommand(parent, name, desc, engine) {
|
|
329
|
+
parent
|
|
330
|
+
.command(name)
|
|
331
|
+
.description(desc)
|
|
332
|
+
.option("--keywords <list>", "Comma-separated keywords")
|
|
333
|
+
.option("--target <domain>", "Target domain or URL")
|
|
334
|
+
.option("--targets <list>", "Comma-separated targets (for intersections)")
|
|
335
|
+
.option("--location <code>", "Location code")
|
|
336
|
+
.option("--language <code>", "Language code")
|
|
337
|
+
.option("--limit <n>", "Max results")
|
|
338
|
+
.option("--offset <n>", "Results offset")
|
|
339
|
+
.option("--json <body>", "Raw JSON body (overrides other options)")
|
|
340
|
+
.action(async (opts) => {
|
|
341
|
+
const body = opts.json
|
|
342
|
+
? JSON.parse(opts.json)
|
|
343
|
+
: buildLabsBody(opts);
|
|
344
|
+
const resp = await apiRequest("POST", `/v1/seo/labs/${engine}/${name}`, body);
|
|
345
|
+
handleApiError(`seo.labs.${engine}.${name}`, resp);
|
|
346
|
+
agentOutput({
|
|
347
|
+
action: `seo.labs.${engine}.${name}`,
|
|
348
|
+
result: resp.data,
|
|
349
|
+
next_steps: [
|
|
350
|
+
{ command: `naive seo labs ${engine} ${name} --help`, description: "See all options" },
|
|
351
|
+
],
|
|
352
|
+
hints: ["Cost: 2 credits"],
|
|
353
|
+
related_commands: [`naive seo labs ${engine}`, "naive seo keywords"],
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
// Google Labs: Keyword Research
|
|
358
|
+
addLabsSubcommand(googleLabsCmd, "keywords-for-site", "Get keywords a site ranks for", "google");
|
|
359
|
+
addLabsSubcommand(googleLabsCmd, "related-keywords", "Find related keywords", "google");
|
|
360
|
+
addLabsSubcommand(googleLabsCmd, "keyword-suggestions", "Get keyword suggestions", "google");
|
|
361
|
+
addLabsSubcommand(googleLabsCmd, "keyword-ideas", "Generate keyword ideas", "google");
|
|
362
|
+
addLabsSubcommand(googleLabsCmd, "bulk-keyword-difficulty", "Bulk keyword difficulty scores", "google");
|
|
363
|
+
addLabsSubcommand(googleLabsCmd, "search-intent", "Classify keyword search intent", "google");
|
|
364
|
+
addLabsSubcommand(googleLabsCmd, "keyword-overview", "Get detailed keyword metrics", "google");
|
|
365
|
+
addLabsSubcommand(googleLabsCmd, "historical-keyword-data", "Historical keyword data", "google");
|
|
366
|
+
// Google Labs: Market Categories
|
|
367
|
+
addLabsSubcommand(googleLabsCmd, "categories-for-domain", "Find categories for a domain", "google");
|
|
368
|
+
addLabsSubcommand(googleLabsCmd, "keywords-for-categories", "Get keywords for categories", "google");
|
|
369
|
+
addLabsSubcommand(googleLabsCmd, "domain-metrics-by-categories", "Domain metrics by category", "google");
|
|
370
|
+
addLabsSubcommand(googleLabsCmd, "top-searches", "Get top searches", "google");
|
|
371
|
+
// Google Labs: Competitor Research
|
|
372
|
+
addLabsSubcommand(googleLabsCmd, "ranked-keywords", "Keywords a domain ranks for", "google");
|
|
373
|
+
addLabsSubcommand(googleLabsCmd, "serp-competitors", "Find SERP competitors for keywords", "google");
|
|
374
|
+
addLabsSubcommand(googleLabsCmd, "competitors-domain", "Find domain-level competitors", "google");
|
|
375
|
+
addLabsSubcommand(googleLabsCmd, "domain-intersection", "Keywords shared between domains", "google");
|
|
376
|
+
addLabsSubcommand(googleLabsCmd, "subdomains", "List subdomains with rankings", "google");
|
|
377
|
+
addLabsSubcommand(googleLabsCmd, "relevant-pages", "Find relevant pages for keywords", "google");
|
|
378
|
+
addLabsSubcommand(googleLabsCmd, "domain-rank-overview", "Domain rank overview", "google");
|
|
379
|
+
addLabsSubcommand(googleLabsCmd, "historical-serps", "Historical SERP data", "google");
|
|
380
|
+
addLabsSubcommand(googleLabsCmd, "historical-rank-overview", "Historical rank overview", "google");
|
|
381
|
+
addLabsSubcommand(googleLabsCmd, "page-intersection", "Pages shared between domains", "google");
|
|
382
|
+
addLabsSubcommand(googleLabsCmd, "bulk-traffic-estimation", "Bulk traffic estimates", "google");
|
|
383
|
+
// --- Bing Labs ---
|
|
384
|
+
const bingLabsCmd = new Command("bing")
|
|
385
|
+
.description("Bing SERP analysis — ranked keywords, competitors");
|
|
386
|
+
addLabsSubcommand(bingLabsCmd, "related-keywords", "Find related Bing keywords", "bing");
|
|
387
|
+
addLabsSubcommand(bingLabsCmd, "ranked-keywords", "Keywords a domain ranks for on Bing", "bing");
|
|
388
|
+
addLabsSubcommand(bingLabsCmd, "domain-rank-overview", "Bing domain rank overview", "bing");
|
|
389
|
+
addLabsSubcommand(bingLabsCmd, "serp-competitors", "Find Bing SERP competitors", "bing");
|
|
390
|
+
addLabsSubcommand(bingLabsCmd, "domain-intersection", "Keywords shared between domains on Bing", "bing");
|
|
391
|
+
addLabsSubcommand(bingLabsCmd, "page-intersection", "Pages shared between domains on Bing", "bing");
|
|
392
|
+
addLabsSubcommand(bingLabsCmd, "relevant-pages", "Find relevant pages on Bing", "bing");
|
|
393
|
+
addLabsSubcommand(bingLabsCmd, "competitors-domain", "Find Bing domain competitors", "bing");
|
|
394
|
+
addLabsSubcommand(bingLabsCmd, "subdomains", "List subdomains on Bing", "bing");
|
|
395
|
+
addLabsSubcommand(bingLabsCmd, "bulk-keyword-difficulty", "Bulk keyword difficulty on Bing", "bing");
|
|
396
|
+
addLabsSubcommand(bingLabsCmd, "bulk-traffic-estimation", "Bulk traffic estimates on Bing", "bing");
|
|
397
|
+
// --- Amazon Labs ---
|
|
398
|
+
const amazonLabsCmd = new Command("amazon")
|
|
399
|
+
.description("Amazon search analysis — product rankings, keyword research");
|
|
400
|
+
addLabsSubcommand(amazonLabsCmd, "bulk-search-volume", "Bulk Amazon search volume", "amazon");
|
|
401
|
+
addLabsSubcommand(amazonLabsCmd, "related-keywords", "Related Amazon keywords", "amazon");
|
|
402
|
+
addLabsSubcommand(amazonLabsCmd, "ranked-keywords", "Keywords a product ranks for", "amazon");
|
|
403
|
+
addLabsSubcommand(amazonLabsCmd, "product-rank-overview", "Product rank overview", "amazon");
|
|
404
|
+
addLabsSubcommand(amazonLabsCmd, "product-competitors", "Find product competitors", "amazon");
|
|
405
|
+
addLabsSubcommand(amazonLabsCmd, "product-keyword-intersections", "Keywords shared between products", "amazon");
|
|
406
|
+
// Labs utility
|
|
407
|
+
labsCmd
|
|
408
|
+
.command("locations-and-languages")
|
|
409
|
+
.description("List available locations and languages for Labs (free)")
|
|
410
|
+
.action(async () => {
|
|
411
|
+
const resp = await apiRequest("GET", "/v1/seo/labs/locations-and-languages");
|
|
412
|
+
handleApiError("seo.labs.locations-and-languages", resp);
|
|
413
|
+
agentOutput({
|
|
414
|
+
action: "seo.labs.locations-and-languages",
|
|
415
|
+
result: resp.data,
|
|
416
|
+
next_steps: [],
|
|
417
|
+
hints: ["Free endpoint — no credits used"],
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
labsCmd
|
|
421
|
+
.command("categories")
|
|
422
|
+
.description("List available Labs categories (free)")
|
|
423
|
+
.action(async () => {
|
|
424
|
+
const resp = await apiRequest("GET", "/v1/seo/labs/categories");
|
|
425
|
+
handleApiError("seo.labs.categories", resp);
|
|
426
|
+
agentOutput({
|
|
427
|
+
action: "seo.labs.categories",
|
|
428
|
+
result: resp.data,
|
|
429
|
+
next_steps: [],
|
|
430
|
+
hints: ["Free endpoint — no credits used"],
|
|
431
|
+
});
|
|
432
|
+
});
|
|
433
|
+
labsCmd
|
|
434
|
+
.command("status")
|
|
435
|
+
.description("Check DataForSEO Labs API status (free)")
|
|
436
|
+
.action(async () => {
|
|
437
|
+
const resp = await apiRequest("GET", "/v1/seo/labs/status");
|
|
438
|
+
handleApiError("seo.labs.status", resp);
|
|
439
|
+
agentOutput({
|
|
440
|
+
action: "seo.labs.status",
|
|
441
|
+
result: resp.data,
|
|
442
|
+
next_steps: [],
|
|
443
|
+
hints: ["Free endpoint — no credits used"],
|
|
444
|
+
});
|
|
445
|
+
});
|
|
446
|
+
labsCmd.addCommand(googleLabsCmd);
|
|
447
|
+
labsCmd.addCommand(bingLabsCmd);
|
|
448
|
+
labsCmd.addCommand(amazonLabsCmd);
|
|
449
|
+
// ===========================================================================
|
|
450
|
+
// Wire up top-level
|
|
451
|
+
// ===========================================================================
|
|
452
|
+
seoCmd.addCommand(keywordsCmd);
|
|
453
|
+
seoCmd.addCommand(backlinksCmd);
|
|
454
|
+
seoCmd.addCommand(labsCmd);
|
|
455
|
+
// ===========================================================================
|
|
456
|
+
// Body builders
|
|
457
|
+
// ===========================================================================
|
|
458
|
+
function buildKeywordBody(opts) {
|
|
459
|
+
const body = {};
|
|
460
|
+
if (opts.keywords)
|
|
461
|
+
body.keywords = opts.keywords.split(",").map((k) => k.trim());
|
|
462
|
+
if (opts.target)
|
|
463
|
+
body.target = opts.target;
|
|
464
|
+
if (opts.category)
|
|
465
|
+
body.category_code = parseInt(opts.category);
|
|
466
|
+
if (opts.location)
|
|
467
|
+
body.location_code = parseInt(opts.location);
|
|
468
|
+
if (opts.language)
|
|
469
|
+
body.language_code = opts.language;
|
|
470
|
+
return body;
|
|
471
|
+
}
|
|
472
|
+
function buildBacklinkBody(opts) {
|
|
473
|
+
const body = {};
|
|
474
|
+
if (opts.target)
|
|
475
|
+
body.target = opts.target;
|
|
476
|
+
if (opts.targets)
|
|
477
|
+
body.targets = opts.targets.split(",").map((t) => t.trim());
|
|
478
|
+
if (opts.limit)
|
|
479
|
+
body.limit = parseInt(opts.limit);
|
|
480
|
+
if (opts.offset)
|
|
481
|
+
body.offset = parseInt(opts.offset);
|
|
482
|
+
if (opts.orderBy)
|
|
483
|
+
body.order_by = [opts.orderBy];
|
|
484
|
+
return body;
|
|
485
|
+
}
|
|
486
|
+
function buildLabsBody(opts) {
|
|
487
|
+
const body = {};
|
|
488
|
+
if (opts.keywords)
|
|
489
|
+
body.keywords = opts.keywords.split(",").map((k) => k.trim());
|
|
490
|
+
if (opts.target)
|
|
491
|
+
body.target = opts.target;
|
|
492
|
+
if (opts.targets)
|
|
493
|
+
body.targets = opts.targets.split(",").map((t) => t.trim());
|
|
494
|
+
if (opts.location)
|
|
495
|
+
body.location_code = parseInt(opts.location);
|
|
496
|
+
if (opts.language)
|
|
497
|
+
body.language_code = opts.language;
|
|
498
|
+
if (opts.limit)
|
|
499
|
+
body.limit = parseInt(opts.limit);
|
|
500
|
+
if (opts.offset)
|
|
501
|
+
body.offset = parseInt(opts.offset);
|
|
502
|
+
return body;
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=seo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seo.js","sourceRoot":"","sources":["../../src/commands/seo.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,11 @@ import { jobsCmd } from "./commands/jobs.js";
|
|
|
17
17
|
import { domainsCmd } from "./commands/domains.js";
|
|
18
18
|
import { billingCmd } from "./commands/billing.js";
|
|
19
19
|
import { socialCmd } from "./commands/social.js";
|
|
20
|
+
import { appDataCmd } from "./commands/app-data.js";
|
|
21
|
+
import { businessCmd } from "./commands/business.js";
|
|
22
|
+
import { seoCmd } from "./commands/seo.js";
|
|
23
|
+
import { aeoCmd } from "./commands/aeo.js";
|
|
24
|
+
import { ecommerceCmd } from "./commands/ecommerce.js";
|
|
20
25
|
const program = new Command();
|
|
21
26
|
program
|
|
22
27
|
.name("naive")
|
|
@@ -50,6 +55,11 @@ Account Management:
|
|
|
50
55
|
Primitives:
|
|
51
56
|
email Send/receive email via provisioned inboxes
|
|
52
57
|
search Web search, URL extraction, deep research
|
|
58
|
+
seo SEO tools — keywords, backlinks, competitive intelligence
|
|
59
|
+
app-data Mobile app data — Google Play, Apple App Store
|
|
60
|
+
business Business data — Google, Trustpilot, TripAdvisor, Social
|
|
61
|
+
aeo AEO/GEO — LLM responses, scraper, mentions, AI keywords
|
|
62
|
+
ecommerce E-commerce — Google Shopping, Amazon products & sellers
|
|
53
63
|
images AI image generation (fal.ai) + stock photos (Pexels)
|
|
54
64
|
video AI video generation (fal.ai)
|
|
55
65
|
social Social media — connect accounts, post, analytics
|
|
@@ -78,6 +88,11 @@ program.addCommand(searchCmd);
|
|
|
78
88
|
program.addCommand(imagesCmd);
|
|
79
89
|
program.addCommand(videoCmd);
|
|
80
90
|
program.addCommand(socialCmd);
|
|
91
|
+
program.addCommand(seoCmd);
|
|
92
|
+
program.addCommand(appDataCmd);
|
|
93
|
+
program.addCommand(businessCmd);
|
|
94
|
+
program.addCommand(aeoCmd);
|
|
95
|
+
program.addCommand(ecommerceCmd);
|
|
81
96
|
program.addCommand(jobsCmd);
|
|
82
97
|
program.parse();
|
|
83
98
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|