<< All versions
Skill v1.0.0
currentAutomated scan100/100xuanranl/loamwright-seo-skill/fleet-view
──Details
PublishedSeptember 29, 2026 at 12:59 PM
Content Hashsha256:6f5583648a649dfa...
Git SHAcc3f19dac8fe
──Files
Files (1 file, 3.7 KB)
SKILL.md3.7 KBactive
SKILL.md · 122 lines · 3.7 KB
version: "1.0.0" name: fleet-view description: Multi-site agency dashboard. Use /fleet to see 100+ sites in one view — health, clicks, cost, drift alerts, by-client + by-vertical aggregation. Daily landing page for an operator managing many SEO projects. allowed-tools: [Bash, Read] disable-model-invocation: false user-invocable: true
Fleet View
Single screen for someone running an SEO agency with 100+ sites across multiple clients and verticals.
When to invoke
/fleet— full multi-site dashboard/fleet --client acme-corp— filter to one client's sites/fleet --vertical b2b-saas— filter by vertical- Daily landing page after morning coffee — what needs attention?
How to invoke
bash
python -m scripts._core.fleet_viewpython -m scripts._core.fleet_view --client client-apython -m scripts._core.fleet_view --vertical b2c-ecompython -m scripts._core.fleet_view --json
Output (human)
━━ Fleet view ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Generated: 2026-05-19T14:32:01ZSites: 127 (38 new articles / 30d)Total articles: 4,213Impressions: 18,432,100 / 30dClicks: 412,330 / 30dCost: $1,847.32 / 30dHealth:✓ ok 103⚠ watch 18🔴 critical 6By vertical:67 b2b-saas34 b2c-ecom19 publisher7 agencyBy client:45 sites $ 723.40 201,440 clk ( 3 drift) own28 sites $ 421.00 118,322 clk ( 7 drift) acme-corp20 sites $ 345.21 62,128 clk ( 4 drift) beta-llc...Top performers (30d clicks):14,832 clk pos 3.2 example-site-18,217 clk pos 4.1 example-site-2...Needs attention:[critical] site-x (5 drift alerts; Lost AI citations)[watch] site-y (No clicks last 30d despite publishing)
Project metadata for fleet (project.yaml)
For the fleet view to surface per-vertical and per-client, each project's projects/{slug}/project.yaml should have:
yaml
site_url: https://example.comclient: acme-corp # or "own" for self-managedvertical: b2b-saas # b2b-saas | b2c-ecom | publisher | agency | local | other
If missing, site appears under uncategorized vertical and own client.
Health categorization rules
| Health | Trigger | |
|---|---|---|
| ok | No issues | |
| watch | 1 issue: drift alerts >0 / no recent clicks / spend >$50/30d | |
| critical | 2+ issues OR ≥5 drift alerts OR ≥$100 cost with declining clicks |
Aggregation efficiency
For 100+ sites, the script reads:
projects/{slug}/project.yaml(metadata)projects/{slug}/articles/*/publish-log.json(counts)projects/{slug}/metrics/gsc-*.json(latest 30d traffic)projects/{slug}/drift-reports/*.json(severity counts)projects/{slug}/ai-citations/*.json(citation counts)~/.xuanran-seo/cost-ledger.jsonl(cost rollup, filtered by project_slug)
Typical execution: 100 sites × ~5 files each = 500 file reads, ~3 seconds.
What this skill does NOT do
- ❌ Mutate site state (read-only summary)
- ❌ Trigger refreshes (use
/refresh-queue) - ❌ Pull fresh GSC/Bing data (use
gsc_api_ingestfirst) - ❌ Detailed per-article view (use
/portfolio --site X)
Composition
Daily routine for an agency operator:1. /fleet → see what needs attention2. gsc_api_ingest --all-sites --mode weekly → pull fresh data3. rank_tracker --all-sites → compute T+N rank deltas4. /fleet → see updated health5. For each "critical" site: /portfolio --site X → dig in6. drift_compare for flagged URLs7. /refresh-queue based on findings