PREREQUISITE: Read ../_mureo-shared/SKILL.md for auth, security rules, output format, and Tool Selection (Read/Write on Code, mureo_strategy_* / mureo_state_* MCP on Desktop / Cowork).
Guide me through setting up mureo for a new marketing account.
-
Check installation: Verify mureo is installed by running mureo --help. If not found, guide the user to run pip install mureo.
-
Check data mode (BYOD first, then auth):
Always run mureo byod status first. If any platform shows
BYOD (N rows, ...), that platform is in BYOD mode — do NOT prompt
the user to run mureo auth setup for it, do NOT call mureo auth status to "verify" it (that command reads credentials.json directly
and ignores BYOD), and do NOT report it as "未認証". For BYOD platforms,
announce: "Using BYOD CSV data (N rows, )."
For the remaining platforms (those showing not configured or real API), then run mureo auth status to see which have OAuth credentials.
If a platform is not configured for BYOD AND has no credentials, offer
mureo auth setup (interactive — user runs it themselves) or offer
the BYOD path: "Export a CSV from and run mureo byod import <file> instead."
Never claim a platform is unauthenticated when mureo byod status shows
it in BYOD mode. BYOD takes priority over OAuth and is sufficient on its
own for analysis.
Note: When calling MCP tools, you do NOT need to specify customer_id or
account_id — they are automatically loaded from credentials.json (real
API mode) or routed to the BYOD client (BYOD mode). Just omit them.
-
Create STRATEGY.md: Ask me about my business to fill in each section:
- Persona: Who is the target customer? (role, age, goals, pain points)
- USP: What makes the product/service unique? (3-5 bullet points)
- Target Audience: Demographics, geography, budget range
- Brand Voice: Tone and style guidelines for ad copy
- Market Context: Competitors, market trends, competitive advantages
- Operation Mode: Choose from the imported campaigns' actual
maturity, NOT from the fact that mureo was just set up:
- Use
ONBOARDING_LEARNING only for genuinely new campaigns still
in their learning period — little/no accumulated conversions and
started recently (roughly the last 2-4 weeks).
- For campaigns that have already been running for a while with
accumulated conversion history, pick a steady-state mode — default to
EFFICIENCY_STABILIZE (mature campaigns optimizing for efficiency),
or another mode the imported data clearly warrants (e.g.
SCALE_EXPANSION, TURNAROUND_RESCUE).
- Base this on real delivery data, not setup recency: use the recent
conversion volume from
google_ads_performance_report (LAST_30_DAYS)
and the learning status from google_ads_campaigns_diagnose — i.e.
the data fetched in step 7 below. If you reach this step before that
data is available, fetch it now (or finalize the mode right after the
step-7 diagnosis). STATE.json's campaign snapshots do not carry age /
conversion counts, so do not rely on them for this. If still unsure,
ask me. Picking ONBOARDING_LEARNING for a long-running campaign
makes the first daily-check wrongly tell me to "prioritize data
accumulation" when the data is already there.
If I don't know the answers to any of the above sections (Persona, USP,
Target Audience, Brand Voice, Market Context — Operation Mode is chosen
from campaign maturity per the rule above, not from the URL), offer an
alternative: ask me for the
product / landing-page URL (or corporate site / competitor URLs).
Then fetch the URL with WebFetch, read the page content, and draft a
first-pass for every unknown section — Persona, USP, Target Audience,
Brand Voice, and Market Context — from what's on the site. Show me the
draft for each section and ask me to confirm or correct it before writing
STRATEGY.md. If multiple URLs are relevant (LP + corporate + competitor),
fetch each and consolidate; competitor URLs are especially useful for
Market Context. If the site is behind login or returns no useful content,
fall back to interactive Q&A. Apply this URL-fallback per-section: the
user may know some sections (e.g., Brand Voice) but need help drafting
others (e.g., Persona, USP) — only fetch and draft the ones I'm unsure
about.
Write the completed STRATEGY.md to the current directory.
-
Discover platforms and data sources:
- For each advertising platform with configured credentials, discover accessible accounts and list campaigns
- Hosted-connector platforms: if a hosted official-MCP connector is present in the session (e.g. TikTok's
tt-ads-* tools — mureo providers add tiktok-ads-official registers it as a Claude.ai connector), treat it as a discoverable platform under the key tiktok_ads and list its campaigns via the connector's own tools. See ../_mureo-shared/SKILL.md → Hosted-connector platforms.
- Check if Search Console credentials are available — if so, run site discovery and list verified sites
- Check if GA4 MCP is available by probing for analytics tools
- Record all available platforms and data sources in STRATEGY.md under a
## Data Sources section
-
Initialize STATE.json: For each discovered platform, snapshot campaigns into STATE.json under the corresponding platforms key (e.g. google_ads, meta_ads, tiktok_ads for the TikTok hosted connector).
-
Set up Goals: Ask about quantitative marketing goals:
- "What are your key marketing goals? (e.g., CPA target, lead volume, ROAS target, organic traffic growth)"
- For each goal, ask for: target value, deadline, and which platforms/data sources it applies to
- For goals involving website conversions or user behavior, note that GA4 data will be used for tracking
- For goals involving organic search, note Search Console as the data source
- Create
## Goal: <title> sections in STRATEGY.md with Target, Deadline, Current (TBD), Platform, and Priority fields
-
Offer budget guardrails (optional but recommended): mureo can enforce hard budget limits deterministically — the built-in StrategyPolicyGate refuses any native google_ads_* / meta_ads_* budget mutation that violates a ## Guardrails section in STRATEGY.md, before dispatch, regardless of what the AI decides. Without the section the gate is fail-open (no enforcement), so most operators never get guardrails unless they know to ask — offer them here.
- Explain in one line: "hard limits mureo enforces before any budget change, regardless of the AI."
- Offer to set the machine-readable keys, seeding defaults from what you already discovered (the Target Audience Budget Range, and the current per-campaign budgets from step 5) — but let me confirm every number, never auto-decide:
max_daily_budget_per_campaign — suggest from the current max campaign daily budget (e.g. current max × 1.5) or the Budget Range.
max_daily_budget_increase_pct — suggest a conservative default (e.g. 20).
max_total_daily_budget — suggest from the Budget Range upper bound.
blocked_operations — offer opt-in for distinct destructive tools that actually exist (e.g. google_ads_keywords_remove, meta_ads_audiences_delete); each name must exactly match the dispatched MCP tool name or the block never fires. Note the gate matches whole tool names, not arguments: there is no standalone campaign-delete tool (Google Ads removes a campaign via google_ads_campaigns_update_status with status=REMOVED, the same tool that pauses/enables; Meta has none), so "block campaign deletion only" is not possible. See ../_mureo-strategy/SKILL.md → Guardrails (machine-enforced hard rules) for the full constraint.
- On confirmation, write the
## Guardrails section to STRATEGY.md (Write on Code / mureo_strategy_set on Desktop / Cowork) using the exact format in ../_mureo-strategy/SKILL.md → Guardrails (machine-enforced hard rules).
- Skippable: if I say "no guardrails for now", leave the section absent (fail-open, unchanged behaviour) and note I can add them later just by asking.
- Honest scope: hard enforcement only covers mureo-dispatched native
google_ads / meta_ads. Hosted / official MCPs (TikTok tt-ads-*, google-ads-official, meta-ads-official) go client→platform and bypass the gate, so for those guardrails stay best-effort until the MCP gateway (#359) lands — say so.
-
Initial diagnosis: Run health checks on each configured ad platform:
- Google Ads: prefer mureo native —
google_ads_performance_report (LAST_30_DAYS), google_ads_campaigns_list, google_ads_health_check_all. Iterate the campaigns and call google_ads_monitoring_zero_conversions per campaign_id for any with conv = 0. If mureo's Google Ads tools are unavailable (e.g. MUREO_DISABLE_GOOGLE_ADS=1 after mureo providers add google-ads-official), fall back to the official google-ads-official MCP's equivalent campaign-list and performance-report tools, then skip the mureo-only anomaly-detection tools (google_ads_health_check_all, google_ads_monitoring_zero_conversions) and identify zero-conversion campaigns manually from the raw conv numbers; note: "anomaly detection requires mureo's native MCP — install or re-enable via mureo setup claude-code for full onboarding coverage."
- Meta Ads: prefer mureo native —
meta_ads_insights_report (LAST_30_DAYS) — surface result_indicator per campaign so the operator sees up front whether any campaigns are optimizing for link_click instead of true leads. If mureo's Meta Ads tools are unavailable, fall back to the official meta-ads-official hosted MCP for raw insights; note that the result_indicator field is mureo-specific — inspect each campaign's optimization goal / actions list yourself and warn the operator about any link_click-optimized campaigns where the user expects real leads.
- TikTok Ads (hosted connector,
tiktok_ads): call the connector's own reporting tools (e.g. tt-ads-*) for LAST_30_DAYS and record baseline per-campaign spend/conversions. mureo-only anomaly detection / RSA audit do not apply — report analytics_not_available_for_tiktok_ads and keep the diagnosis to the raw numbers. See ../_mureo-shared/SKILL.md → Hosted-connector platforms.
- mureo BYOD data is centralized in the workspace
byod/ directory (or ~/.mureo/byod/ for legacy CLI users) and is only accessible through mureo MCP tools — do not look for raw CSVs in the project directory.
- If Search Console is available, run a top-queries check to establish an organic baseline. If GA4 is available, check overall site conversion metrics.
-
Summary: Show what was set up — platforms discovered, data sources available, goals defined, guardrails offered — and recommend next steps.
IMPORTANT: Ask me questions interactively — don't assume answers. Each STRATEGY.md section should reflect MY actual business, not generic examples.