193 lines
11 KiB
Markdown
193 lines
11 KiB
Markdown
---
|
|
name: "daily-campaign-triage"
|
|
description: "Analyze advertising daily reports or Excel/CSV exports at Ad level, especially VK Ads ecosystem reports, using confirmed KPI, maturity dates, and 7/14-day trends to produce actionable pause, recovery, creative-test, and scale guidance. Analysis-only: do not change platform state."
|
|
---
|
|
|
|
# Daily Campaign Triage
|
|
|
|
Turn an advertising report into a short, evidence-backed operator queue focused on
|
|
Ads. Use Campaign and Ad Group only as source-mapping or identity context when needed;
|
|
do not add Campaign-level rankings to the daily brief. Support raw spreadsheets,
|
|
CSV exports, pasted tables, and narrative briefs without assuming a platform, schema,
|
|
currency, timezone, attribution model, or KPI.
|
|
|
|
This is read-only decision support. Never change budgets, bids, status, targeting,
|
|
creative, or platform state unless the user separately requests and authorizes those
|
|
exact actions.
|
|
|
|
## Operating modes
|
|
|
|
- **Daily triage:** identify today's manual-intervention queue from the latest mature
|
|
KPI day plus recent 7/14-day evidence.
|
|
- **Follow-up diagnosis:** answer why a named entity changed and whether to rollback,
|
|
hold, retest, pause/reduce, or consider scaling.
|
|
- **VK optimization brief:** translate Ad-level evidence into VK-relevant operator
|
|
guidance for budget rollback, learning protection, creative-variable tests, audience
|
|
or word-pack isolation, and controlled scaling without pretending the action ran.
|
|
|
|
Use daily triage by default. Add follow-up diagnosis when the user names an entity,
|
|
describes a recent intervention, or asks a causal/recovery question.
|
|
|
|
## Required input
|
|
|
|
Establish this contract before making business verdicts:
|
|
|
|
| Input | Required content | If absent |
|
|
|---|---|---|
|
|
| Report | Readable spreadsheet/CSV/table; date plus stable hierarchy or names; spend and KPI components | Ask for a readable source or explain which analyses are impossible |
|
|
| KPI card | Metric, formula, direction, target, scope, and maturity rule for every decision KPI | Stop before pass/fail or action labels; ask once in a compact list |
|
|
| Analysis date | Requested report date, or permission to use the latest complete delivery date; each lagged KPI's latest mature cohort | Derive only when definitions and coverage make it unambiguous; otherwise confirm |
|
|
| Pacing card | Spend target, currency, scope, period, and whether it is a minimum, desired level, cap, or range | Required only for pacing/scale-allocation conclusions; otherwise mark pacing unavailable |
|
|
|
|
Useful optional input:
|
|
|
|
- minimum sample or persistence rule per KPI;
|
|
- budget adjustment rule or standard test budget per new Ad;
|
|
- timezone, currency, attribution window, status, budget, and launch date;
|
|
- dated budget/bid/targeting/creative/structure/tracking changes;
|
|
- platform constraints, such as whether status or budget can change at Ad level.
|
|
|
|
Accept natural language, or use this standard intake card when prompting is needed:
|
|
|
|
```text
|
|
数据文件/表格:
|
|
要分析的日报日期: # 留空则使用最新完整投放日
|
|
KPI:指标|公式|方向|目标|适用范围|成熟规则
|
|
日消耗目标:金额|币种|范围|最低/期望/上限/区间
|
|
最低样本/持续性规则(可选):
|
|
预算调整规则/新 Ad 标准测试预算(可选):
|
|
近期操作(可选):日期|对象|预算/出价/词包/定向/素材/结构|改前→改后
|
|
本次特别关注(可选):
|
|
```
|
|
|
|
Do not ask the user to repeat values already supplied in the current request or
|
|
available conversation context. Restate them in `分析口径确认` and ask only about
|
|
missing or contradictory fields that can materially change the verdict.
|
|
|
|
If minimum-sample or persistence rules are not supplied, use the framework defaults
|
|
only as provisional evidence rules and disclose them. Never manufacture missing KPI,
|
|
budget history, or platform capability.
|
|
|
|
Read [references/input-contract.md](references/input-contract.md) when mapping a new
|
|
report, resolving KPI or pacing definitions, or handling hierarchical rows and
|
|
different maturity dates. Read
|
|
[references/decision-framework.md](references/decision-framework.md) before making
|
|
the triage. For every daily brief, read
|
|
[references/learning-stable-ranking.md](references/learning-stable-ranking.md) to
|
|
build separate learning-period and stable-period rankings. Read
|
|
[references/output-standard.md](references/output-standard.md) before producing the
|
|
final report. When the user has configured file delivery, also read
|
|
[references/delivery-profile.md](references/delivery-profile.md) and deliver the
|
|
brief through that format/path instead of placing the full brief in chat. Also read
|
|
[references/change-response.md](references/change-response.md) when the user reports
|
|
recent scaling, rollback, restructuring, targeting/creative changes, a sudden drop,
|
|
a former winner that stopped working, or asks how to rescue an entity.
|
|
When the report comes from VK or the user asks for VK-specific execution guidance,
|
|
also read [references/vk-optimization.md](references/vk-optimization.md).
|
|
|
|
For local `.xlsx`, `.csv`, or `.tsv` inputs, prefer the deterministic standard-library
|
|
analyzer in `scripts/analyze_report.py`; it produces normalized Ad-level evidence but
|
|
does not invent business decisions. Read [references/script-usage.md](references/script-usage.md)
|
|
before running it. After applying the decision framework, place the final judgments in
|
|
the brief JSON contract and use `scripts/build_brief.py` to create the DOCX. The scripts
|
|
have no third-party Python dependencies.
|
|
|
|
## Confirmation gates
|
|
|
|
Use these as decision gates, not ceremonial questions.
|
|
|
|
### Gate A — source and grain
|
|
|
|
Inspect the file first. Proceed without asking when sheet, row grain, hierarchy,
|
|
dates, units, and totals are unambiguous. Ask for confirmation only when competing
|
|
mappings would materially change aggregation or attribution. State the proposed
|
|
mapping in the question. If the mapping is clear, record it in the output and continue
|
|
in the same turn; do not wait for ceremonial approval.
|
|
|
|
### Gate B — KPI and maturity
|
|
|
|
This gate is mandatory before `达标/未达标`, pause/reduce, rollback, or scale labels.
|
|
Confirm any missing KPI target/direction/formula/scope and the latest mature date or
|
|
maturity rule. Never retrieve targets from unrelated code or silently reuse another
|
|
account's values. Until confirmed, continue only with data-quality and neutral trend
|
|
analysis labeled `无业务 KPI,仅分析趋势`.
|
|
|
|
### Gate C — change causality
|
|
|
|
Use only for follow-up diagnosis. If the recommendation depends on whether a budget,
|
|
bid, word pack, audience, creative, or structure changed, confirm the material change
|
|
and approximate effective date when the report cannot establish it. Do not block a
|
|
plain performance classification that does not rely on causality.
|
|
|
|
### Gate D — execution boundary
|
|
|
|
Recommendations do not authorize platform changes. If the user later asks to execute,
|
|
confirm the exact entities and actions immediately before mutation under the relevant
|
|
platform workflow. This skill itself remains analysis-only.
|
|
|
|
## Standard workflow
|
|
|
|
1. **Intake:** identify mode, requested date, source coverage, and supplied KPI/pacing
|
|
cards. List only missing inputs that can change today's verdict.
|
|
2. **Validate:** inspect sheets, columns, row grain, identities, units, duplicates,
|
|
blanks versus zero, parent totals, missing dates, and reconciliation risk. Preserve
|
|
the source file.
|
|
3. **Normalize:** aggregate from the finest trustworthy leaf rows; never double-count
|
|
parent totals. Recompute ratio KPIs from summed numerators and denominators.
|
|
4. **Align maturity:** set a separate analysis date and comparison windows for each
|
|
lagged KPI. Exclude immature cohorts from negative judgments.
|
|
5. **Build windows:** calculate analysis day, recent 7 mature days, previous 7 mature
|
|
days, and 14-day context for each trustworthy Ad.
|
|
6. **Split and rank pools:** separate learning-period from stable-period entities.
|
|
Apply the 3/5/7-day checkpoints to the learning pool and the
|
|
quality/stability/KPI tiers to the stable pool.
|
|
7. **Diagnose Ads:** rank and diagnose Ads directly. Preserve parent names only to
|
|
disambiguate Ads with duplicate names; keep Campaign aggregates out of the report.
|
|
8. **Analyze changes when relevant:** compare pre-change control, transition, and
|
|
post-change mature cohorts; separate observed facts from causal hypotheses.
|
|
9. **Classify action:** choose one state—pause/reduce, rollback/recovery,
|
|
hold/protect, clean-control retest, scale candidate, investigate data, or no action.
|
|
10. **Prioritize:** rank by impact, confidence, and urgency; quantify pacing impact and
|
|
avoid filling spend gaps with unvalidated winners.
|
|
11. **Report:** render the fixed output contract below, including recheck and exit
|
|
conditions. Never imply that a recommendation was executed.
|
|
12. **Deliver:** when a delivery profile is active, create and verify the requested
|
|
artifact, save it using the analysis date—not the generation date—and return only
|
|
a concise completion message plus the file link in chat.
|
|
|
|
Keep generated evidence JSON, source exports, local delivery overrides, and output
|
|
documents outside the reusable Skill repository. Never ship an advertiser's raw data
|
|
or historical named-Ad diagnosis as an example.
|
|
|
|
## Output contract
|
|
|
|
Always output these sections in order:
|
|
|
|
1. **是否达标** — list every confirmed KPI as `KPI:值(达标/未达标)`, using its
|
|
correct mature date; include spend target attainment and material caveats here.
|
|
2. **问题分析** — show the Ad-level learning-period ranking and stable-period ranking
|
|
with evidence, tier, and decision. Do not include a Campaign-level ranking.
|
|
3. **建议动作** — list pause, budget reduction, hold/recheck, scale, new-Ad demand,
|
|
and creative-refresh alerts; quantify released budget or spend capacity when valid.
|
|
4. **近7天表现好的 Ads(3–5个)** — name, KPI data, spend/sample, stage, consistency,
|
|
and why each Ad is good. Return fewer than three rather than lower the standard.
|
|
|
|
Use the exact table fields and concise writing rules in
|
|
[references/output-standard.md](references/output-standard.md). Omit empty detail
|
|
rows, but never omit a section heading; state `无` so the absence is explicit.
|
|
|
|
## Decision boundaries
|
|
|
|
- Recommend an Ad pause/reduction candidate only when that Ad has persistent mature
|
|
underperformance, meaningful exposure, adequate confirmed sample, and no plausible
|
|
data-lag or recent-change explanation.
|
|
- Recommend at Ad level. Mention an Ad Group or Campaign only when the platform lever
|
|
is unavailable at Ad level or parent context is required to identify the Ad.
|
|
- A daily spend shortfall is not permission to scale failing traffic. Fill pacing gaps
|
|
through verified winners or bounded exploration; if neither exists, report the gap.
|
|
- Prefer a controlled rollback or clean retest over an immediate pause when a known
|
|
configuration change plausibly explains deterioration and a credible prior control
|
|
exists. Treat rollback as a recovery test, not proof of recovery.
|
|
- Do not use an unvalidated new winner to fill a pacing gap. One exceptional cohort or
|
|
one to two good days is not durable scale evidence.
|