---
name: seo-local-business
description: "Generate complete SEO setup for local business websites — HTML head tags, JSON-LD LocalBusiness schema, robots.txt, sitemap.xml. Australian-optimised with +61 phone, ABN, suburb patterns."
---
# 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 `
` 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
{{PAGE_TITLE}} | {{BUSINESS_NAME}}
```
**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": "2300",
"addressCountry": "AU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -32.9283,
"longitude": 151.7817
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "08:00",
"closes": "12:00"
}
],
"areaServed": [
{ "@type": "City", "name": "Newcastle" },
{ "@type": "City", "name": "Lake Macquarie" }
],
"sameAs": [
"https://www.facebook.com/abcplumbing",
"https://www.instagram.com/abcplumbing"
]
}
```
**Service** (service pages — add per service):
| Property | Required | Notes |
|----------|----------|-------|
| `name` | Yes | Service name |
| `description` | Yes | What the service provides |
| `provider` | Yes | `{ "@id": "{url}/#organization" }` |
| `areaServed` | Recommended | City or region |
| `serviceType` | Recommended | Category of service |
| `offers` | Optional | Pricing/availability |
```json
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Hot Water System Installation",
"description": "Professional hot water system installation and replacement in Newcastle.",
"provider": { "@id": "https://www.abcplumbing.com.au/#organization" },
"areaServed": { "@type": "City", "name": "Newcastle" },
"serviceType": "Plumbing",
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"priceRange": "$$"
}
}
```
**FAQ** (pages with FAQ sections):
```json
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does a plumber cost in Newcastle?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Plumber callout fees in Newcastle typically range from $80-150."
}
}
]
}
```
### Step 4: Generate robots.txt and sitemap.xml
**robots.txt:**
```
User-agent: *
Allow: /
Sitemap: {{SITE_URL}}/sitemap.xml
```
**sitemap.xml:**
```xml
{{SITE_URL}}/{{DATE}}weekly1.0
```
### Step 5: Validate
Test structured data at: https://validator.schema.org/
Common validation errors:
- Missing `@context` — every JSON-LD block needs it
- Wrong phone format — must be international (`+61-...`)
- Missing `@id` — needed for cross-referencing between schemas
- Empty `areaServed` — include at least one city
## Australian-Specific Patterns
### Phone Numbers
```html
(02) 4900 1234
```
Schema telephone: `"+61-2-4900-1234"`
| Prefix | International |
|--------|---------------|
| 02 | +612 |
| 04 | +614 |
| 1300 | Keep as-is |
### ABN
Add to LocalBusiness schema when available:
```json
{ "taxID": "12 345 678 901" }
```
### Australian State Codes
| State | Code | Geo Region |
|-------|------|------------|
| New South Wales | NSW | AU-NSW |
| Victoria | VIC | AU-VIC |
| Queensland | QLD | AU-QLD |
| South Australia | SA | AU-SA |
| Western Australia | WA | AU-WA |
| Tasmania | TAS | AU-TAS |
| Northern Territory | NT | AU-NT |
| ACT | ACT | AU-ACT |
### Service Areas
Use `areaServed` with Australian city and suburb names (see LocalBusiness example above).