Files
Daily-Campaign-Agent/.agents/skills/daily-campaign-triage/SKILL.md
T

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.