一键导入
competitor-analysis
Extracts marketing elements from competitor websites. Structured observation only. Does not write copy or make recommendations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Extracts marketing elements from competitor websites. Structured observation only. Does not write copy or make recommendations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | competitor-analysis |
| description | Extracts marketing elements from competitor websites. Structured observation only. Does not write copy or make recommendations. |
Extracts observable marketing data from competitor websites. Observation only, no interpretation.
[competitor-analysis] → [keyword-research] → [lead-gen-copy]
↓
Raw observations → Patterns → Copy decisions
This skill produces RAW DATA. Copy decisions happen in other skills.
competitor_urls: ["url1", "url2", "url3"] # min 3, max 5
analysis_focus: full | messaging | trust | pricing | cta
industry: removals | cleaning | trades | legal | healthcare
competitors:
- url: "..."
messaging: { ... }
trust: { ... }
pricing: { ... }
ctas: { ... }
observed_differences: [ ... ] # What varies between competitors
| Rule | Requirement |
|---|---|
| Competitor count | Minimum 3, maximum 5 |
| Data source | Visual observation only |
| No scraping | Manual review, no HTML parsing |
| No recommendations | Observations only, no "should" |
| Absence = explicit | Missing element → not_found: true |
| Field | Extract |
|---|---|
headline | Exact H1 text |
headline_pattern | benefit / feature / question / statement |
value_prop | Main promise (1 sentence) |
tone | formal / professional / casual / friendly |
unique_claims | List of specific claims |
| Field | Extract |
|---|---|
review_platform | Google / Trustpilot / none |
rating | Number or not_found |
review_count | Number or not_found |
credentials | List: type + name |
guarantees | List: type + specifics |
team_visible | true / false |
| Field | Extract |
|---|---|
transparency | hidden / teaser / full |
lowest_shown | Price or not_found |
pricing_model | fixed / hourly / quote-only |
discounts | List or not_found |
| Field | Extract |
|---|---|
primary_text | Exact button text |
primary_placement | hero / header / footer |
form_fields_count | Number |
phone_prominent | true / false |
mobile_sticky | true / false |
Never leave fields empty. Never guess.
# If element exists
rating: 4.8
# If element not found
rating:
not_found: true
# If unclear/ambiguous
pricing_model:
unclear: true
observed: "Shows 'from £X' but also 'call for quote'"
Differences are observations, not opportunities or recommendations.
# CORRECT - observation only
observed_differences:
- category: pricing
observation: "Competitors A, B show no prices. Competitor C shows 'from £299'."
# WRONG - contains recommendation
observed_differences:
- category: pricing
opportunity: "Show transparent pricing to differentiate" # ❌ NO
"Opportunity" word is FORBIDDEN in output.
Same input → same output structure. Always.
| Scenario | Rule |
|---|---|
| Field has data | Include with value |
| Field not found | Include with not_found: true |
| Field unclear | Include with unclear: true + observed |
| Never | Omit fields |
not_found)Canonical lead-gen tracking for Astro.js on Cloudflare Workers (v6, Run 6 contract). Drop-in components: <Tracking/>, <TrackedForm/>, <PhoneLink/>, <CallbackButton/>. Two channels with a SHARED event_id: browser (GTM → GA4 / Meta Pixel / Google Ads) + server-side via the Soborbo event-gateway worker. Model 2: the browser OWNS on-site GA4 + Google Ads; the server sends Meta CAPI on-site (+ TikTok/LinkedIn/Microsoft click-ID forwarders, event_id-deduped) and Google Ads ONLY offline (CRM lead lifecycle, Google Data Manager API); the server sends NO GA4. Two gateway ingress paths: tokenless browser path for low-risk clicks (Origin allow-list + rate limit), authenticated server path (per-site token, service binding) for form/lead/purchase conversions dispatched by the site BACKEND. No Turnstile. Daily synthetic smoke-lead cron + digest guard. Consent Mode v2 + CookieYes, gclid/gbraid/wbraid/fbclid + full UTM capture, calculator funnel, form abandonment, phone dedup, first/last touch attribution. Bilingual / multi-
DEPRECATED (legacy, in old/) — use the `soborbo-tracking` skill instead for GA4 + Meta + Google Ads tracking on Astro. Kept for reference only.
Audit and strengthen visible E-E-A-T signals and AI-search (GEO) readiness on Astro lead-gen sites. Use when a page or site needs Experience/Expertise/Authoritativeness/Trust signals, author credibility, first-hand-experience proof, trust pages (about/contact/privacy/returns), NAP + company registration display, review/trust-mark surfacing, AI-crawler access in robots.txt, or answer-first content for ChatGPT/Gemini/Perplexity/AI Overviews. Also triggers on "EEAT", "E-E-A-T", "GEO", "AEO", "AI search visibility", "get cited by AI", "trust signals", "author bio", "local trust", or making a small/niche business outrank larger competitors. Runs a deterministic auditor with runnable tests. Delegates JSON-LD generation to schema-entity-graph and JSON-LD validation to schema-audit; delegates copy voice to humanise-copy.
Width-based responsive image patterns for Astro. Local build-time processing, per-format quality (AVIF/WebP/JPG/PNG), alpha-aware fallback, art direction, face-focus, OG generation, image SEO. Picture, ArtPicture, FixedImage components.
Per-site client tracker and Astro endpoint for the centralised soborbo-error-pipeline workers. Captures client JS errors via sendBeacon, forwards via console.error → Tail Worker. Server-side uncaught exceptions are captured automatically. ~1.5KB client bundle, no external deps. Email throttled to 1 per (site, code) per 4 hours by the notifier worker.
Form infrastructure for Astro projects. Contact forms, booking forms, quote requests. Zod validation, email delivery (Resend/Brevo), rate limiting, Google Sheets, postcode lookup, spam protection.