seo-local-business
# SEO Local Business This skill generates a complete SEO package for local service businesses, producing HTML head tags with meta information, JSON-LD structured data (LocalBusiness schema), robots.txt, and sitemap.xml files. Use it when setting up SEO for location-based businesses like tradies, cafes, clinics, or retailers that need search visibility in specific suburbs, particularly in Australia where it includes +61 phone formatting and ABN fields.
git clone --depth 1 https://github.com/jezweb/claude-skills /tmp/seo-local-business && cp -r /tmp/seo-local-business/plugins/web-design/skills/seo-local-business ~/.claude/skills/seo-local-businessSKILL.md
# SEO Local Business
Generate a complete SEO package for local business websites. Produces meta tags, structured data, robots.txt, and sitemap.xml.
## What You Produce
1. Complete `<head>` section with meta tags, Open Graph, Twitter Cards
2. JSON-LD structured data (LocalBusiness + Service + FAQ schemas)
3. `robots.txt`
4. `sitemap.xml`
## Workflow
### Step 1: Gather Business Info
Ask for (or extract from existing site):
| Required | Optional |
|----------|----------|
| Business name | ABN |
| Primary service | Opening hours |
| Location (city/suburb) | Social media URLs |
| Phone number | Price range |
| Website URL | Service areas (suburbs) |
| Business description | GPS coordinates |
### Step 2: Generate Head Tags
Fill placeholders in this template:
```html
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Primary Meta Tags -->
<title>{{PAGE_TITLE}} | {{BUSINESS_NAME}}</title>
<meta name="title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta name="description" content="{{META_DESCRIPTION}}">
<!-- Canonical URL -->
<link rel="canonical" href="{{CANONICAL_URL}}">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="{{CANONICAL_URL}}">
<meta property="og:title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta property="og:description" content="{{META_DESCRIPTION}}">
<meta property="og:image" content="{{OG_IMAGE_URL}}">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="{{CANONICAL_URL}}">
<meta property="twitter:title" content="{{PAGE_TITLE}} | {{BUSINESS_NAME}}">
<meta property="twitter:description" content="{{META_DESCRIPTION}}">
<meta property="twitter:image" content="{{OG_IMAGE_URL}}">
<!-- Geo Tags (Local SEO) -->
<meta name="geo.region" content="{{GEO_REGION}}">
<meta name="geo.placename" content="{{CITY}}">
<meta name="geo.position" content="{{LATITUDE}};{{LONGITUDE}}">
<meta name="ICBM" content="{{LATITUDE}}, {{LONGITUDE}}">
<!-- Favicons -->
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32.png">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Structured Data -->
<script type="application/ld+json">
{{JSON_LD_SCHEMA}}
</script>
</head>
```
**Title tag patterns** (50-60 chars max):
| Page | Pattern | Example |
|------|---------|---------|
| Homepage | `Brand - Tagline` | `Newcastle Plumbing - 24/7 Emergency Service` |
| Service | `Service in Location \| Brand` | `Hot Water Repairs Newcastle \| ABC Plumbing` |
| About | `About Us \| Brand` | `About Us \| ABC Plumbing Newcastle` |
| Contact | `Contact \| Brand` | `Contact Us \| ABC Plumbing Newcastle` |
**Meta description patterns** (150-160 chars):
| Page | Pattern |
|------|---------|
| Homepage | `[USP]. [Service] in [Location]. [CTA]. Call [phone].` |
| Service | `Professional [service] in [location]. [Benefit]. [Trust signal]. Get a free quote today.` |
| About | `[X] years serving [location]. [Team info]. [Credentials]. Learn about [brand].` |
| Contact | `Contact [brand] for [service] in [location]. [Hours]. Call [phone] or request a quote online.` |
### Step 3: Generate Structured Data
**LocalBusiness** (homepage — always include):
Use `LocalBusiness` or a more specific subtype:
| Subtype | Use for |
|---------|---------|
| `Plumber` | Plumbing services |
| `Electrician` | Electrical services |
| `RoofingContractor` | Roofing |
| `HVACBusiness` | Air conditioning/heating |
| `AutoRepair` | Mechanics |
| `BeautySalon` | Hair/beauty |
| `Dentist` | Dental practices |
| `LegalService` | Law firms |
| `AccountingService` | Accountants |
| `RealEstateAgent` | Real estate |
| `Restaurant` | Restaurants/cafes |
| `BarOrPub` | Pubs/bars |
| `Hotel` | Accommodation |
| `Store` | Retail shops |
| `ProfessionalService` | Generic professional |
LocalBusiness schema properties:
| Property | Required | Notes |
|----------|----------|-------|
| `@type` | Yes | `LocalBusiness` or subtype from above |
| `name` | Yes | Business name as shown to customers |
| `image` | Yes | Primary business image or logo |
| `description` | Yes | 1-2 sentence business description |
| `@id` | Yes | Unique ID, use `{url}/#organization` |
| `url` | Yes | Website homepage URL |
| `telephone` | Yes | International format: `+61-2-4900-1234` |
| `address` | Yes | PostalAddress (see below) |
| `email` | Recommended | Primary contact email |
| `priceRange` | Recommended | `$` to `$$$$` |
| `geo` | Recommended | GeoCoordinates: latitude/longitude |
| `openingHoursSpecification` | Recommended | See hours format below |
| `areaServed` | Recommended | Cities/suburbs served |
| `sameAs` | Recommended | Social media profile URLs |
| `taxID` | Optional | ABN for Australian businesses |
| `logo` | Optional | Business logo URL |
| `foundingDate` | Optional | ISO 8601 date |
| `paymentAccepted` | Optional | e.g. "Cash, Credit Card, EFTPOS" |
| `currenciesAccepted` | Optional | `AUD` |
PostalAddress:
| Property | Example |
|----------|---------|
| `streetAddress` | `123 Hunter Street` |
| `addressLocality` | `Newcastle` |
| `addressRegion` | `NSW` |
| `postalCode` | `2300` |
| `addressCountry` | `AU` |
Example:
```json
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "ABC Plumbing Newcastle",
"image": "https://www.abcplumbing.com.au/og-image.jpg",
"description": "Professional plumbing services in Newcastle and Lake Macquarie.",
"@id": "https://www.abcplumbing.com.au/#organization",
"url": "https://www.abcplumbing.com.au",
"telephone": "+61-2-4900-1234",
"email": "info@abcplumbing.com.au",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Hunter Street",
"addressLocality": "Newcastle",
"addressRegion": "NSW",
"postalCode":Generate AI images using Gemini or GPT APIs directly. Covers model selection (Gemini for scenes; GPT Image 2 for text rendering, batch variations, multi-reference compositing; GPT Image 1.5 for transparent icons), the 5-part prompting framework, API calling patterns, multi-turn editing, and quality assurance. Produces photorealistic scenes, icons, illustrations, OG images, posters, infographics, and product shots. Use when building websites that need images, creating marketing assets, or generating visual content. Triggers: 'generate image', 'ai image', 'create hero image', 'make an icon', 'generate illustration', 'create og image', 'poster', 'infographic', 'image variations', 'gpt-image-2', 'ai art', 'image generation'.
Generate complete user documentation for a web app with screenshots. Browses the app via browser automation, screenshots every screen, and produces a structured user guide with step-by-step instructions, annotated screenshots, workflow diagrams, and reference tables. Supports quick (key screens), standard (all pages), thorough (every state and flow), and exhaustive (publishable documentation suite). Triggers: 'document the app', 'user guide', 'app documentation', 'screenshot docs', 'generate user docs', 'help docs', 'how-to guide', 'write the docs'.
Australian business English for professional writing — warm, direct, EN-AU spelling (colour, organise, centre), no filler words. Use whenever the user is writing for an Australian audience: emails, chat messages, proposals, client communications, blog posts, web copy, or any business writing. Apply to drafting, editing, and tone-checking professional text.
Write compelling award submissions, grant applications, and competition entries. Maps achievements to selection criteria using evidence-based narratives. Use whenever the user is applying for a business award (Telstra, chamber of commerce, industry awards), a grant, a competition, or any submission demonstrating merit against defined criteria.
Get a second opinion from leading AI models on code, architecture, strategy, prompting, or anything. Queries models via OpenRouter, Gemini, or OpenAI APIs. Supports single opinion, multi-model consensus, and devil's advocate patterns. Use whenever the user says 'brains trust', 'second opinion', 'ask gemini', 'ask gpt', 'peer review', 'consult another model', 'challenge this', or 'devil's advocate'.
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email routing, cache purge, WAF rules, redirect rules, zone settings, Worker routes, D1 cross-database queries, R2 bulk operations, KV bulk read/write, Vectorize queries, Queues, and fleet-wide resource audits. Produces curl commands or scripts. Triggers: 'cloudflare api', 'bulk dns', 'custom hostname', 'email routing', 'cache purge', 'waf rule', 'd1 query', 'r2 bucket', 'kv bulk', 'vectorize query', 'audit resources', 'fleet operation'.
Scaffold and deploy Cloudflare Workers with Hono routing, Vite plugin, and Static Assets. Describe project, scaffold structure, configure bindings, deploy. Use whenever the user wants to create a Worker project, set up Hono on Cloudflare, configure D1 / R2 / KV / Queues bindings, or troubleshoot Worker export syntax, API route conflicts, HMR issues, or deployment failures.
Run an independent code review using the OpenAI Codex CLI in headless mode. Gets a second opinion from a different model family (the current Codex models) on recent changes, a PR, a commit, or the whole app — covering bugs, regressions, security, data consistency, UX/state bugs, performance risks, and testing gaps. Saves a severity-prioritised report to .jez/reviews/. Triggers: 'codex review', 'review with codex', 'independent code review', 'what does codex think', 'get codex to review'.