ワンクリックで
internal-linking
Plans internal link structure using content silos. Outputs link map with SEO priority. Does not create links.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Plans internal link structure using content silos. Outputs link map with SEO priority. Does not create links.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
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.
| name | internal-linking |
| description | Plans internal link structure using content silos. Outputs link map with SEO priority. Does not create links. |
Outputs internal link structure using content silo architecture. SEO-focused link equity distribution.
Push link equity to money pages (silo tops) through structured silos.
Not "pretty web" — strategic authority building.
silos: [...] # Defined content clusters
link_map: [...] # Per-page outbound links
link_requirements: [...] # Inbound requirements
orphan_check: [...] # Pages with <minimum inbound
site_structure:
silos:
- name: "house-removals"
top: "/services/house-removals" # Money page
areas: ["/areas/bath", "/areas/bristol"]
articles: ["/blog/moving-costs", "/blog/packing-tips"]
- name: "office-removals"
top: "/services/office-removals"
areas: ["/areas/bath-office"]
articles: ["/blog/office-moving-guide"]
standalone:
- { url: "/calculator", type: "tool", priority: 1 }
- { url: "/contact", type: "conversion" }
- { url: "/about", type: "info" }
Homepage
│
├── SILO: House Removals
│ ├── /services/house-removals ← SILO TOP (money page)
│ ├── /areas/bath ← links UP to silo top
│ ├── /areas/bristol ← links UP to silo top
│ └── /blog/moving-costs ← links UP to silo top
│
└── SILO: Office Removals
├── /services/office-removals ← SILO TOP (money page)
└── /blog/office-guide ← links UP to silo top
| Rule | Requirement |
|---|---|
| Intra-silo | Encouraged — link freely within silo |
| Cross-silo | Limited — max 1-2 per page |
| Silo top receives | Links from ALL pages in silo |
| Areas/Blog | ALWAYS link to parent silo top |
| Homepage | Links to ALL silo tops |
| From | To | Allowed |
|---|---|---|
| Service → Service | Different silo | Max 1 "related service" |
| Area → Area | Different silo | NO (only nearby same-silo) |
| Blog → Blog | Different silo | Max 1 if highly relevant |
| Blog → Service | Different silo | NO |
| Page Type | Max Outbound | Intra-silo | Cross-silo |
|---|---|---|---|
| Homepage | 25 | N/A | All silo tops |
| Service (silo top) | 15 | Unlimited | 2 max |
| Area page | 10 | 5+ | 1 max |
| Article | 12 | 3+ required | 1 max |
| Calculator | 5 | N/A | 2 (results only) |
| Page Type | Minimum | Priority Sources |
|---|---|---|
| Silo top (service) | 5 | Homepage, all silo areas, all silo articles |
| Area page | 3 | Silo top, nearby areas, 1 article |
| Article | 2 | Silo top, related articles |
| Calculator | 4 | Homepage, ALL silo tops |
| Homepage | 1+ | Nav/logo from all pages |
For silo tops (money pages), inbound links should come from:
| Anchor Type | Per Page | Per Target (total inbound) |
|---|---|---|
| Exact match keyword | 1 max | 3 max site-wide |
| Service name | Unlimited | Unlimited |
| Branded | Unlimited | Unlimited |
| Generic | 0 in body | Nav/footer only |
| Target Type | Use |
|---|---|
| Silo top | Service name, "our {service}" |
| Area | "{service} in {area}", "{area} removals" |
| Article | Topic phrase, question |
| Calculator | "get quote", "instant price", "calculate" |
| Homepage | Brand name, "home" |
Blog's primary job: push equity to silo tops.
| Rule | Requirement |
|---|---|
| Every article | MUST link to parent silo top |
| Link placement | Within first 3 paragraphs |
| Anchor | Service-focused, not generic |
| Cross-silo | Max 1 link, only if highly relevant |
| Blog → Blog | Max 2 "related posts" |
# Good blog linking
article: "/blog/moving-costs"
silo: "house-removals"
required_outbound:
- target: "/services/house-removals" # Parent silo top
anchor: "house removals service"
placement: "body, paragraph 2"
optional_outbound:
- target: "/blog/packing-tips" # Same silo
anchor: "packing guide"
High-priority inbound, minimal outbound.
| Direction | Rule |
|---|---|
| Inbound | From homepage + ALL silo tops |
| Outbound | Max 5: logo home + 2 in results |
| No nav | Minimal header, no full nav |
link_map:
- page: "/services/house-removals"
silo: "house-removals"
role: "silo_top"
outbound:
- { to: "/", anchor: "Home", section: "breadcrumb" }
- { to: "/calculator", anchor: "Get your quote", section: "cta" }
- { to: "/services/packing", anchor: "packing service", section: "related", cross_silo: true }
- { to: "/areas/bath", anchor: "removals in Bath", section: "areas" }
inbound_required:
- { from: "/", min: 1 }
- { from: "/areas/*", min: 2 }
- { from: "/blog/*", min: 1 }
inbound_actual: 4
status: "healthy"
| Check | Rule |
|---|---|
| Orphan | 0 inbound links → BLOCKER |
| Weak | Below minimum → WARNING |
| Healthy | At/above minimum → OK |
orphan_check:
orphan_pages: [] # Must be empty
weak_pages:
- { url: "/areas/gloucester", inbound: 1, minimum: 3 }
healthy_pages: 10
| Condition | Result |
|---|---|
| Orphan page exists | STOP — fix before deploy |
| Silo top has <3 inbound | STOP — add links |
| No silo definition | STOP — define silos first |
| Cross-silo >3 on any page | STOP — reduce |