LockStack Local SEO · User Guide

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.

v3.4.27 Windows 10 / 11 Offline AI Local SEO
01

What this does

LockStack Local SEO writes 30 geo-targeted 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 a few hours (minutes with a discrete GPU) you have a full month 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.

What you get

30 blog posts × 21 file formats = 630 files. Plus a CSV calendar, an iCal file, a WordPress import file, and a campaign PDF summary.

634 files total — for one campaign run.

02

Before you start

Check these requirements before installing.

You need
Windows 10 or 11 (64-bit)
8 GB RAM minimum (close other apps; ~3 hours per campaign)
16 GB RAM recommended (smooth multitasking; ~2 hours per campaign)
Optional: 4 GB+ GPU (NVIDIA / AMD / Intel) → ~10–15 min per campaign (5–20× faster, auto-detected via Vulkan)
~5 GB free disk (model + app)
Your purchased EXE (model baked in)
You don't need
A GPU — CPU works fine. If present, used automatically for speedup.
ChatGPT, Claude, or Gemini account
Any technical skills
Internet after install (fully offline)
Separate runtime or model downloads
03

Install the app

You downloaded one EXE matching what you bought — either LockStack-LOCAL-SOLO.exe or LockStack-LOCAL-PRO.exe (~3.5 GB each, AI model baked in). The EXE you have is the entitlement — no license key, no activation, no online check.

1
Double-click the EXE you downloaded.
2
Windows may show "Windows protected your PC" — click More info then Run anyway. This is normal for any unsigned new program.
3
Click Next → Install → Finish — no admin prompt required (installs to your user folder). On first launch the app verifies the bundled model — this takes about 30 seconds.
4
Open Start, type LockStack Local SEO, and launch the app.
No admin prompt, no internet after install

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 21 file formats per post, same 634 files per campaign, same 11 social adaptations, same offline proprietary AI engine. The only difference is 3 hidden UI elements in Pro:

Local Solo $147
30 hyper-local posts per campaign
All 21 file formats per post (634 files / campaign)
Geo-aware (postcode, area, landmarks)
LocalBusiness + FAQPage + Speakable JSON-LD (shipped in the per-post .zip)
All 11 social adaptations (LinkedIn Article, LinkedIn Post, X Short, X 3-tweet, Facebook, Threads, Carousel, Newsletter, Video Script, Google Business Post, Instagram Caption)
CALENDAR (CSV) + CALENDAR (ICS) export
Per-platform .txt social files
PDF SUMMARY + WORDPRESS COPY
NEW / OPEN / SAVE / GENERATE / EXPORT ZIP + Save & Resume
100% offline · no telemetry · no subscription
Local Pro $347
Everything in Solo (identical output), plus 3 UI elements:
CALENDAR (XLSX) button — styled 3-sheet workbook in the Schedule & Publish row (Solo still has CSV and ICS)
BULK SOCIAL CSV button — one combined CSV in the Schedule & Publish row (Solo still gets per-platform .txt files)
SEO DATA tab — 4th right-side spoke with a live JSON-LD editor (Solo shows 3 spokes: BLOG POST, VIDEO VERSION, SOCIAL CHANNELS — the schema is still generated by the backend and shipped in the per-post .zip)
Where the 3 Pro UI elements appear

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.

04

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.

First-timer? Read this 60-second walkthrough.

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 or two words — 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) London, Paddington Your neighbourhood. 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.
⚠️ Important — you are NOT writing the headlines When you scroll down to “POST STRUCTURE” below, you’ll see 4 dropdown options (How-to / Opinion / Trends / Data) each with a sample like:

“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 7 fields turn into REAL local blog posts (not generic AI fluff)

1. The AI knows WHERE you are

Because you typed London, 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 neighbourhood.

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 neighbourhood.

“A regular blog generator writes for the whole world, which means it reaches nobody. This engine writes for one neighbourhood, which means it reaches your next customer.”
🎯 Cheat Code · LOCAL

Don’t know what to type?

This fills the form for you in 3 simple steps. No marketing skills needed.

01
Click any free AI to open it (a new tab will open)
02
Click the “Copy” button below to copy the prompt
03
Paste it in the AI, change ONLY the green line (write what your business does), then hit Enter
⚠️ Only change the green line. Leave everything else exactly as-is.
The LOCAL Cheat Code Prompt — copy & paste into any free AI
I am setting up LockStack Local SEO — a desktop app that writes 30 hyper-local blog posts for a single business.
My business does: [WRITE 1-2 SENTENCES — what you do and where you are. Example: "I run a 24/7 emergency plumbing company in Gangnam, Seoul, serving homeowners."]

Act as my local marketing strategist.
Fill out the 8 fields below perfectly so I can paste them
straight into the LockStack form. Format each answer on its
own line, clearly labeled, no extra commentary.

1. BUSINESS TYPE — One or two words for what I do.
   Examples: Plumber, Dentist, Café, Florist, Yoga Studio.

2. MAIN SERVICE — The #1 thing customers call me about.
   Write it like I’d say it on the phone. Example:
   "emergency boiler repair" or "wedding flower arrangements".

3. GOOGLE SEARCH TERM — The exact phrase a customer
   would Google to find me. 3–6 words.
   Example: "emergency plumber near me" or "best brunch Williamsburg".

4. AREA 1 — The neighbourhood, district, or suburb
   closest to my business. Give it as City + Neighbourhood.
   Examples: London, Westminster · Seoul, Gangnam ·
   New York, Brooklyn Heights.

5. POSTCODE / ZIP (optional) — The postcode/ZIP of my
   business. Skip if I don’t know it.

6. AREA 2 (optional) — A second nearby neighbourhood
   I serve. Skip if I only serve one area.

7. LANDMARK (optional) — A park, station, famous street,
   or building near my business that locals already know.
   Skip if there’s no obvious landmark.

8. POST STRUCTURE — Pick the best fit:
   [1] How-to (most popular — step-by-step guides)
   [2] Opinion (my take on a local problem)
   [3] Trends (what’s changing in my trade)
   [4] Data (facts and numbers that build trust)

After all 8 answers, give me a clean copy-paste-ready summary
so I can paste each into the LockStack form one by one.
✨ See what the AI will give you back

If you write: “My business does: I run an emergency plumbing company in Gangnam, Seoul, serving homeowners.”

The AI will reply with something like this — just paste each one into the matching field below:

Business Type
Plumber
Main Service
24/7 emergency leak and burst-pipe repair
Google Search Term
emergency plumber Gangnam
Area 1
Seoul, Gangnam
Postcode
06164
Area 2
Apgujeong
Landmark
Gangnam Station
Post Structure
[1] How-to
💡 That’s it! Copy each answer from the AI into the matching field below, then type your own business NAME into the first field yourself — the cheat code doesn’t cover that one, and GENERATE stays greyed out until it’s filled. If something sounds too fancy, change it to plain English — like you’d say it on the phone.
Why fill this form — what you walk away with
5 minutes of typing~1–2 hours of generation on your laptop → 30 locally-targeted blog posts mentioning your service area, a 30-day publishing calendar across 6 channels (LinkedIn, X, Threads, Facebook, Newsletter, Blog), and LocalBusiness schema so Google Maps and "near me" searches find you. Generated locally. No cloud. No subscription. Yours forever.
NAME Required
The name on your sign or business card
Riverside Plumbing Co.
⚡ Quick rule: Type your real business name. The AI won’t “fix” or “correct” your spelling — what you type is what shows up.
In plain English: type the exact name on your sign or business card. Don't worry about caps or spelling — the engine won't "fix" or "correct" your brand name.
Don't: type a description like "best plumber in town" — that's a slogan, not your name.
BUSINESS TYPE Required
One or two words for what you do — Pet Groomer, Dog Daycare, Vet, Café, Florist, Yoga Studio, etc.
Plumber
⚡ Quick rule: Use the short label a stranger would type into Google Maps to find a business like yours — one or two words. Plumber. Dentist. Café.
In plain English: what would Google Maps call you? Plumber, Dentist, Realtor, Café, Salon. One or two words, lowercase fine.
Don't: write a sentence like "we fix sinks and water heaters" — just say "Plumber."
MAIN SERVICE Required
The number one thing customers call you for. Write it as you'd say it out loud.
emergency boiler repair
⚡ Quick rule: This is the “Hook.” It’s the single biggest problem your customer is crying about at 2 AM — the job they call you for in a panic.
In plain English: the one job you get hired for the most. If a friend asked "what do you do all day?" — this is the answer.
Don't: list ten things separated by commas — pick the single biggest moneymaker.
What it IS The single specific thing customers pay you to do. The bread-and-butter offering, not your full menu.
How specific Specific enough that a customer reading it knows you can solve their exact problem. Not "general dentistry" (too broad) — "family + cosmetic dentistry with same-day crowns" (specific enough).
NOT to be confused with BUSINESS TYPE BUSINESS TYPE is your industry label (one or two words: "Plumber", "Dentist", "Café"). MAIN SERVICE is what you actually sell, in your customer's words. Plumber → Main Service: "24/7 emergency burst pipe repair." Dentist → Main Service: "Family & cosmetic dentistry with same-day crowns." Same business, different field.
Format examples
  • 🔧 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
💡 Pro tip The engine drops this phrase directly into post titles and meta descriptions ("Why Clapham homeowners trust [your MAIN SERVICE] over big chains"). If you write it like an internal job-description, your posts will sound like an internal job-description. Write it the way you'd say it to a customer who walked in.
Location & Search
Tell the engine WHERE you are and WHAT customers search for.
GOOGLE SEARCH TERM Required
The main thing customers search to find you. Every post covers a DIFFERENT local angle on this topic — no two headlines will be the same.
boiler repair near me
⚡ Quick rule: Type the exact thing your customer would Google at midnight when they have your problem — usually the service plus your area, or the service plus “near me.”
In plain English: imagine a stressed customer with a broken boiler at 11pm. What do they actually type into Google? That phrase goes here.
Don't: type your business name — customers don't search "Apex Plumbers," they search "plumber near me."
What it IS The exact phrase a customer types into Google when they have your problem and need a business like yours. Not what YOU call it — what THEY call it.
How specific Specific enough that the AI generates 30 different post angles. Too broad ("plumber") = generic posts. Too narrow ("emergency plumber Clapham burst pipe Sunday night") = the AI runs out of angles after 5 posts. Sweet spot = 3–6 words that include the service + a hint of geography or context.
NOT to be confused with MAIN SERVICE MAIN SERVICE is what YOU sell ("24/7 emergency burst pipe repair"). GOOGLE SEARCH TERM is what your customer Googles at 11pm on a Sunday ("emergency plumber Clapham burst pipe"). Same job, different vocabulary. MAIN SERVICE = your menu. GOOGLE SEARCH TERM = the customer's panic.
Format examples
  • 🔧 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
💡 Pro tip The engine takes this query and generates 30 different post angles around it — so this is the single most leveraged field on the form. A clear, specific GOOGLE SEARCH TERM = 30 focused, well-targeted posts. A vague one = 30 vague posts. The engine builds keyword variations from your query (long-tail expansions, "near me" variants, "best/cheapest/24/7" prefixes), so don't try to cram every variation in — just write the most-searched core phrase.
AREA 1 Required
The city + neighbourhood closest to your business — where most of your customers are. Not a country, and not a bare city name on its own. Examples: London, Westminster · Seoul, Gangnam · New York, Brooklyn Heights · Tokyo, Shibuya.
London, Westminster
⚡ Quick rule: Write your city + neighbourhood, like you’d say it on the phone. Not just “London” (too vague). Not your street address (too narrow). “South London, Clapham” is the sweet spot.
In plain English: the city + neighbourhood where you actually work — the one a local would name. "Austin, South Congress" or "Chicago, West Loop." This is the most important field for local SEO.
Don't: type a whole country or state like "USA" or "Texas" — be specific to the neighbourhood you serve.
What it is The city + neighbourhood your business serves. This is the broadest geographic anchor for every post the engine writes.
How specific Don't write just "London" or just "USA" — that's too vague. Don't write your full street address — that's too narrow. The sweet spot is City + Neighbourhood / Suburb / District.
Format examples
  • 🇬🇧 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
💡 Pro tip The engine weaves this directly into the headline and meta description of every blog post (e.g. "How South London plumbers fix a burst pipe in under 30 minutes"). If you write something vague here, every post sounds vague.
Local Context (Optional)
Add more local context (optional · improves schema accuracy)
POSTCODE / ZIP Optional
Helps make the schema more accurate. Don't know it? Leave blank — Area 1 is enough.
e.g. SW1A 1AA or 90210
⚡ Quick rule: Use your real postcode or just the prefix (SW4, 78704). Don’t make one up — a postcode that doesn’t match your area undermines the whole point of the schema.
In plain English: the postcode (UK) or ZIP code (US) for your shop or service area. Just used in invisible Google schema — readers never see it.
Don't: stress over picking the "right" one if you cover several — pick the centre of your service area or leave blank.
What it is Your area's postal code. Either the FULL code or just the PREFIX (postcode area / zip prefix) — both work.
How specific A prefix is usually better than a full code. Full postcodes anchor you to ONE building; prefixes anchor you to a neighbourhood, which matches how people actually search.
Format examples
  • 🇬🇧 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)
💡 Pro tip The engine adds this code to the JSON-LD schema (LocalBusiness postalCode field), which helps search engines and AI assistants place your business in the right area. A wrong postcode can associate your posts with a place you don't serve.
AREA 2 Optional
Add another nearby area if you want. Fine to leave blank — we'll just use Area 1.
Leave blank if you only serve one
⚡ Quick rule: Skip this unless you really do serve a second neighbourhood. Most businesses don’t need it.
In plain English: a second neighbourhood you also cover. If you only serve one area, leave it empty — the engine won't fake a second one.
Don't: list 5 neighbourhoods crammed in here — one extra is the limit, pick the next biggest.
What it is A secondary or nearby neighbourhood you also serve. Optional — skip it if you only want to focus on one area.
How specific Same rule as Area 1 — city + neighbourhood. Use this if your business serves a 2-neighbourhood radius, not just one.
Format examples
  • 🇬🇧 UK: if Area 1 is South London, Clapham, Area 2 might be South London, Battersea (next neighbourhood over)
  • 🇺🇸 US: if Area 1 is Brooklyn, Williamsburg, Area 2 might be Brooklyn, Greenpoint
  • 🇦🇺 AU: if Area 1 is Sydney, Surry Hills, Area 2 might be Sydney, Paddington
  • 🇨🇦 CA: if Area 1 is Toronto, Queen West, Area 2 might be Toronto, Kensington Market
💡 Pro tip The engine generates a few posts targeted at Area 2 too, so you cover both neighbourhoods. Skip this field if you only want to focus on ONE area — don't pad it with somewhere you don't actually serve.
LANDMARK Optional
A park, station, famous street or big building your customers already know. Makes posts sound genuinely local.
e.g. St James's Park
⚡ Quick rule: Name 1–3 real places nearby that locals would know. Parks, stations, famous streets. The AI drops these into your posts so they feel actually local — fake landmarks make the AI sound fake too.
In plain English: a real-world place a local would recognise — a park, a tube station, a famous street. "Near Zilker Park" or "Walking distance from the Stanley Mosk Courthouse." This proves you actually know the area.
Don't: invent a fake landmark or use something nobody's heard of — pick a place a stranger could find on a map.
What it is 1–3 real physical places near your business that locals would recognise. Parks, stations, famous streets, monuments, shopping districts.
How specific REAL landmarks only. Use names locals actually use (not tourist names). 1 landmark is fine; 3 is the max — more dilutes the focus.
Format examples
  • 🇬🇧 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
💡 Pro tip This is the field that makes your blog feel TRULY local. The engine drops landmark names directly into post bodies (e.g. "If you live within walking distance of Clapham Common…"), which is the kind of first-hand local detail Google's helpful-content guidance asks for. Fake landmarks = the AI hallucinates fake context = the post sounds wrong.
Writing Style & Structure
POST STRUCTURE Has default
Dropdown — pick one of these:
⚠️ The 4 examples below are SAMPLES of what the AI will write for you — not something you type.
[1] How-to — Step-by-step guide (most popular)
[2] Opinion — Your take on a local problem
[3] Trends — What's changing in your trade right now
[4] Data — Facts and numbers that build trust
⚡ Quick rule: If you aren’t sure, pick “How-to.” It’s the format most readers find easiest to act on, because they finish the post knowing what to do next.
In plain English: the shape of every post. Pick one and let all 30 posts share the same shape — the calendar feels coherent. If unsure, leave on How-to.
How-to
Step-by-step guide. Most popular.
"If your kitchen sink starts gurgling at 11pm on a Sunday, here's the 3-step check we walk every Clapham customer through before we even pick up a wrench…"
Opinion
Your hot take on a problem in your trade.
"Most plumbers in South London are still quoting flat-rate emergency call-outs. They're wrong, and here's the 4-figure mistake homeowners pay for every winter…"
Trends
What's changing in your trade right now.
"Three things shifted in residential plumbing this year that nobody at the trade counter is talking about. Here's what changed and what it means for your next boiler service…"
Data
Facts and numbers that build trust.
"We pulled 12 months of emergency call-out data from 47 SW4 households. The pattern is clear: the average burst-pipe call comes 4.2x more often in homes with copper joints older than 15 years…"
Don't: change this halfway through to "see what happens" — pick one and let all 30 posts share the same shape.
WRITING VOICE Has default
Pick 1 or 2 tones: Professional, Friendly, Simple, Funny, Critical, Relatable
Professional
⚡ Quick rule: Pick the vibe you’d want a smart friend to use if they were explaining your business to a neighbour over coffee.
In plain English: the main vibe of your posts. Friendly = warm and welcoming. Critical = confident, willing to call out bad ideas. Simple = no jargon, like explaining to a kid. Funny = light, playful. Relatable = "I've been there too." Pick ONE main vibe (and optionally a second).
Don't: tick all six — the engine gets confused if you try to be everything at once. Two tones max.
POST LENGTH Has default
Slider 600–2000 words. 900 is the sweet spot.
900
⚡ Quick rule: Long posts win Google but short posts win social. The default is the sweet spot — leave it alone unless you have a reason.
In plain English: how long each blog post should be. 900 words is the safe middle — long enough for Google to take seriously, short enough that real humans read to the end.
Don't: max it out at 2000 thinking longer = better — a 900-word post people finish beats a 2000-word post they bounce from.
NUMBER OF POSTS Has default
Max is 30.
30
⚡ Why 30? Because each post is a unique angle on your search query — and a single keyword has about 30 distinct angles before you start saying the same thing twice.
One slider. One month of content. Done.
Heads-up: 30 posts = 30 consecutive calendar days — weekends included. The calendar export lets you drag any weekend event onto a weekday inside Google / Outlook / Apple Calendar.
Don't: run 30 on your first try — do 1 first to confirm tone and quality, then come back for the full 30.
CAMPAIGN START DATE Has default
The day your first post is scheduled to publish. Every other post is scheduled one day after that — so 30 posts = 30 calendar days starting from this date.
2026-06-01 (Monday)
⚡ Quick rule: This is the field that makes the calendar download work. It puts a real publish date on every post so the .ics export drops them onto your Google / Outlook / Apple Calendar on the right days.
In plain English: pick the day you want post #1 to go live. Most local businesses pick the Monday of next week — gives you the weekend to skim the posts before they start publishing. Leave blank and the engine defaults to today.
Why this field exists — the calendar download

When the campaign finishes, the app gives you a Download Calendar button. That button exports a .ics file you can double-click to import into Google Calendar, Outlook, or Apple Calendar. Each post becomes a calendar event — Publish Blog, Post to LinkedIn, Post to X, Send Newsletter — on a real day at a real time (09:00 blog, 11:00 LinkedIn, 13:00 X, 14:30 Threads, 17:00 Facebook, 18:00 newsletter). The Campaign Start Date is what tells the engine which day to anchor everything to. Leave it blank and the engine defaults to today's date — the calendar still works, you just lose control over the start day.

Don't: pick a date in the past unless you're back-dating posts on purpose — your calendar will fill with reminders that already happened.
Area 1 drives everything

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 NameElite Flow Plumbing
Business TypePlumber
Main Service24/7 emergency residential plumbing
Google Search Termemergency plumber near me
Area 1Austin, South Congress
Postcode / ZIP78704
Area 2Bouldin Creek
LandmarkNear Zilker Park and Barton Springs
Post StructureHow-to
Writing VoiceSimple + Friendly
Post Length900
Number of Posts30

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 NameBrightSmile West Loop
Business TypeDentist
Main ServiceFamily & cosmetic dentistry
Google Search Termfamily dentist west loop chicago
Area 1Chicago, West Loop
Postcode / ZIP60607
Area 2Fulton Market
LandmarkJust off Restaurant Row on Randolph Street
Post StructureHow-to
Writing VoiceFriendly + Relatable
Post Length900
Number of Posts30

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 NameHarbor View Realty
Business TypeRealtor
Main ServiceResidential real estate sales
Google Search Termbrickell condos for sale
Area 1Miami, Brickell
Postcode / ZIP33131
Area 2Edgewater
LandmarkOverlooking Biscayne Bay, near Brickell City Centre
Post StructureOpinion
Writing VoiceCritical + Relatable
Post Length1100
Number of Posts30

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 NameThe Daily Grind Roasters
Business TypeCafé
Main ServiceIndependent coffee shop & bakery
Google Search Termbest coffee williamsburg brooklyn
Area 1Brooklyn, Williamsburg
Postcode / ZIP11211
Area 2Greenpoint
LandmarkJust off Bedford Avenue, near McCarren Park
Post StructureTrends
Writing VoiceRelatable + Funny
Post Length800
Number of Posts30

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 NameLuxe Studio Salon
Business TypeSalon
Main ServiceBoutique hair colour & cut
Google Search Termbalayage specialist atlanta
Area 1Atlanta, Buckhead
Postcode / ZIP30305
Area 2Brookhaven
LandmarkWalking distance from the Atlanta History Center
Post StructureHow-to
Writing VoiceFriendly + Funny
Post Length900
Number of Posts30

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

Legal is one of the most expensive categories in Google Ads — organic local content is their cheapest path to qualified leads, and "near me" plus a courthouse landmark seals trust.

Business NameShield & Associates Law
Business TypePersonal Injury Law Firm
Main ServicePersonal injury & insurance claim representation
Google Search Termpersonal injury lawyer downtown los angeles
Area 1Los Angeles, Downtown
Postcode / ZIP90012
Area 2Arts District
LandmarkWalking distance from the Stanley Mosk Courthouse
Post StructureOpinion
Writing VoiceCritical + Simple
Post Length1100
Number of Posts30

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 NameThe Rusty Anchor Grill
Business TypeSeafood Restaurant & Bar
Main ServiceFresh Pacific seafood & oyster bar
Google Search Termbest seafood restaurant seattle waterfront
Area 1Seattle, Waterfront
Postcode / ZIP98101
Area 2Belltown
LandmarkRight next to the Seattle Great Wheel and Pike Place Market
Post StructureTrends
Writing VoiceFunny + Friendly
Post Length800
Number of Posts30

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 NamePrecision Auto Works
Business TypeIndependent Auto Repair & Transmission
Main ServiceTransmission rebuild & full-service repair
Google Search Termhonest auto repair denver capitol hill
Area 1Denver, Capitol Hill
Postcode / ZIP80203
Area 2Cheesman Park
LandmarkNear the State Capitol and Civic Center Park
Post StructureHow-to
Writing VoiceSimple + Friendly
Post Length900
Number of Posts30

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 NamePaws & Bubbles Spa
Business TypeDog Daycare & Mobile Grooming
Main ServiceMobile dog grooming & daycare
Google Search Termmobile dog grooming capitol hill seattle
Area 1Seattle, Capitol Hill
Postcode / ZIP98102
Area 2Madison Park
LandmarkDown the street from Volunteer Park
Post StructureHow-to
Writing VoiceFunny + Relatable
Post Length900
Number of Posts30

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 NameIron Forge Athletics
Business TypeCrossFit & Functional Fitness Gym
Main ServiceCrossFit classes & small-group strength coaching
Google Search Termcrossfit gym pacific beach san diego
Area 1San Diego, Pacific Beach
Postcode / ZIP92109
Area 2Mission Beach
LandmarkTwo blocks from Crystal Pier
Post StructureOpinion
Writing VoiceCritical + Simple
Post Length1000
Number of Posts30

Why Critical + Simple: calling out toxic fitness fads and bad diet advice (Critical) while making "getting started" feel approachable to nervous first-timers (Simple).

05

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 2 to 3 hours on a typical PC — minutes on a machine with a discrete GPU, longer on older 4-core laptops. Your CPU will run warm — this is normal.

Don't close the app while generating

You can use other programs but the computer will be slower. If you accidentally close it mid-run, the in-progress campaign is lost and you’ll need to generate again — SAVE and OPEN only restore campaigns that finished.

When finished, the status line reads Campaign complete. N/N passed QA and all 30 posts appear in the middle column.

Quality check

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 edit it manually in the right-hand editor, or raise the POST LENGTH slider and run the campaign again.

06

Reading results

The app has three panels after a successful run.

Left — Form

The form. Change any field and click Generate to re-run with new settings.

Middle — 30 Posts

Posts 01 through 30. Green ✓ = passed QA. Click any row to preview the full post.

Right — Editor

The selected post, plus download buttons for individual files and campaign export buttons.

07

Your output files

For each post LockStack creates 21 files. For each campaign run, 4 additional campaign files are generated — the publishing calendar (CSV), the iCal file (.ics), the WordPress import file (.xml), and the campaign PDF summary. Total: 634 files per run. v3.4.27 adds four of them: a Google Business Profile post, an Instagram caption with hashtags, YouTube title/description/tags, and a featured-image recipe.

.md
Markdown
Substack, Medium, Ghost, Notion, GitHub
.html
Web page
Paste into Squarespace, Wix, Webflow source view
.schema.json
JSON-LD schema
LocalBusiness + FAQPage + Speakable schema for SEO audit tools
.entities.json
Entity map
NLP and semantic SEO tools
.txt
Plain text
Notepad, email, anywhere no formatting needed
.rtf
Rich Text
Opens in Microsoft Word
.linkedin.md
LinkedIn article
Long-form LinkedIn “Write an article”
.linkedin_post.txt
LinkedIn post
Short LinkedIn feed post
.x_short.txt
X short tweet
Single-tweet headline (≤ 280 chars)
.x_long.txt
X long tweet
Premium / X Blue extended tweet
.x_thread.txt
X thread
3-tweet thread, ready to schedule
.threads.txt
Threads (Meta)
Ready-to-paste Threads post
.facebook.txt
Facebook post
Page or group share copy
.newsletter.txt
Newsletter
Email lead-in / teaser block
.carousel.txt
Carousel script
Slide-by-slide LinkedIn / Instagram carousel copy
.video_script.txt
Video script
Short-form video / Reel narration script
.gbp.txt
Google Business Profile post
Paste into your Google Business Profile update
.instagram.txt
Instagram caption
Caption with inline hashtags
.youtube.txt
YouTube metadata
Title, description and tags to pair with the video script
.image_prompt.txt
Featured-image recipe
Image prompt, filename and upload path for the blog hero / og:image
.social.txt
Social aggregate
All social copies in one file for quick paste

Campaign files — one set per run:

content-calendar.csv
Notion-styled spreadsheet
Emoji-prefixed columns, ready for Buffer / Hootsuite / Airtable / Notion
content-calendar.ics
iCal file
Double-click — imports every scheduled post and channel reminder into Google / Outlook / Apple Calendar
{business}-wordpress.xml
WordPress import
Tools → Import → WordPress in WP admin — all 30 posts with schema embedded
WordPress publishing

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.

08

Publish your month

Buttons at the bottom of the sidebar:

WORDPRESS — downloads the WordPress XML import file

PDF SUMMARY — downloads a campaign PDF summary with the pass/fail QA table for all 30 posts

Also at the bottom of the sidebar, under GENERATE:

NEW — clear the form and start a new campaign

SAVE — save the current campaign state to disk

OPEN — reload a previously saved campaign

09

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, check that your antivirus is not quarantining files under %LocalAppData%\Programs\LockStack\ and add that folder to its exclusions.

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

A few hours on a 4-core laptop is normal (machines with a discrete GPU finish in minutes). The engine runs 30 logical steps per post to produce all formats, schema, and social adaptations — this is by design. 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.

10

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 a few hours on CPU, or minutes with a discrete GPU. 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.