@optima-chat/ads-cli 0.6.0 → 0.8.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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/account/check.d.ts.map +1 -1
  3. package/dist/commands/account/check.js +12 -62
  4. package/dist/commands/account/check.js.map +1 -1
  5. package/dist/commands/account/index.d.ts.map +1 -1
  6. package/dist/commands/account/index.js +2 -2
  7. package/dist/commands/account/index.js.map +1 -1
  8. package/dist/commands/account/link.d.ts +6 -0
  9. package/dist/commands/account/link.d.ts.map +1 -0
  10. package/dist/commands/account/link.js +57 -0
  11. package/dist/commands/account/link.js.map +1 -0
  12. package/dist/commands/ad/create.d.ts.map +1 -1
  13. package/dist/commands/ad/create.js +29 -28
  14. package/dist/commands/ad/create.js.map +1 -1
  15. package/dist/commands/ad/delete.d.ts.map +1 -1
  16. package/dist/commands/ad/delete.js +1 -28
  17. package/dist/commands/ad/delete.js.map +1 -1
  18. package/dist/commands/ad/info.d.ts.map +1 -1
  19. package/dist/commands/ad/info.js +3 -66
  20. package/dist/commands/ad/info.js.map +1 -1
  21. package/dist/commands/ad/list.d.ts.map +1 -1
  22. package/dist/commands/ad/list.js +1 -65
  23. package/dist/commands/ad/list.js.map +1 -1
  24. package/dist/commands/ad/update.d.ts.map +1 -1
  25. package/dist/commands/ad/update.js +8 -17
  26. package/dist/commands/ad/update.js.map +1 -1
  27. package/dist/commands/ad-group/create.d.ts.map +1 -1
  28. package/dist/commands/ad-group/create.js +1 -23
  29. package/dist/commands/ad-group/create.js.map +1 -1
  30. package/dist/commands/ad-group/delete.d.ts.map +1 -1
  31. package/dist/commands/ad-group/delete.js +1 -28
  32. package/dist/commands/ad-group/delete.js.map +1 -1
  33. package/dist/commands/ad-group/info.d.ts.map +1 -1
  34. package/dist/commands/ad-group/info.js +4 -37
  35. package/dist/commands/ad-group/info.js.map +1 -1
  36. package/dist/commands/ad-group/list.d.ts.map +1 -1
  37. package/dist/commands/ad-group/list.js +1 -57
  38. package/dist/commands/ad-group/list.js.map +1 -1
  39. package/dist/commands/ad-group/update.d.ts.map +1 -1
  40. package/dist/commands/ad-group/update.js +11 -28
  41. package/dist/commands/ad-group/update.js.map +1 -1
  42. package/dist/commands/auth/status.d.ts +0 -2
  43. package/dist/commands/auth/status.d.ts.map +1 -1
  44. package/dist/commands/auth/status.js +12 -47
  45. package/dist/commands/auth/status.js.map +1 -1
  46. package/dist/commands/campaign/create.d.ts.map +1 -1
  47. package/dist/commands/campaign/create.js +1 -24
  48. package/dist/commands/campaign/create.js.map +1 -1
  49. package/dist/commands/campaign/delete.d.ts.map +1 -1
  50. package/dist/commands/campaign/delete.js +1 -28
  51. package/dist/commands/campaign/delete.js.map +1 -1
  52. package/dist/commands/campaign/info.d.ts.map +1 -1
  53. package/dist/commands/campaign/info.js +3 -34
  54. package/dist/commands/campaign/info.js.map +1 -1
  55. package/dist/commands/campaign/list.d.ts.map +1 -1
  56. package/dist/commands/campaign/list.js +1 -46
  57. package/dist/commands/campaign/list.js.map +1 -1
  58. package/dist/commands/campaign/update.d.ts.map +1 -1
  59. package/dist/commands/campaign/update.js +11 -28
  60. package/dist/commands/campaign/update.js.map +1 -1
  61. package/dist/commands/config.d.ts.map +1 -1
  62. package/dist/commands/config.js +16 -72
  63. package/dist/commands/config.js.map +1 -1
  64. package/dist/commands/keyword/add.d.ts.map +1 -1
  65. package/dist/commands/keyword/add.js +1 -20
  66. package/dist/commands/keyword/add.js.map +1 -1
  67. package/dist/commands/keyword/delete.d.ts.map +1 -1
  68. package/dist/commands/keyword/delete.js +1 -28
  69. package/dist/commands/keyword/delete.js.map +1 -1
  70. package/dist/commands/keyword/list.d.ts.map +1 -1
  71. package/dist/commands/keyword/list.js +1 -51
  72. package/dist/commands/keyword/list.js.map +1 -1
  73. package/dist/commands/keyword/update.d.ts.map +1 -1
  74. package/dist/commands/keyword/update.js +10 -24
  75. package/dist/commands/keyword/update.js.map +1 -1
  76. package/dist/index.js +0 -0
  77. package/package.json +9 -10
@@ -2,74 +2,24 @@
2
2
  * Keyword List Command - 列出关键词
3
3
  */
4
4
  import { Command } from 'commander';
5
- import chalk from 'chalk';
6
- import Table from 'cli-table3';
7
- import ora from 'ora';
8
5
  import { getApiClient } from '../../lib/api-client.js';
9
6
  import { handleError } from '../../utils/errors.js';
10
- import { warn } from '../../utils/logger.js';
11
7
  import { getCustomerId } from '../../utils/customer-id.js';
12
8
  export const listCommand = new Command('list')
13
9
  .description('列出关键词')
14
10
  .option('--campaign-id <id>', '按广告系列过滤')
15
11
  .option('--status <status>', '按状态过滤 (ENABLED/PAUSED/REMOVED)')
16
12
  .option('--limit <number>', '限制返回数量', '100')
17
- .option('--json', '以 JSON 格式输出')
18
13
  .action(async (options) => {
19
14
  try {
20
15
  const customerId = getCustomerId();
21
16
  const client = getApiClient();
22
- const spinner = ora('正在获取关键词列表...').start();
23
- // 获取关键词列表
24
17
  const keywords = await client.listKeywords(customerId, {
25
18
  campaignId: options.campaignId,
26
19
  status: options.status,
27
20
  limit: parseInt(options.limit),
28
21
  });
29
- spinner.stop();
30
- if (keywords.length === 0) {
31
- warn('未找到关键词');
32
- return;
33
- }
34
- // 输出结果
35
- if (options.json) {
36
- console.log(JSON.stringify(keywords, null, 2));
37
- }
38
- else {
39
- const table = new Table({
40
- head: [
41
- chalk.cyan('关键词'),
42
- chalk.cyan('匹配类型'),
43
- chalk.cyan('状态'),
44
- chalk.cyan('质量得分'),
45
- chalk.cyan('展示量'),
46
- chalk.cyan('点击量'),
47
- chalk.cyan('费用'),
48
- chalk.cyan('点击率'),
49
- ],
50
- colWidths: [25, 12, 10, 10, 12, 10, 12, 10],
51
- });
52
- keywords.forEach((keyword) => {
53
- const cost = keyword.metrics?.cost_micros
54
- ? (keyword.metrics.cost_micros / 1000000).toFixed(2)
55
- : '0.00';
56
- const ctr = keyword.metrics?.ctr
57
- ? (keyword.metrics.ctr * 100).toFixed(2) + '%'
58
- : '0.00%';
59
- table.push([
60
- keyword.ad_group_criterion?.keyword?.text || 'N/A',
61
- keyword.ad_group_criterion?.keyword?.match_type || 'N/A',
62
- keyword.ad_group_criterion?.status || 'N/A',
63
- keyword.ad_group_criterion?.quality_info?.quality_score || 'N/A',
64
- keyword.metrics?.impressions || 0,
65
- keyword.metrics?.clicks || 0,
66
- cost,
67
- ctr,
68
- ]);
69
- });
70
- console.log('\n' + table.toString() + '\n');
71
- console.log(chalk.gray(`共 ${keywords.length} 个关键词\n`));
72
- }
22
+ console.log(JSON.stringify(keywords, null, 2));
73
23
  }
74
24
  catch (error) {
75
25
  handleError(error);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/keyword/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/keyword/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE;YACrD,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/keyword/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SA0CtB,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/keyword/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SA6BtB,CAAC"}
@@ -2,8 +2,6 @@
2
2
  * Keyword Update Command - 更新关键词
3
3
  */
4
4
  import { Command } from 'commander';
5
- import chalk from 'chalk';
6
- import ora from 'ora';
7
5
  import { getApiClient } from '../../lib/api-client.js';
8
6
  import { handleError } from '../../utils/errors.js';
9
7
  import { getCustomerId } from '../../utils/customer-id.js';
@@ -13,38 +11,26 @@ export const updateCommand = new Command('update')
13
11
  .requiredOption('--criterion-id <id>', '关键词条件 ID')
14
12
  .option('--status <status>', '状态 (ENABLED, PAUSED)')
15
13
  .option('--bid <amount>', '每次点击出价(美元)')
16
- .option('--json', '以 JSON 格式输出')
17
14
  .action(async (options) => {
18
- if (!options.status && !options.bid) {
19
- console.log(chalk.red('请至少指定一个要更新的字段: --status 或 --bid'));
20
- return;
21
- }
22
- const spinner = ora('更新关键词...').start();
23
15
  try {
16
+ if (!options.status && !options.bid) {
17
+ console.log(JSON.stringify({
18
+ error: 'missing_fields',
19
+ message: '请至少指定一个要更新的字段: --status 或 --bid'
20
+ }, null, 2));
21
+ process.exit(1);
22
+ }
24
23
  const customerId = getCustomerId();
25
24
  const client = getApiClient();
26
25
  const updateData = {};
27
- if (options.status) {
26
+ if (options.status)
28
27
  updateData.status = options.status;
29
- }
30
- if (options.bid) {
28
+ if (options.bid)
31
29
  updateData.cpcBidMicros = Math.round(parseFloat(options.bid) * 1000000);
32
- }
33
30
  const result = await client.updateKeyword(customerId, options.adGroupId, options.criterionId, updateData);
34
- spinner.succeed('关键词已更新');
35
- if (options.json) {
36
- console.log(JSON.stringify(result, null, 2));
37
- }
38
- else {
39
- console.log(chalk.green(`\n✅ 关键词 ${options.criterionId} 已更新`));
40
- if (options.status)
41
- console.log(chalk.gray(`状态: ${options.status}`));
42
- if (options.bid)
43
- console.log(chalk.gray(`出价: $${options.bid}`));
44
- }
31
+ console.log(JSON.stringify(result, null, 2));
45
32
  }
46
33
  catch (error) {
47
- spinner.fail('更新失败');
48
34
  handleError(error);
49
35
  }
50
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/keyword/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,OAAO,CAAC;KACpB,cAAc,CAAC,oBAAoB,EAAE,QAAQ,CAAC;KAC9C,cAAc,CAAC,qBAAqB,EAAE,UAAU,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC;KACtC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE1G,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC;YAC/D,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,OAAO,CAAC,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/keyword/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,OAAO,CAAC;KACpB,cAAc,CAAC,oBAAoB,EAAE,QAAQ,CAAC;KAC9C,cAAc,CAAC,qBAAqB,EAAE,UAAU,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,iCAAiC;aAC3C,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM;YAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACvD,IAAI,OAAO,CAAC,GAAG;YAAE,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE1G,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/ads-cli",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "用自然语言管理 Google Ads 广告投放 - 专为 Claude Code 设计的对话式 CLI 工具",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,14 +13,6 @@
13
13
  ".claude",
14
14
  "README.md"
15
15
  ],
16
- "scripts": {
17
- "build": "tsc",
18
- "dev": "tsx src/index.ts",
19
- "start": "node dist/index.js",
20
- "prepublishOnly": "npm run build",
21
- "lint": "eslint src --ext .ts",
22
- "format": "prettier --write \"src/**/*.ts\""
23
- },
24
16
  "keywords": [
25
17
  "google-ads",
26
18
  "google-ads-api",
@@ -63,5 +55,12 @@
63
55
  "prettier": "^3.2.4",
64
56
  "tsx": "^4.7.0",
65
57
  "typescript": "^5.3.3"
58
+ },
59
+ "scripts": {
60
+ "build": "tsc",
61
+ "dev": "tsx src/index.ts",
62
+ "start": "node dist/index.js",
63
+ "lint": "eslint src --ext .ts",
64
+ "format": "prettier --write \"src/**/*.ts\""
66
65
  }
67
- }
66
+ }