30 geo-targeted posts.
One click. Fully offline.
Everything you need to go from empty form to a published month of local content — no cloud, no subscription, no data leaves your machine.
What this does
LockStack Local SEO writes 30 geo-safe blog posts for any local service business — plumbers, dentists, electricians, cafés, and anyone whose customers live nearby. Fill a short form, click Generate, and in 1 to 2 hours you have a full quarter of content: articles, social posts, a publishing calendar, and a WordPress import. Everything runs offline on your PC — no cloud, no subscription, no data leaves your machine.
30 blog posts × 17 file formats = 510 files. Plus a CSV calendar, iCal file, and QA report.
513 files total — for one campaign run.
Before you start
Check these requirements before installing.
Install the app
You downloaded one EXE matching what you bought — either LockStack-LOCAL-SOLO.exe or LockStack-LOCAL-PRO.exe (~2.5 GB each, AI model baked in). The EXE you have is the entitlement — no license key, no activation, no online check.
LockStack installs to your user folder (%LocalAppData%\Programs\) so no admin password is needed. The AI model is baked into the EXE — once installed, the app works fully offline forever. No license server, no telemetry.
Solo vs Pro — what your EXE includes
Each tier ships as a separate EXE. The features you get are determined by which one you downloaded — the EXE itself is the entitlement. Solo and Pro produce identical campaign output — same 30 posts, same 17 file formats per post, same 513 files per campaign, same 9 social adaptations, same offline State-of-the-Art Local 3B AI Engine (Built with Llama) model. The only difference is 3 hidden UI elements in Pro:
.txt social files.txt files).zip)
SCHEDULE & PUBLISH row: Pro shows two extra buttons — CALENDAR (XLSX) alongside CSV/ICS, and BULK SOCIAL CSV next to the per-platform .txt exports.
Right-side spokes: Pro shows a 4th spoke SEO DATA for live JSON-LD editing; Solo shows only BLOG POST, VIDEO VERSION, and SOCIAL CHANNELS — but the same LocalBusiness/FAQPage/Speakable schema is generated either way and lands in the per-post .zip.
Fill the form
The form is on the left side of the app. Use the field reference below.
Don't know what to type? Click your industry below to see a complete filled-in example, then copy the pattern.
You give the engine a few details about your business. The AI takes those details and writes 30 different blog posts for you. Think of it like a cookbook: you provide the ingredients, the AI does the cooking.
Below is one real example — VoltMaster Electric, a small electrician in Paddington, London — showing exactly what to type into each field. Copy this pattern for your own business.
| Field | What VoltMaster typed | Why it works |
| BUSINESS TYPE | Electrician | One word — your industry. The AI uses this to know what kind of business you are. |
| MAIN SERVICE | Residential Panel Upgrades | What you actually SELL — the #1 thing customers pay you for. NOT a tagline, NOT a slogan. |
| GOOGLE SEARCH TERM | Electrician Paddington London | The exact words a stressed homeowner types into Google. NOT what you call yourself — what THEY call you. |
| AREA 1 (REQUIRED) | Paddington | Your neighborhood. NOT just “London” (too vague). NOT your street address (too narrow). |
| POSTCODE / ZIP (optional) | W2 1RH | Real postcode. Helps Google trust the location. Don’t make one up. |
| LANDMARK (optional) | Near Paddington Station | A real place locals would know. The AI drops this into posts so they sound truly local. |
| POST STRUCTURE | [4] Data — facts and numbers that build trust | The STYLE you want. The AI writes 30 different headlines IN this style. You’re picking the format, not writing the headlines. |
“How a modern panel saves London homeowners 15% on energy bills…”
Those are SAMPLES OF WHAT THE AI WILL WRITE FOR YOU. They are NOT something you type into MAIN SERVICE or any other field. You only pick the style — the AI writes all 30 different headlines for you.If you tried to copy that headline into MAIN SERVICE, your blog posts would all be about “saving 15% on bills” instead of about residential panel upgrades in general. Different fields, different jobs.
Why these 6 fields turn into REAL local blog posts (not generic AI fluff)
1. The AI knows WHERE you are
Because you typed Paddington + W2 1RH + Paddington Station, the AI writes sentences like “If you live in the Victorian terrace houses near Paddington Station, your electrical panel is likely 40 years old…” That kind of sentence is what makes Google rank your blog locally — generic AI can’t do it because generic AI doesn’t know your neighborhood.
2. The AI knows WHAT you actually do
Because you typed Residential Panel Upgrades (not “general electrical work”), every post stays focused on the one service that pays your bills. No fluff about other services you barely offer.
3. The AI knows HOW your customers search
Because you typed “Electrician Paddington London” as the search term, every post is built to rank for that exact search. Not 100 made-up keywords — the one phrase that brings real customers.
The result: 30 blog posts that look hand-written by a local expert, not by an AI that’s never set foot in your neighborhood.
“A regular blog generator writes for the whole world, which means it reaches nobody. This engine writes for one neighborhood, which means it reaches your next customer.”
- 🔧 Plumber →
24/7 emergency residential plumbing - 🦷 Dentist →
Family & cosmetic dentistry with same-day crowns - ☕ Café →
Specialty espresso & all-day brunch - 💇 Salon →
Color specialists & precision cuts - 💪 Gym →
CrossFit & functional fitness coaching - ⚖️ Lawyer →
Personal injury claims & insurance disputes - 🐾 Vet →
Small-animal preventive care & emergency surgery - 🍽️ Restaurant →
Wood-fired Neapolitan pizza & natural wine
- 🔧 Plumber →
emergency plumber near me burst pipe - 🦷 Dentist →
family dentist Chicago West Loop new patient - ☕ Café →
best coffee shop Williamsburg with wifi - 💇 Salon →
best balayage colorist Atlanta Buckhead - 💪 Gym →
crossfit gym near me beginner friendly - ⚖️ Lawyer →
personal injury lawyer Los Angeles free consultation - 🐾 Vet →
emergency vet near me open Sunday - 🍽️ Restaurant →
best pizza Seattle waterfront date night
- 🇬🇧 UK:
South London, Clapham·Manchester, Northern Quarter·Edinburgh, Stockbridge - 🇺🇸 US:
Austin, South Congress·Brooklyn, Williamsburg·Chicago, West Loop - 🇦🇺 AU:
Sydney, Surry Hills·Melbourne, Fitzroy - 🇨🇦 CA:
Toronto, Queen West·Vancouver, Gastown
- 🇬🇧 UK postcode prefix:
SW4(Clapham) ·M1(Manchester centre) ·EH3(Edinburgh New Town) - 🇺🇸 US ZIP:
78704(South Austin) ·11211(Williamsburg) ·60607(West Loop) - 🇦🇺 AU postcode:
2010(Surry Hills) ·3065(Fitzroy) - 🇨🇦 CA prefix:
M5V(Toronto Entertainment District) ·V6B(Vancouver Gastown)
postalCode field), which is how Google's local pack ranks you. Wrong postcode = your blog ranks for a city you don't serve.
- 🇬🇧 UK: if Area 1 is
South London, Clapham, Area 2 might beSouth London, Battersea(next neighbourhood over) - 🇺🇸 US: if Area 1 is
Brooklyn, Williamsburg, Area 2 might beBrooklyn, Greenpoint - 🇦🇺 AU: if Area 1 is
Sydney, Surry Hills, Area 2 might beSydney, Paddington - 🇨🇦 CA: if Area 1 is
Toronto, Queen West, Area 2 might beToronto, Kensington Market
- 🇬🇧 UK:
Near Clapham Common and High Street·Just off Brick Lane, near Spitalfields Market·Walking distance from Edinburgh Castle - 🇺🇸 US:
Near Zilker Park and Barton Springs·Just off Bedford Avenue, near McCarren Park·Two blocks from Crystal Pier - 🇦🇺 AU:
Across from Centennial Park, near Bondi Junction Station - 🇨🇦 CA:
Walking distance from St. Lawrence Market, near Union Station
It doesn't matter if you don't know your postcode — Area 1 is all the engine needs to write locally relevant content. Postcode only affects the JSON-LD schema tag (invisible to readers).
10 real businesses, 10 filled-in forms
Pick the one closest to yours and copy the pattern field-for-field. Every value here works in the real form — try it.
🔧 Emergency Plumber — Elite Flow Plumbing
Plumbers win on raw geographic proximity and urgency — the engine weaves "Zilker Park" right into the copy so customers see you actually know the neighbourhood.
| Business Name | Elite Flow Plumbing |
| Business Type | Plumber |
| Main Service | 24/7 emergency residential plumbing |
| Google Search Term | emergency plumber near me |
| Area 1 | Austin, South Congress |
| Postcode / ZIP | 78704 |
| Area 2 | Bouldin Creek |
| Landmark | Near Zilker Park and Barton Springs |
| Post Structure | How-to |
| Writing Voice | Simple + Friendly |
| Post Length | 900 |
| Number of Posts | 30 |
Why Simple as the primary tone: a panicking homeowner with water on the floor doesn't want jargon — they want to be told what to do, fast.
🦷 Family Dentist — BrightSmile West Loop
Dentists live on hyper-local trust — content needs to feel safe, professional, and tied to the neighbourhood.
| Business Name | BrightSmile West Loop |
| Business Type | Dentist |
| Main Service | Family & cosmetic dentistry |
| Google Search Term | family dentist west loop chicago |
| Area 1 | Chicago, West Loop |
| Postcode / ZIP | 60607 |
| Area 2 | Fulton Market |
| Landmark | Just off Restaurant Row on Randolph Street |
| Post Structure | How-to |
| Writing Voice | Friendly + Relatable |
| Post Length | 900 |
| Number of Posts | 30 |
Why Friendly + Relatable: dental anxiety is real — copy that says "we get it, nobody likes the chair" beats clinical authority.
🏠 Realtor — Harbor View Realty
Realtors live and die by neighbourhood knowledge — landmark + postcode prove you actually know the area you're selling.
| Business Name | Harbor View Realty |
| Business Type | Realtor |
| Main Service | Residential real estate sales |
| Google Search Term | brickell condos for sale |
| Area 1 | Miami, Brickell |
| Postcode / ZIP | 33131 |
| Area 2 | Edgewater |
| Landmark | Overlooking Biscayne Bay, near Brickell City Centre |
| Post Structure | Opinion |
| Writing Voice | Critical + Relatable |
| Post Length | 1100 |
| Number of Posts | 30 |
Why Critical for the realtor: calling out bad advice from other agents makes the firm sound like an advocate — not just another salesperson.
☕ Independent Café — The Daily Grind Roasters
Cafés live on daily, recurring foot traffic — content needs to feel like part of the neighbourhood commute.
| Business Name | The Daily Grind Roasters |
| Business Type | Café |
| Main Service | Independent coffee shop & bakery |
| Google Search Term | best coffee williamsburg brooklyn |
| Area 1 | Brooklyn, Williamsburg |
| Postcode / ZIP | 11211 |
| Area 2 | Greenpoint |
| Landmark | Just off Bedford Avenue, near McCarren Park |
| Post Structure | Trends |
| Writing Voice | Relatable + Funny |
| Post Length | 800 |
| Number of Posts | 30 |
Why Relatable + Funny: people read café content on their morning phone scroll — light humour about needing caffeine beats serious "about our beans" copy.
💇 Hair Salon — Luxe Studio Salon
Salons live on personal loyalty — written content should project the warm, vibrant energy of the salon chair itself.
| Business Name | Luxe Studio Salon |
| Business Type | Salon |
| Main Service | Boutique hair colour & cut |
| Google Search Term | balayage specialist atlanta |
| Area 1 | Atlanta, Buckhead |
| Postcode / ZIP | 30305 |
| Area 2 | Brookhaven |
| Landmark | Walking distance from the Atlanta History Center |
| Post Structure | How-to |
| Writing Voice | Friendly + Funny |
| Post Length | 900 |
| Number of Posts | 30 |
Why Funny as the secondary: salon culture is gossipy and vibrant — a touch of playfulness in the writing matches the in-chair experience.
⚖️ Personal Injury Lawyer — Shield & Associates Law
Law firms pay the highest CPC in Google Ads — organic local content is their cheapest path to qualified leads, and "near me" plus a courthouse landmark seals trust.
| Business Name | Shield & Associates Law |
| Business Type | Personal Injury Law Firm |
| Main Service | Personal injury & insurance claim representation |
| Google Search Term | personal injury lawyer downtown los angeles |
| Area 1 | Los Angeles, Downtown |
| Postcode / ZIP | 90012 |
| Area 2 | Arts District |
| Landmark | Walking distance from the Stanley Mosk Courthouse |
| Post Structure | Opinion |
| Writing Voice | Critical + Simple |
| Post Length | 1100 |
| Number of Posts | 30 |
Why Critical + Simple: the firm fiercely advocates for clients against insurance companies (Critical), then translates legal jargon so a 12-year-old can read it (Simple).
🍽️ Destination Restaurant — The Rusty Anchor Grill
Hospitality wins on foot traffic, tourists, and "near me" phone searches — landmark targeting next to a famous attraction is critical here.
| Business Name | The Rusty Anchor Grill |
| Business Type | Seafood Restaurant & Bar |
| Main Service | Fresh Pacific seafood & oyster bar |
| Google Search Term | best seafood restaurant seattle waterfront |
| Area 1 | Seattle, Waterfront |
| Postcode / ZIP | 98101 |
| Area 2 | Belltown |
| Landmark | Right next to the Seattle Great Wheel and Pike Place Market |
| Post Structure | Trends |
| Writing Voice | Funny + Friendly |
| Post Length | 800 |
| Number of Posts | 30 |
Why Funny + Friendly: tourists pick a restaurant on vibe — playful, warm copy converts a lunch-deciding scroll faster than serious "about our chef" prose.
🔩 Auto Repair Shop — Precision Auto Works
Mechanics suffer from an industry-wide trust deficit — local content that explains repairs clearly without talking down wins the neighbourhood search.
| Business Name | Precision Auto Works |
| Business Type | Independent Auto Repair & Transmission |
| Main Service | Transmission rebuild & full-service repair |
| Google Search Term | honest auto repair denver capitol hill |
| Area 1 | Denver, Capitol Hill |
| Postcode / ZIP | 80203 |
| Area 2 | Cheesman Park |
| Landmark | Near the State Capitol and Civic Center Park |
| Post Structure | How-to |
| Writing Voice | Simple + Friendly |
| Post Length | 900 |
| Number of Posts | 30 |
Why Simple as primary: a customer who actually understands what's wrong with their car trusts the shop that explained it — that trust is the entire moat for an indie mechanic.
🐾 Pet Spa — Paws & Bubbles Spa
Pet owners spend big but only on businesses that show genuine care — local SEO captures people looking for convenience near their commute.
| Business Name | Paws & Bubbles Spa |
| Business Type | Dog Daycare & Mobile Grooming |
| Main Service | Mobile dog grooming & daycare |
| Google Search Term | mobile dog grooming capitol hill seattle |
| Area 1 | Seattle, Capitol Hill |
| Postcode / ZIP | 98102 |
| Area 2 | Madison Park |
| Landmark | Down the street from Volunteer Park |
| Post Structure | How-to |
| Writing Voice | Funny + Relatable |
| Post Length | 900 |
| Number of Posts | 30 |
Why Funny + Relatable: playful jokes about shedding plus empathy for the hassle of washing a dog in a small apartment tub — exactly the vibe pet parents share with each other.
💪 Boutique Gym — Iron Forge Athletics
Gyms must constantly recruit to offset churn — content needs to cut through online influencer noise and focus on local community.
| Business Name | Iron Forge Athletics |
| Business Type | CrossFit & Functional Fitness Gym |
| Main Service | CrossFit classes & small-group strength coaching |
| Google Search Term | crossfit gym pacific beach san diego |
| Area 1 | San Diego, Pacific Beach |
| Postcode / ZIP | 92109 |
| Area 2 | Mission Beach |
| Landmark | Two blocks from Crystal Pier |
| Post Structure | Opinion |
| Writing Voice | Critical + Simple |
| Post Length | 1000 |
| Number of Posts | 30 |
Why Critical + Simple: calling out toxic fitness fads and bad diet advice (Critical) while making "getting started" feel approachable to nervous first-timers (Simple).
Generate your posts
After filling the form, click GENERATE LOCAL CAMPAIGN at the bottom of the sidebar.
The middle panel shows a live progress log. About 1 to 2 hours on a modern PC — ~1 hour on a fast machine, up to 2 hours on older 4-core laptops. Your CPU will run warm — this is normal.
You can use other programs but the computer will be slower. If you accidentally close it, just run it again — the app starts fresh.
When finished, the status line reads Campaign complete. N/N passed QA and all 30 posts appear in the middle column.
Any post that shows a red ✗ failed the quality check (e.g. word count too low). It's still usable — the red banner shows exactly why it failed. You can click Regenerate on that post or edit it manually.
Reading results
The app has three panels after a successful run.
The form. Change any field and click Generate to re-run with new settings.
Posts 01 through 30. Green ✓ = passed QA. Click any row to preview the full post.
The selected post, plus download buttons for individual files and campaign export buttons.
Your output files
For each post LockStack creates 17 files. For each campaign run, 3 additional campaign files are generated. Total: 513 files per run.
Campaign files — one set per run:
Use the WordPress 1-click copy button in the editor — paste straight into the WP block editor with all schema embedded. Pro tier adds bulk copy across multiple saved profiles.
Publish your month
Buttons at the bottom of the sidebar:
WORDPRESS — downloads the WordPress XML import file
From the Editor toolbar:
NEW — clear the form and start a new campaign
SAVE — save the current campaign state to disk
OPEN — reload a previously saved campaign
Troubleshooting
Generate button is greyed out
All required fields must have text before Generate activates. Check Business Name, Business Type, Main Service, Google Search Term, and Area 1.
"Model not ready" error
The AI model is bundled inside the EXE — no runtime or external download is required. If you see this error, the bundled model failed to extract on first launch. Close the app, restart your PC, and re-launch from Start. If it persists, run as administrator once to allow the model to unpack into %LocalAppData%\Programs\LockStack\.
Posts show a red ✗ badge
The post failed one of the QA checks. The red banner inside the post shows the exact reason — e.g. word-count:430<600 means the post is too short. Either re-run that post or increase the word count slider and generate again.
Generation is very slow
1 to 2 hours on a 4-core laptop is normal. The v3.4.0 bipolar pipeline runs 13 micro-task LLM calls per post (T=0.0 for JSON / schema, T=0.7 for prose). Closing other apps speeds it up slightly.
The app crashes on launch
Make sure you're on Windows 10 or 11 (64-bit). Try running as administrator if you get a permissions error on first launch.
FAQ
Does any data leave my computer?
No. The AI model runs locally on your machine. Your business name, posts, and everything you type stays on your machine. No telemetry, no account required.
Do I own the content?
Yes. Everything generated is yours. LockStack has no claim on it, never uploads it, never sees it.
Can I run multiple campaigns?
Yes, unlimited. Each campaign takes 1 to 2 hours. Use NEW to start fresh, or change the Area and run again to build a second geo-targeted campaign.
Why is postcode optional now?
Area 1 is all the engine needs to write locally relevant content. Postcode only affects the postalCode field in the JSON-LD schema tag — a tiny invisible detail. If you know it, add it; if not, leave it blank.
Can I run it on a Mac?
Not yet — this version is Windows 10/11 only.
How many campaigns can I run per day?
Unlimited. No caps, no per-campaign fees.