outrank-cli 0.1.1 → 0.3.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 +218 -25
- package/SKILL.md +439 -282
- package/package.json +1 -1
- package/src/commands/keywords.js +17 -24
- package/src/commands/products.js +711 -2
- package/src/index.js +5 -1
package/package.json
CHANGED
package/src/commands/keywords.js
CHANGED
|
@@ -16,10 +16,10 @@ export const KEYWORDS_HELP = `Usage:
|
|
|
16
16
|
outrank-cli keywords export --product <product-id>
|
|
17
17
|
outrank-cli keywords generation-status --product <product-id>
|
|
18
18
|
outrank-cli keywords add --product <product-id> --json <object>
|
|
19
|
+
outrank-cli keywords update <keyword-id> --json <object>
|
|
19
20
|
outrank-cli keywords suggest --product <product-id> (--keyword <text> | --theme <text>) [--keyword-region <code>] [--limit <n>]
|
|
20
21
|
outrank-cli keywords generate --product <product-id> --count <n> [--source competitors|audiences|both] [--competitor <competitor-id> ...] [--audience <text> ...]
|
|
21
22
|
outrank-cli keywords bulk-process --product <product-id> --json <object> [--keyword-region <code>]
|
|
22
|
-
outrank-cli keywords reschedule <keyword-id> --scheduled-for <date>
|
|
23
23
|
outrank-cli keywords bulk-reschedule --json <object>
|
|
24
24
|
outrank-cli keywords delete <keyword-id>
|
|
25
25
|
outrank-cli keywords bulk-delete --json <object>
|
|
@@ -29,14 +29,16 @@ JSON Input:
|
|
|
29
29
|
|
|
30
30
|
Examples:
|
|
31
31
|
outrank-cli keywords list --product 00000000-0000-0000-0000-000000000000 --scope all
|
|
32
|
+
outrank-cli keywords list --product 00000000-0000-0000-0000-000000000000 --scope scheduled --q "best seo tools"
|
|
32
33
|
outrank-cli keywords export --product 00000000-0000-0000-0000-000000000000
|
|
33
34
|
outrank-cli keywords generation-status --product 00000000-0000-0000-0000-000000000000
|
|
34
35
|
outrank-cli keywords add --product 00000000-0000-0000-0000-000000000000 --json-file keywords.json
|
|
36
|
+
outrank-cli keywords update 00000000-0000-0000-0000-000000000000 --json '{"instructions":"Write for beginners and include a step-by-step setup section"}'
|
|
37
|
+
outrank-cli keywords update 00000000-0000-0000-0000-000000000000 --json '{"scheduled_for":"2026-05-20"}'
|
|
35
38
|
outrank-cli keywords suggest --product 00000000-0000-0000-0000-000000000000 --theme "email marketing" --limit 8
|
|
36
39
|
outrank-cli keywords generate --product 00000000-0000-0000-0000-000000000000 --count 10 --source both
|
|
37
40
|
outrank-cli keywords generate --product 00000000-0000-0000-0000-000000000000 --count 5 --source competitors --competitor 11111111-1111-1111-1111-111111111111
|
|
38
41
|
outrank-cli keywords bulk-process --product 00000000-0000-0000-0000-000000000000 --json '{"keywords":["keyword one","keyword two"]}'
|
|
39
|
-
outrank-cli keywords reschedule 00000000-0000-0000-0000-000000000000 --scheduled-for 2026-05-20
|
|
40
42
|
outrank-cli keywords bulk-reschedule --json-file keyword-reschedule.json
|
|
41
43
|
outrank-cli keywords delete 00000000-0000-0000-0000-000000000000
|
|
42
44
|
`;
|
|
@@ -131,6 +133,17 @@ const handleKeywordsAdd = async (parsed) => {
|
|
|
131
133
|
return response.payload;
|
|
132
134
|
};
|
|
133
135
|
|
|
136
|
+
const handleKeywordsUpdate = async (parsed) => {
|
|
137
|
+
const keywordId = getRequiredPositional(parsed, 0, '<keyword-id>');
|
|
138
|
+
const body = await readJsonInput(parsed);
|
|
139
|
+
const response = await requestAgentApi(parsed, {
|
|
140
|
+
method: 'PATCH',
|
|
141
|
+
path: `/keywords/${keywordId}`,
|
|
142
|
+
body,
|
|
143
|
+
});
|
|
144
|
+
return response.payload;
|
|
145
|
+
};
|
|
146
|
+
|
|
134
147
|
const handleKeywordsSuggest = async (parsed) => {
|
|
135
148
|
const keyword = getOption(parsed, 'keyword');
|
|
136
149
|
const theme = getOption(parsed, 'theme');
|
|
@@ -228,26 +241,6 @@ const handleKeywordsBulkProcess = async (parsed) => {
|
|
|
228
241
|
return response.payload;
|
|
229
242
|
};
|
|
230
243
|
|
|
231
|
-
const handleKeywordsReschedule = async (parsed) => {
|
|
232
|
-
const keywordId = getRequiredPositional(parsed, 0, '<keyword-id>');
|
|
233
|
-
const scheduledFor = getOption(parsed, 'scheduled-for');
|
|
234
|
-
if (!scheduledFor) {
|
|
235
|
-
throw Object.assign(new Error('Missing required option: --scheduled-for <date>.'), {
|
|
236
|
-
cliCode: 'CLI_INVALID_USAGE',
|
|
237
|
-
guidance: 'Pass the target schedule date with `--scheduled-for YYYY-MM-DD` or an ISO timestamp.',
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
const response = await requestAgentApi(parsed, {
|
|
242
|
-
method: 'PATCH',
|
|
243
|
-
path: `/keywords/${keywordId}`,
|
|
244
|
-
body: {
|
|
245
|
-
scheduled_for: scheduledFor,
|
|
246
|
-
},
|
|
247
|
-
});
|
|
248
|
-
return response.payload;
|
|
249
|
-
};
|
|
250
|
-
|
|
251
244
|
const handleKeywordsBulkReschedule = async (parsed) => {
|
|
252
245
|
const body = await readJsonInput(parsed);
|
|
253
246
|
const response = await requestAgentApi(parsed, {
|
|
@@ -287,7 +280,7 @@ export const handleKeywordsCommand = async (argv) => {
|
|
|
287
280
|
{
|
|
288
281
|
usage: KEYWORDS_HELP.trim(),
|
|
289
282
|
},
|
|
290
|
-
'Choose one of: list, get, export, generation-status, add, suggest, generate, bulk-process,
|
|
283
|
+
'Choose one of: list, get, export, generation-status, add, update, suggest, generate, bulk-process, bulk-reschedule, delete, bulk-delete.',
|
|
291
284
|
);
|
|
292
285
|
}
|
|
293
286
|
|
|
@@ -296,10 +289,10 @@ export const handleKeywordsCommand = async (argv) => {
|
|
|
296
289
|
if (subcommand === 'export') return handleKeywordsExport(parsed);
|
|
297
290
|
if (subcommand === 'generation-status') return handleKeywordsGenerationStatus(parsed);
|
|
298
291
|
if (subcommand === 'add') return handleKeywordsAdd(parsed);
|
|
292
|
+
if (subcommand === 'update') return handleKeywordsUpdate(parsed);
|
|
299
293
|
if (subcommand === 'suggest') return handleKeywordsSuggest(parsed);
|
|
300
294
|
if (subcommand === 'generate') return handleKeywordsGenerate(parsed);
|
|
301
295
|
if (subcommand === 'bulk-process') return handleKeywordsBulkProcess(parsed);
|
|
302
|
-
if (subcommand === 'reschedule') return handleKeywordsReschedule(parsed);
|
|
303
296
|
if (subcommand === 'bulk-reschedule') return handleKeywordsBulkReschedule(parsed);
|
|
304
297
|
if (subcommand === 'delete') return handleKeywordsDelete(parsed);
|
|
305
298
|
if (subcommand === 'bulk-delete') return handleKeywordsBulkDelete(parsed);
|