---
name: onboard
description: "Initial account setup — create STRATEGY.md and STATE.json from scratch, import platform data, and establish baseline metrics. Use when the user is starting fresh with mureo, has no STRATEGY.md yet, or asks to set up a new account."
metadata:
  version: 0.7.1
---

# Onboard

> 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.

## Steps

1. **Check installation**: Verify mureo is installed by running `mureo --help`. If not found, guide the user to run `pip install mureo`.

2. **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, <date range>)."

   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 <platform> 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.

3. **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.

4. **Discover platforms and data sources**:
   - For each advertising platform with configured credentials, discover accessible accounts and list campaigns
   - 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

5. **Initialize STATE.json**: For each discovered platform, snapshot campaigns into STATE.json under the corresponding `platforms` key.

6. **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

7. **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.
   - 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.

8. **Summary**: Show what was set up — platforms discovered, data sources available, goals defined — 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.
