← All Skills
AI Skill

seo-onboard

Last updated: 2026-05-17

First-time SEO setup for a new property — builds the task scaffold, writes workspace config, captures baseline, and registers the recurring sync cadence that ke

Quick Install
npx skills add seo-onboard

seo-onboard — Build Once, Sync Forever

This is the skill that turns a cold website into a SEO/AEO-managed property. You build the scaffold once, and the scaffold keeps itself updated.

Your output is NOT a one-shot report. Your output is a living system: a config file, a task backbone with the right cadences, a baseline snapshot, and a weekly sync hook. Six months from now, the site's SEO operations should still be running off what you set up today.

Two modes — detect which one you're in before doing anything:

  • Fresh onboard — no seo-config.yaml exists. Run all 7 phases.
  • Syncseo-config.yaml exists. Skip to Phase 7 (Sync), diff state, patch the backbone, don't duplicate.

Required Inputs

Project ID (Tycoon): $ARGUMENTS[0]. Outside Tycoon, infer workspace from cwd.

Pull context:

# Inside Tycoon — project fundamentals
tyctl task list --project $ARGUMENTS[0] --json 2>/dev/null

Detect repo + existing SEO state

test -f seo-config.yaml && echo "SYNC MODE" || echo "FRESH MODE" test -d reports/seo && echo "Has reports dir" ls public/llms.txt public/ai-plugin.json public/robots.txt 2>/dev/null

Minimum inputs you MUST have before proceeding (ask the owner if any are missing — don't guess):

  1. Domain (e.g., skillboss.co)
  2. GSC property (domain or URL prefix)
  3. Content directory (where pages live — e.g., app/[locale]/)
  4. Top 3–5 competitors (real URLs)
  5. Primary audience (one sentence — "AI app developers building coding agents")
  6. Languages (default [en], expand from there)
Optional but preferred: brand color, CTA copy, existing keyword list, Ahrefs access.

Phase 1 — Intent Brief (always post first)

Before touching any file, post a chat brief:

  • What you understand the site to be, in one line.
  • The current SEO state you can observe in 60 seconds (indexed? has sitemap? has llms.txt? any AEO signals?).
  • What "a world-class SEO onboard" means for this site specifically — skillboss.co needs 100 pages/day + 7-language pipeline; a 5-person B2B SaaS needs 10 pages/quarter + deep comparison content. Don't apply the wrong template.
  • Your assumptions. Mark anything you're guessing at.
If the owner has given you < 3 of the 6 required inputs, stop here and ask. Don't paper over missing inputs — thin inputs produce thin scaffolds.

Phase 2 — Baseline Audit

Capture the starting state. You can't measure progress without a zero mark.

# Technical snapshot
curl -sI https://$DOMAIN | head -20
curl -s https://$DOMAIN/robots.txt
curl -s https://$DOMAIN/sitemap.xml | head -50
curl -s https://$DOMAIN/llms.txt 2>/dev/null | head -20

Indexing snapshot (GSC, if connected)

via existing scripts in ~/skillboss/scripts/seo/ or workspace equivalent

Delegate the deep audit to technical-seo-audit skill — don't re-implement it inline. You're the orchestrator here, not the auditor.

Write baseline to reports/seo/baseline-{YYYY-MM-DD}.json with:

  • Technical score + top 3 issues
  • Indexed pages (from GSC Coverage)
  • Top 50 ranking keywords (current position, clicks, impressions)
  • CWV p75 (LCP, INP, CLS) from PageSpeed / CrUX
  • AEO visibility — run 5 representative queries against ChatGPT/Perplexity, record whether the brand is cited
  • llms.txt / ai-plugin.json / robots.txt presence + correctness
This baseline is referenced by every future weekly report. Make it machine-readable JSON, not prose.

Phase 3 — Write seo-config.yaml

This is the single source of truth for every downstream SEO skill. Without it, seo-discover, seo-create, seo-optimize, seo-monitor have to hardcode assumptions.

Template (write to workspace root):

version: 1
created: 2026-04-16
domain: skillboss.co
gsc_property: sc-domain:skillboss.co
audience: "AI app developers building coding agents and multi-model apps"
content:
  dir: app/[locale]
  templates: [alternatives, compare, blog, use, landing, integration]
  template_registry: ~/.claude/rules/seo-page-templates.md
brand:
  color: "#d97757"
  color_hover: "#c6613f"
  banned_colors: ["#6366f1", "#8b5cf6", "#a855f7"]
  voice: "technical, direct, numbers-forward, no fluff"
  cta_primary: "Get Started Free — $2 Credits"
  trust_signals:
    - "No credit card needed"
    - "Set up in 30 seconds"
competitors:
  - openrouter.ai
  - litellm.ai
  - portkey.ai
languages: [en, zh-CN, zh-TW, ja, ko, es, de]
targets:
  organic_clicks_monthly: 2500
  pages_weekly: 10
  aeo_citation_share: 0.20
data_sources:
  gsc: enabled
  ga4: enabled
  ahrefs: optional   # enabled if tycoon connector attached
  posthog: enabled
cadence:
  daily_data_collection: "06:05"
  daily_cta_iteration: "10:07"
  weekly_report: "Mon 09:03"
  weekly_aeo_tracking: "Wed 10:07"
  monthly_audit: "1st 09:00"
  quarterly_refresh: "90d"

Validate the YAML loads. Commit if inside a repo.

Phase 4 — Create Task Scaffold (the backbone)

This is the 架子. Every recurring piece of SEO work becomes a Task with a recurringRule, assigned to role=seo, persisted to the workspace.

Two categories of tasks:

4a. Recurring backbone (runs forever)

Create with tyctl task create --recurring when inside Tycoon; fall back to scheduled cron tasks (/Users/xiaoyinqu/.claude/scripts/) when standalone.

TitleCadenceRoleDescription contract
Daily SEO data collection06:05 seoPull GSC + GA4 + indexing; write reports/seo/daily-{date}.json; update kpi-history.json
Daily CTR/CTA iteration10:07 seoPick 1–2 pages with highest impressions × (benchmark_CTR - actual_CTR); optimize title/desc/CTA; ship
Weekly SEO report03 9 1seo3-week comparison; winners, losers, ≤ 3 recommendations; post to owner
Weekly AEO citation tracking07 10 3seoRun 20 target queries against ChatGPT/Perplexity/Claude; record citation rate; flag regressions
Monthly full site audit0 9 1 seoDelegate to technical-seo-audit; compare vs baseline; file issues for regressions
Quarterly content refreshevery 90dseoIdentify pages where traffic declined ≥ 30%; refresh with current data; update Last Updated timestamps
Each recurring task's description must include:
  • The contract (what "done" looks like for one run)
  • The data source (GSC path, config field, etc.)
  • The output (file path or asset post format)

4b. One-time onboarding tasks (P0–P2, disappear when complete)

TitlePriorityNotes
Write keyword research (top 100 opportunities)P0Invoke seo-discover
Ensure llms.txt + ai-plugin.json + markdown versions existP0AEO Conf finding: markdown = +300% citations
Map competitor page gaps (alternatives/compare the site is missing)P0Output a backlog, not a prose report
Ship first 5 template-validated pagesP1Invoke seo-create; use approved templates only
Stand up author/E-E-A-T pagesP2Required for Google 2026 E-E-A-T signals
Set up AEO probes (20 representative queries baseline)P1Feeds the weekly AEO tracking task
Register in schema.org via Organization + SameAsP2One-time structured data
Every one-time task must have:
  • A definition of done
  • A linked skill or script to invoke
  • An owner (role=seo by default; escalate if Tycoon routes to specialist)

Phase 5 — Populate the Backlog

seo-discover will have returned a list of opportunities. Write them to reports/seo/backlog.md with the priority score formula:
Priority = impressions × (benchmark_CTR - actual_CTR) × intent_multiplier

Each backlog item becomes an activatable Task when the weekly sync promotes it. Do not create 200 tasks up front — that creates a rotting task board. Keep the backlog in markdown; let the weekly sync promote the top N into active tasks.

Phase 6 — Dashboard Setup

Generate reports/seo/dashboard.md. This is the owner's read-only view:

# SEO Dashboard — {domain}
_Last synced: {ts}_

KPIs (vs baseline {date})

MetricBaselineCurrentTargetΔ
Organic clicks / month......2500...
Impressions / month............
Avg position (top 50 kws)............
AEO citation rate......20%...
Indexed pages............

Active recurring tasks (6)

{bulleted list with last-run + next-run}

Open one-time tasks ({N})

{priority-sorted list}

Next 5 priority actions

{synthesized from backlog + CTR opportunities}

Phase 7 — Sync Mode (Re-run Behavior)

This is why the skill is called onboard — it onboards, then stays.

When re-invoked on a workspace that already has seo-config.yaml:

  1. Diff config vs what's live. New competitors? New templates? Language added?
  2. Reconcile recurring tasks — if cadence changed in config, update the recurringRule on the task (don't create a duplicate).
  3. Refresh baseline snapshot every 90 days (quarterly). Write baseline-{new-date}.json but keep the old one; link both from dashboard.
  4. Promote backlog items — move top-ranked backlog items into active one-time tasks (up to targets.pages_weekly worth).
  5. Archive completed tasks older than 30 days.
  6. Update llms.txt if new canonical content landed since last sync.
  7. Log changes to reports/seo/sync-log.md (append-only, never rewrite history).
Sync must be idempotent. Running it twice in a row produces the same state as running it once.

A weekly recurring Task — seo-onboard sync — is itself part of the backbone created in Phase 4a. That's how the scaffold keeps itself alive.


Quality Bar (non-negotiable before marking done)

On fresh onboard:

  • [ ] seo-config.yaml exists, validates, is committed (if in a repo)
  • [ ] reports/seo/baseline-{date}.json exists with all 6 fields populated
  • [ ] 6 recurring backbone tasks created, each with a valid recurringRule and a contract in its description
  • [ ] 7 one-time onboarding tasks created with definitions of done
  • [ ] reports/seo/backlog.md has ≥ 30 scored opportunities
  • [ ] reports/seo/dashboard.md renders end-to-end
  • [ ] A self-scheduling seo-onboard sync task is on the calendar
  • [ ] Owner has received a handoff summary (not a 20-line dump — a 1-screen brief + next action)
On sync re-run:
  • [ ] sync-log.md has a new entry
  • [ ] No duplicate tasks created
  • [ ] Config diff logged
  • [ ] Baseline refreshed if ≥ 90 days since last
  • [ ] Dashboard Last synced timestamp updated
If any box is unchecked, the task is not done. Iterate.

Integration Notes

Inside Tycoon: tasks go via tyctl task create (persists to Postgres, shows in Task board, AI CEO can monitor). Recurring rules are enforced by the VM's RoutineScheduler. role=seo routes to the SEO agent persona (once that agent is added to builtin-agents.ts). Standalone (e.g., inside ~/skillboss without Tycoon): fall back to:
  • tasks/todo.md for one-time tasks
  • ~/.claude/scripts/ for cron scripts
  • scheduled-tasks MCP for recurrences
Detect mode by testing for tyctl in PATH and $ARGUMENTS[0] project ID.

Deliverables (what you actually ship)

  1. seo-config.yaml at workspace root.
  2. reports/seo/baseline-{date}.json, reports/seo/backlog.md, reports/seo/dashboard.md.
  3. Recurring task backbone (6 tasks, each with a live cadence).
  4. One-time onboarding task set (7 tasks).
  5. Self-scheduling sync task on the calendar.
  6. A 1-screen handoff summary with: what was set up, what the next action is, how to trigger updates.

What You Refuse

  • To ship without an Intent Brief (Phase 1). Jumping straight to task creation produces a generic scaffold.
  • To create > 15 initial active tasks. A rotting task board is worse than a small one.
  • To hardcode One Person Company AI-specific values into the config. If you find yourself typing skillboss.co for a customer workspace, stop and ask.
  • To skip baseline capture. "We'll measure later" means we never measure.
  • To create recurring tasks without a contract in their description. A recurring task without a clear "done" definition will run forever producing garbage.
  • To duplicate work already owned by seo-discover, seo-create, seo-optimize, seo-monitor. This skill is the conductor; those are the instruments.

Related Skills

  • seo-discover — called in Phase 5 to populate the backlog.
  • seo-create — called by the "ship first 5 pages" one-time task.
  • seo-optimize — owns the daily CTR iteration task.
  • seo-monitor — owns the daily data collection + weekly report tasks.
  • technical-seo-audit — called in Phase 2 (baseline) and by the monthly audit task.

_Design principle: the onboarding doesn't end. Phase 7 is the load-bearing phase — the scaffold you build must keep itself updated without you. A skill that runs once and dies is a skill that delivers a snapshot, not a system._