kisstour-ads — Command Cheatsheet

Quick reference cho 9 commands CLI. Tất cả read-only (không mutate Google Ads account).

Prefix mọi lệnh: npm run ads -- <command> [flags]

Quick reference

Command Purpose Output
list-campaigns Liệt kê tất cả campaigns Console table
snapshot Dump cấu trúc full của ENABLED campaigns .snapshots/*.md + *.json
campaign-metrics Performance aggregate per campaign Console table
keyword-performance Top keywords by cost Console table
search-terms User queries thực tế triggering ads Console table
keyword-ideas Google Keyword Planner suggestions Console table
suggest-negatives Propose negative keywords .suggestions/*.md + *.html
suggest-pauses Propose keywords to pause .suggestions/*.md
ad-copy-audit Classify RSAs as new/old pattern .audits/*.md

Common workflows

Weekly optimization review (mỗi thứ Hai)

npm run ads -- campaign-metrics --days 7
npm run ads -- suggest-negatives --days 7
npm run ads -- suggest-pauses --days 7
# Mở .suggestions/*.html cho colleague review + share với owner

Monthly report cho owner

npm run ads -- campaign-metrics --days 30
npm run ads -- search-terms --days 30 --zero-conv --limit 50
npm run ads -- suggest-negatives --days 30
# HTML file ở .suggestions/ send cho owner

New keyword research

npm run ads -- keyword-ideas "<seed phrase>" --geo VN --lang EN --limit 30 --min-volume 500

Pre-Phase-1 (khi colleague chuẩn bị rewrite ad copy)

npm run ads -- ad-copy-audit
# .audits/*.md liệt kê 16 OLD ads cần rewrite kèm headlines hiện tại

Snapshot trước khi thay đổi lớn

npm run ads -- snapshot
# Commit .snapshots/<stamp>.json vào git để rollback-compare sau

Detail per command

list-campaigns

Liệt kê toàn bộ campaigns với status, channel, budget, dates.

npm run ads -- list-campaigns

Flags: none

Output: Console table cột id, name, status, channel, budget_VND, start, end.


snapshot

Dump cấu trúc ENABLED campaigns ra file markdown + JSON. Dùng để diff qua thời gian.

npm run ads -- snapshot

Flags: none (dùng SNAPSHOT_DIR env var để đổi output dir, default .snapshots/)

Output:

Chứa: campaigns + ad groups + ads (RSA headlines/descriptions) + keywords (positive + negative).


campaign-metrics

Aggregate metrics per campaign trong period. Tools để overview account health.

npm run ads -- campaign-metrics --days 30

Flags:

Output table cols: id, name, status, impr, clicks, ctr_pct, avg_cpc_VND, cost_VND, conv, cost_per_conv_VND

Note: Excludes REMOVED campaigns. Hiển thị cả PAUSED để biết campaigns nào đang off.


keyword-performance

Top keywords theo cost với metrics + quality score.

npm run ads -- keyword-performance --days 30
npm run ads -- keyword-performance --campaign 23772226224 --days 7 --limit 20

Flags:

Output cols: keyword, match, campaign, ad_group, qs, impr, clicks, ctr_pct, avg_cpc_VND, cost_VND, conv

Sorted by cost desc. Excludes negative keywords. Excludes status=REMOVED.


search-terms

Các query user thực sự gõ lên Google triggering ads của mình. Gold mine cho negatives + positive opportunities.

npm run ads -- search-terms --days 30 --limit 50
npm run ads -- search-terms --days 7 --zero-conv
npm run ads -- search-terms --campaign 21054320529 --days 30

Flags:

Output cols: search_term, status, triggered_by, match, campaign, impr, clicks, ctr_pct, cost_VND, conv

Status values:


keyword-ideas

Google Keyword Planner suggestions cho 1 seed phrase. Research volume + CPC estimate + competition.

npm run ads -- keyword-ideas "ho chi minh food tour"
npm run ads -- keyword-ideas "saigon motorbike" --geo HCMC --lang EN --limit 30
npm run ads -- keyword-ideas "vietnam tour" --geo VN,US --min-volume 1000

Flags:

Output cols: keyword, avg_monthly, competition (LOW/MEDIUM/HIGH), comp_idx, low_cpc_VND, high_cpc_VND

Multi-geo: --geo VN,US,HCMC — combine data từ nhiều locations.


suggest-negatives

Phân tích search terms, propose negative keywords. Output có HTML cho owner + MD cho checkbox approval.

npm run ads -- suggest-negatives --days 30
npm run ads -- suggest-negatives --days 7 --min-cost 30000 --min-clicks 2
npm run ads -- suggest-negatives --campaign 23772226224 --days 14

Flags:

Output (2 files by default):

Workflow: Colleague mở .md, tick [x] items approve → (Phase 3, chưa build) chạy apply-negatives để push qua API.

Logic filter: chỉ search terms với status=NONE (chưa add làm positive/negative ở ad group đó).


suggest-pauses

Propose keywords nên pause (CTR thấp + cost cao).

npm run ads -- suggest-pauses --days 30
npm run ads -- suggest-pauses --days 30 --min-clicks 50 --max-ctr 2 --min-cost 200000

Flags:

Output: .suggestions/<date>-pauses.md

Signal: high cost + low CTR = ad copy không resonate với query intent. Cân nhắc pause hoặc rewrite ad copy.


ad-copy-audit

Quét ENABLED RSAs, classify mỗi ad như NEW pattern (KissTour + Since 2017 style) vs OLD pattern (DKI + legacy phrases) vs non-RSA.

npm run ads -- ad-copy-audit
npm run ads -- ad-copy-audit --campaign 21054320529

Flags:

Output: .audits/<YYYY-MM-DD>-ad-copy-audit.md

Per ad: classification badge + full dump của headlines/descriptions hiện tại. Input cho Phase 1 (update-rsa) khi colleague rewrite copy.

Classification logic:


Environment

Output directories (all gitignored)

Related docs