siluzan-tso-cli 1.0.0-beta.50 → 1.0.0-beta.51

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 CHANGED
@@ -20,7 +20,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
20
20
  siluzan-tso init --force # 强制覆盖已存在文件
21
21
  ```
22
22
 
23
- > **注意**:当前为测试版(1.0.0-beta.50),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
23
+ > **注意**:当前为测试版(1.0.0-beta.51),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
24
24
 
25
25
  | 助手 | 建议 `--ai` |
26
26
  |------|-------------|
package/dist/index.js CHANGED
@@ -5160,7 +5160,7 @@ function buildKeywordsForBatchJob(opts) {
5160
5160
  for (const kw of opts.keywords) {
5161
5161
  let text = kw.trim();
5162
5162
  let match = defaultMatch;
5163
- if (text.startsWith('"') && text.endsWith('"')) {
5163
+ if (text.startsWith("*") && text.endsWith("*")) {
5164
5164
  text = text.slice(1, -1);
5165
5165
  match = "PHRASE";
5166
5166
  } else if (text.startsWith("[") && text.endsWith("]")) {
@@ -5201,6 +5201,7 @@ function buildAdsForBatchJob(opts) {
5201
5201
  }
5202
5202
  async function runAdCampaignCreate(opts) {
5203
5203
  const config = loadConfig(opts.token);
5204
+ console.log(opts);
5204
5205
  if (!config.apiBaseUrl) {
5205
5206
  console.error("\n\u274C \u672A\u914D\u7F6E apiBaseUrl\uFF0C\u8BF7\u6267\u884C\uFF1Asiluzan-tso config set --api-base <URL>\n");
5206
5207
  process.exit(1);
@@ -5297,12 +5298,20 @@ async function runAdCampaignCreate(opts) {
5297
5298
  return;
5298
5299
  }
5299
5300
  const taskId = data?.["id"] ?? data?.["data"];
5300
- const kwCount = opts.keywords?.length ?? 0;
5301
- const hasAd = (opts.headlines?.length ?? 0) >= 3 && (opts.descriptions?.length ?? 0) >= 2;
5301
+ const adGroups = campaign.AdGroupsForBatchJob;
5302
+ const firstGroup = adGroups?.[0];
5303
+ const kwCount = (firstGroup?.KeywordsForBatchJob ?? []).reduce(
5304
+ (sum, item) => sum + (item.KeywordText?.length ?? 0),
5305
+ 0
5306
+ );
5307
+ const adCount = firstGroup?.AdsForBatchJob?.length ?? 0;
5308
+ const hasAd = adCount > 0;
5302
5309
  console.log(`
5303
5310
  \u2705 \u5E7F\u544A\u7CFB\u5217\u521B\u5EFA\u4EFB\u52A1\u5DF2\u63D0\u4EA4\uFF08\u5F02\u6B65\uFF09`);
5304
5311
  console.log(` \u5E7F\u544A\u7CFB\u5217\uFF1A${opts.name}`);
5305
- console.log(` \u5E7F\u544A\u7EC4\uFF1A${opts.adgroupName}\uFF08${kwCount} \u4E2A\u5173\u952E\u8BCD${hasAd ? "\uFF0C\u542B 1 \u6761\u5E7F\u544A\u521B\u610F" : "\uFF0C\u65E0\u5E7F\u544A\u521B\u610F"}\uFF09`);
5312
+ console.log(
5313
+ ` \u5E7F\u544A\u7EC4\uFF1A${opts.adgroupName}\uFF08${kwCount} \u4E2A\u5173\u952E\u8BCD` + (hasAd ? `\uFF0C\u542B ${adCount} \u7EC4\u54CD\u5E94\u5F0F\u641C\u7D22\u5E7F\u544A` : "\uFF0C\u65E0\u5E7F\u544A\u521B\u610F") + "\uFF09"
5314
+ );
5306
5315
  if (!kwCount) console.log(` \u26A0\uFE0F \u672A\u4F20\u5173\u952E\u8BCD\uFF0C\u8BF7\u5B8C\u6210\u540E\u6267\u884C\uFF1Asiluzan-tso ad keyword-create -a ${opts.account} --campaign-id <id> ...`);
5307
5316
  if (!hasAd) console.log(` \u26A0\uFE0F \u672A\u4F20\u5E7F\u544A\u521B\u610F\uFF0C\u8BF7\u5B8C\u6210\u540E\u6267\u884C\uFF1Asiluzan-tso ad ad-create -a ${opts.account} --adgroup-id <id> ...`);
5308
5317
  if (taskId) {
@@ -9917,7 +9926,7 @@ adCmd.command("campaign-create").description(
9917
9926
  (v) => v.split(",").map((s) => s.trim())
9918
9927
  ).option("--start <date>", "\u5F00\u59CB\u65E5\u671F YYYY-MM-DD\uFF08\u9ED8\u8BA4\u4ECA\u5929\uFF09").option("--end <date>", "\u7ED3\u675F\u65E5\u671F YYYY-MM-DD\uFF08\u9ED8\u8BA4 2037-12-30\uFF09").option("--url <url>", "\u63A8\u5E7F\u843D\u5730\u9875\uFF08\u53EF\u9009\uFF09").option("--status <status>", "\u521D\u59CB\u72B6\u6001\uFF1AEnabled | Paused\uFF08\u9ED8\u8BA4 Enabled\uFF09", "Enabled").option(
9919
9928
  "--keywords <kws>",
9920
- '\u5173\u952E\u8BCD\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF1B\u683C\u5F0F\uFF1A\u8BCD\u2192BROAD\uFF0C"\u8BCD"\u2192PHRASE\uFF0C[\u8BCD]\u2192EXACT\uFF09',
9929
+ "\u5173\u952E\u8BCD\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF1B\u683C\u5F0F\uFF1A\u8BCD\u2192BROAD\uFF0C*\u8BCD*\u2192PHRASE\uFF0C[\u8BCD]\u2192EXACT\uFF09",
9921
9930
  (v) => v.split(",").map((s) => s.trim())
9922
9931
  ).option("--match-type <type>", "\u65E0\u524D\u7F00\u5173\u952E\u8BCD\u7684\u9ED8\u8BA4\u5339\u914D\u7C7B\u578B\uFF1ABROAD | PHRASE | EXACT\uFF08\u9ED8\u8BA4 BROAD\uFF09").option(
9923
9932
  "--headlines <titles>",
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.0.0-beta.50",
4
- "publishedAt": 1775013938898
3
+ "version": "1.0.0-beta.51",
4
+ "publishedAt": 1775023908902
5
5
  }