ai-citations-tracker
Use when you need to **measure** (not just describe) brand citation frequency across AI search surfaces over time. Runs a configurable brand-mention prompt set…
Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually profitable vs which is bleeding money — e.g. "which channel makes money?", "is OTTO/Amazon worth it?", "channel
$ npx -y skills add maxschottke-spec/seo-survival-kit --skill channel-economics-analyzer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/channel-economics-analyzerContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually profitable vs which is bleeding money — e.g. "which channel makes money?", "is OTTO/Amazon worth it?", "channel
name: channel-economics-analyzer description: 'Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually profitable vs which is bleeding money — e.g. "which channel makes money?", "is OTTO/Amazon worth it?", "channel break-even calculation", "marketplace profitability", "Kanal-Ökonomie", "soll ich den Channel zumachen?". Also triggers when ad budget allocation decisions are needed across channels, or when consolidating to fewer channels is being considered.' user-invocable: true argument-hint: '[channels.json path?]' allowed-tools: [Read, Write, Bash(node:*)] license: MIT metadata: author: Max Schottke version: '0.5.4' category: marketing
A simple-but-rigorous channel-level P&L calculator for multi-channel e-commerce businesses. Computes per-channel: revenue, COGS, ad-spend, marketplace fees, operating margin, break-even order count. Output: scorecard that names which channels are loss-making and the minimum monthly order volume needed for profitability.
**Core principle:** *Revenue is vanity, margin is sanity, cash is reality.* A €5k/month channel that loses €500/month is worse than no channel at all.
**Don't use for:**
| Data point | Source | |-----------|--------| | Gross revenue | Shop/marketplace order export | | Refunds + chargebacks | Same export | | COGS (manufacturing cost per unit × units) | ERP / spreadsheet | | Marketplace fee % | Channel docs (Amazon: 15%, OTTO: 9-15%, eBay: 11%) | | Ad spend on channel | Google Ads / Amazon Ads / OTTO Ads / Facebook Ads dashboards | | Shipping cost per order | Shipping provider invoices | | Returns processing cost | Internal time-cost estimate | | Order count | Order export |
NET_REVENUE = GROSS_REVENUE - REFUNDS MARKETPLACE_FEE = NET_REVENUE × FEE_RATE GROSS_PROFIT = NET_REVENUE - COGS - MARKETPLACE_FEE - SHIPPING_TOTAL OPERATING_PROFIT = GROSS_PROFIT - AD_SPEND - RETURNS_HANDLING CONTRIBUTION_PER_ORDER = (NET_REVENUE - COGS - MARKETPLACE_FEE - SHIPPING) / ORDERS BREAK_EVEN_ORDERS = AD_SPEND_TOTAL / CONTRIBUTION_PER_ORDER CHANNEL_HEALTH = OPERATING_PROFIT / NET_REVENUE × 100
Healthy channel: margin > 15 %. Risky: 5-15 %. Loss-making: < 5 % or negative.
Create `channels.json` — only the channels you actually sell on. Use the [Channel fee reference table](#channel-fee-reference-table) below for the right `fee_rate` per channel.
{
"period_days": 90,
"channels": [
{
"name": "direct-shop",
"label": "Own shop (Shopware/Shopify/WooCommerce)",
"fee_rate": 0.029,
"fee_label": "Payment provider 2.9 %",
"currency": "EUR"
},
{
"name": "amazon-de",
"label": "Amazon DE",
"fee_rate": 0.15,
"fee_label": "Referral fee + FBA",
"currency": "EUR"
},
{
"name": "otto",
"label": "OTTO Marketplace",
"fee_rate": 0.11,
"fee_label": "Verkaufsprovision",
"currency": "EUR"
},
{
"name": "kaufland",
"label": "Kaufland.de",
"fee_rate": 0.12,
"fee_label": "Kategorie-abhängig 8-15 %",
"currency": "EUR"
},
{
"name": "ebay-de",
"label": "eBay DE",
"fee_rate": 0.11,
"fee_label": "Verkaufsprovision + Listing-Fees",
"currency": "EUR"
}
]
}For each channel, generate a CSV: `data/<channel-name>-period.csv` with columns:
order_id,date,gross_revenue,refunds,cogs,shipping,ad_spend,returns_cost
Sources:
node channel-economics.js
Output (per channel):
══════════════════════════════════════════════════════════ DIRECT-SHOP (last 90 days) ══════════════════════════════════════════════════════════ Gross Revenue: €48,200 Refunds: €1,840 (3.8%) Net Revenue: €46,360 COGS: €18,544 (40%) Marketplace Fee: €1,344 (2.9%) Shipping: €3,200 Gross Profit: €23,272 (50.2% margin) Ad Spend: €4,200 Returns Handling: €920 Operating Profit: €18,152 (39.2% margin) ✅ HEALTHY Orders: 420 Contribution / Order: €55.42 Break-Even Orders: 77/mo (you did 140 — well above) ══════════════════════════════════════════════════════════ OTTO (last 90 days) ══════════════════════════════════════════════════════════ Gross Revenue: €8,400 Net Revenue: €7,980 COGS: €3,192 Marketplace Fee: €878 (11%) Shipping: €560 Gross Profit: €3,350 (42% margin) Ad Spend: €1,800 Returns Handling: €240 Operating Profit: €1,310 (16.4% margin) ⚠️ RISKY Orders: 68 (22.6/mo) Contribution / Order: €49.26 Break-Even Orders: 37/mo (you did 22.6 — below break-even) Recommendation: Cap OTTO ad spend at €500/mo OR commit to scaling to 40+ orders/mo. Current state burns €490/mo on a small order base.
Decision matrix:
| Channel state | Action | |---------------|--------| | Healthy (margin > 15 %) | Reinvest ad spend, scale slowly | | Risky (5–15 %) | Cap ad spend at break-even, optimize ops | | Loss-making (< 5 %) | Reduce ad spend to
Recovery-first decision support for ecommerce/D2C SEO. Claude Code skills for Core Update recovery diagnosis, prioritized action plans, weekly monitoring, and a Change Governor / Settlement Gate that prevents over-optimizing during recovery windows.
Repo: maxschottke-spec/seo-survival-kit
Use when you need to **measure** (not just describe) brand citation frequency across AI search surfaces over time. Runs a configurable brand-mention prompt set…
Use when a site has lost visibility in AI search surfaces (Google AI Overviews, Google AI Mode, ChatGPT citations, Perplexity citations) or wants to…
Use when an e-commerce or content site wants to deeply understand WHO their organic competitors are (often surprising — not the brands they think) and WHERE…
Use when the user wants Google Search Console data pulled directly into the session instead of manually screenshotting / CSV-exporting from search.google.com.…
Use when a website experienced a sudden visibility/ranking drop that correlates with a published Google Core Update — symptoms include broad ranking loss…
Use when setting up automated weekly PageSpeed Insights tracking for a set of URLs — to catch performance regressions before users notice, or to validate that…