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 +1 -1
- package/dist/index.js +14 -5
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/references/google-ads-rules/google-ads-account-audit.md +659 -0
- package/dist/skill/references/google-ads-rules/google-ads-audience-strategy.md +364 -0
- package/dist/skill/references/google-ads-rules/google-ads-compliance.md +304 -15
- package/dist/skill/references/google-ads-rules/google-ads-conversion-architecture.md +366 -0
- package/dist/skill/references/google-ads-rules/google-ads-keyword-strategy.md +71 -0
- package/dist/skill/references/google-ads-rules/google-ads-launch-plan-template.md +106 -211
- package/dist/skill/references/google-ads-rules/google-ads-pmax-guide.md +457 -0
- package/dist/skill/references/google-ads-rules/sensitive-industries.md +84 -0
- package/dist/skill/references/google-ads.md +9 -5
- package/package.json +1 -1
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.
|
|
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(
|
|
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
|
|
5301
|
-
const
|
|
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(
|
|
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
|
-
|
|
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>",
|
package/dist/skill/_meta.json
CHANGED