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
-
Complete <head> section with meta tags, Open Graph, Twitter Cards
-
JSON-LD structured data (LocalBusiness + Service + FAQ schemas)
-
robots.txt
-
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:
<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)
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:
{ "@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
{ "@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):
{ "@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 version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>{{SITE_URL}}/</loc> <lastmod>{{DATE}}</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> <!-- Add one <url> per page. Priority: 1.0 homepage, 0.8 services, 0.6 others --> </urlset>
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
<!-- Link: international format. Display: local format. --> <a href="tel:+61249001234">(02) 4900 1234</a>
Schema telephone: "+61-2-4900-1234"
Prefix International
02 +612
04 +614
1300 Keep as-is
ABN
Add to LocalBusiness schema when available:
{ "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).