SEOblogy

Keyword Strategy Generator

Real Google Keyword Planner data in, a complete campaign or content plan out — and a JSON link that drives the AI Website Builder.

Live Planner data Google Ads API push Builder modes 1 · 3 · 4 · 5 12 languages
Pick country + city above (auto-fills this field), or type free text. For Google Ads runs the Locations CSV targets the best areas of the country — narrowed to the city when one is chosen. Use Worldwide (N/A) for global SEO runs.
This must match the website builder's lang_url_prefix setting. Get it wrong and every ad and sitelink lands on a 404 — a Spanish campaign's ads point at /slug/ while the builder published the pages at /es/slug/. No effect on English runs.
All 23 languages work for Google Ads campaigns (research, ad groups, ad copy, sitelinks and live push) and for Mode 3 websites. Give your seeds and services in this same language — Spanish seeds for a Spanish site. Planner data, ad groups and landing pages all come back in it; URL slugs stay clean English. English is the default and behaves exactly as before.
Choose Already live for a client whose site exists. The run then reads those pages instead of asking you for seed keywords, and builds one ad group per page — so an ad group whose page does not exist becomes impossible.
Comma-separated. 3–6 seed terms works well. Tip: include your city in a few seeds for local data.
Fill both to add NEW ad groups into a live account — new groups slot into this campaign with 2-way negative siloing against these groups.
The AI already classifies every targeted area (affluent → +25%, labour/industrial/fraud-prone → −90%) from its own knowledge of who lives and works there. These two boxes override that call for areas you already know. Use the first one to protect good areas — a wrongly bid-down premium area is the most expensive mistake this stage can make. Every bid change and its reason is written into the Locations CSV's Comment column and locations.md, so check it before you push.
Auto is the one to use. Before pushing any ad it fetches every Final URL and sitelink: a 404, a page that returns 200 while saying "not found", one that redirects to the homepage, or one too thin to have real content all count as not ready. If any page fails, the campaign, ad groups, keywords, negatives, geo and audiences still go up — none of them carries a URL, so Google has nothing to review and nothing to disapprove — and the ads are held. Deploy the pages, run the same thing again, and the ads go in. That is what ends "Destination not working". Enabling is separate on purpose: a campaign that turns itself on starts spending money.
Left blank, the budget is worked out from the campaign it just built: median Max CPC × the clicks a day it needs to learn (about 15), trimmed to what the search volume can actually deliver, and floored so the most expensive keyword can still serve. Every campaign used to launch on a flat 1000 a day in whatever the account currency was — roughly AED 30,000 a month on a campaign nobody had sized, and unspendable on a small niche. The figure and the reasoning appear in the push report and the Master CSV.
Pushes the whole campaign straight into the account through the API — no Editor, no import. Run Validate first (Google checks every operation without touching the account), then Live. The campaign always lands Paused. The account must be linked to your MCC.
This does not create the client. The client row lives in the ClickAds Protector client manager — make it there first (Generate a token, fill the Google Ads customer ID, Save), then paste that token here. Two places would mean two client lists and no single truth about who exists.

The three conversion actions a lead-gen client needs — phone, WhatsApp, form — created in the Ads account through the API, with their tag labels read back and written onto this client's row. Open the client manager afterwards, click the client, and the four middleware fields are already filled: no label is ever copied by hand. The account comes off the client row, so a token belonging to a different account is refused rather than writing one client's labels onto another's row. It is idempotent, so a second run re-reads what is already there instead of creating duplicates — duplicate conversion actions split the data and quietly wreck Smart Bidding.

Check only is the default on purpose: you asked for keyword research, so nothing appears in your live Ads account unless you choose Create. This is a once-per-client job, not a once-per-run one. After it is live, stop importing the GA4 events into Ads — keep the GA4↔Ads link, drop the import, or every lead counts twice.
Guide

How to use this tool — seed formulas, templates & best practices

Get the first step right and everything downstream — scoring, ad groups, SEO clusters, website content — comes out right on its own. Give 3–6 seed keywords, one from each pattern shown on the card. Click Use template to fill the form (niche, location, seeds, deliverable type), then adjust it for your business.

Every run, 5 rules: 3–6 seeds  ·  no brand names  ·  no single generic words (“cleaning” ❌ → “carpet cleaning denver” ✅)  ·  one language per run — pick one of the 23 languages in the dropdown and give seeds in that language (data, ad groups, ad copy, sitelinks and landing pages all come back in it; URLs stay English)  ·  location as free text (“Denver, United States”, or “N/A” for worldwide) — the geo target resolves automatically
The 6 deliverable modes — what each one runs, and what the website builder does with it

Every mode except Locations only ends with a JSON link on the result page. That link is the handoff: paste it into the matching field in the AI Website Builder and the builder stops guessing — it builds from measured search demand instead. The Hands to the builder box on each card tells you exactly which file, which builder mode, and which field.

1 · GOOGLE ADSlaunch or expand a paid search account
Complete campaign + the landing pages its ads point at
planner pull → python scoring → claude campaign architecture → bids → RSA ads → sitelinks → audiences → guard script → locations
What runs: your seeds go to the real Google Ads Keyword Planner (volumes, CPC ranges, competition, 12-month trend) → Python dedupes, classifies intent and scores 0–100 against the dataset itself → Claude designs 1–3 campaigns and up to 10 ad groups (count comes from the data, never padded) with cross-group negative siloing so groups can never cannibalize each other → every keyword gets a suggested starting bid from its real top-of-page bid range → 15 headlines + 4 descriptions per ad group (policy-checked) → per-ad-group sitelinks → audience plan matched from the 3,504-segment master list → an hourly negative-guard Ads Script → Editor-ready geo target rows.
You get 7 downloads: Ads Editor CSV (positives) · Negatives CSV · Negative Guard Script · Audiences CSV (+) · Audiences Negatives CSV (−) · RSA Ads CSV · Locations CSV — plus the Master CSV and, if you filled the push field, a live API push.
File
landing_pages.json — shown as “Mode 1 landing pages link”
Goes to
Website Builder → Mode 1Landing pages JSON URL
Carries
one entry per ad group: the page's service name, its url_slug (the exact slug the RSA Final URLs point at), its sub-services, its own industry, the keyword count and monthly volume it covers, and the page's language.
Builder does
builds every ad group's landing page in one run, each at its RSA slug, internally linked, same brand — so every ad lands on a page written for that exact ad group. Message match is what raises Quality Score and cuts CPC.
Perfect-use tips: fill Website URL or the Final URLs fall back to a placeholder domain. Set Language URL folder to match the builder, or non-English ads 404. Pick country + city in the location picker so the Locations CSV targets that city's real areas. Account already live? Fill Existing campaign + ad groups — new groups arrive pre-siloed. Small niche → cap Max new ad groups at 1–2.
2 · SEOcontent plan for a site that should rank
Cluster architecture for a topic-authority site
planner pull → python scoring → claude cluster strategy → one JSON link for the website builder
What runs: the same real-Planner collection and scoring, then Claude builds the cluster architecture: a pillar topic plus 3–8 clusters (count data-driven), each with its primary keyword, keyword set, funnel stage, 4–8 real customer questions with answer angles (the pattern that wins featured snippets and AI overviews), and the entities the page must mention. One keyword never sits in two clusters — that is the cannibalization guard.
City-level pSEO: pick a city in the location picker and the area block is built from that city's real Google geo areas (all candidates ship as geo_area_candidates) — ready for per-area pages, with no invented neighborhood names.
File
<id>.seo.json — shown as “Mode 4 SEO data link”
Goes to
Website Builder → Mode 4SEO data URL
Carries
the pillar topic, every cluster with its primary + supporting keywords and real volumes, funnel stage, customer questions with answer angles, entities to mention — and, in the same file, a demand-backed services list (Mode 3), a services hub block (Mode 2) and city/area targets (Mode 5).
Builder does
turns each cluster into a page: the primary keyword is forced into the hero title and first paragraph, the questions become H2 sections and H3 FAQs, and each answer's opening line follows its answer angle. Leave Main topic and Problem clusters blank in the builder — they fill themselves from this file.
Perfect-use tips: question seeds (“how to…”, “cost of…”) are the gold here. Blogs and affiliate sites: set location N/A for worldwide volumes. Multi-section sites: one run per section, each with its own parent slug. One file, four builder modes — reuse the same link when you run Modes 2, 3 or 5.
3 · BOTHthe default for local service clients
The ads package and the SEO package off one data pull
one planner pull → full Ads package + full SEO package
What runs: everything from the two modes above on a single Planner pull — same seeds, same scoring, two strategy stages. The ads keywords and the SEO clusters come from the same demand data, so the landing pages and the content plan tell one consistent story instead of contradicting each other.
Where each keyword lands: BOFU commercial keywords go to ads; TOFU problem and question keywords are automatically kept out of ads and become the strongest SEO pages. Nothing is wasted — every keyword ends up on the side it actually converts on.
Files
both links appear: landing_pages.json and <id>.seo.json
Goes to
Website Builder → Mode 1 (landing pages) and Mode 4 (cluster site)
Builder does
run Mode 1 first for the paid landing pages, then Mode 4 for the organic site — or the reverse. They share the brand, the language and the same measured demand, so they can live on one domain without competing for the same queries.
Best when: a client wants leads now (ads) and cheaper leads later (SEO) — which is nearly every local service business.
4 · MODE 3 SITE PLANfull website — services list in, per-page keywords out
A keyword-verified plan for a whole multi-service site
paste your services list → claude groups into categories → per-category planner pull → per-page keyword + question assignment
What runs: the seed box becomes a services list — paste the exact same comma-separated list you will give the builder's Mode 3 (100+ services is fine). Claude groups them into up to 10 categories with the names copied character-for-character, each category gets its own Planner pull so attribution stays clean, then every page is assigned its primary keyword, supporting keywords with real volumes, and 3–6 questions with answer angles — plus a site-wide cannibalization guard.
Why the separate pulls matter: a single combined request makes Google intersect the themes and return a fraction of the ideas. Per-category pulls are what give a 100-service site real long-tail depth on every page.
File
<id>.seo.json — the same “SEO data link” slot on the result page
Goes to
Website Builder → Mode 3seo_inputs_url
Carries
the category tree, and for every page: its exact name, an English url_slug, its primary keyword, supporting keywords with volumes, its questions with answer angles, and internal-link targets.
Builder does
adopts this category tree and these real keywords instead of inventing its own, and builds the full site — homepage, category hubs and every service page — on measured demand. Slugs stay English on both sides, so the URLs match exactly.
Perfect-use tips: the services list must match the builder run exactly — same spelling, same order. Zero-volume services stay in the plan (flagged) so their pages still build. Worth it for high-value clients; for a quick site the builder's own guesses are fine.
5 · MODE 5 AREA PLANpSEO — one service, every neighborhood, measured
Per-area pages that are not doorway pages
one service + a city → every real area measured separately → only areas with their own demand survive
What runs: you give one service and a city. The run pulls that city's real Google geo areas, adds any districts you list under Extra areas (Google can measure many neighborhoods it cannot target), then measures each area separately as “{service} {area}”. Areas that fail the volume threshold are dropped, and the survivors are enriched with their own keywords, neighbouring areas and local context.
Why measure one at a time: this is the whole point. Spraying one template across every district on a map is what makes pSEO a doorway-page penalty. An area only gets a page here if people actually search for that service in that area.
File
<id>.mode5.json — shown as “Mode 5 area plan link”
Goes to
Website Builder → Mode 5 → the plan URL field (no Google Sheet needed)
Carries
the surviving areas only, each with its measured volume, its own keyword set, neighbouring areas for internal linking, and the run's language and primary service.
Builder does
builds one page per surviving area, each with its own hero, services, local context, map and testimonials block, cross-linked to its neighbours, plus a hub page listing every area covered.
Perfect-use tips: set Target location as CITY, COUNTRY — the country is required. Budget roughly 3 minutes for 60 areas. Leave Extra areas blank and the run proposes districts itself. Run it once per service, never for a bundle of services.
6 · LOCATIONS ONLYinstant geo CSV — no pipeline run, no wait
Targeting rows for campaigns you already have
campaign name(s) + country/city picker → Editor CSV built in your browser in seconds
What runs: nothing on the server. Your browser fetches the real Google geo-target database and builds the same 18-column Editor CSV the full pipeline produces. Country only → the country plus all its states. Country + city → the city, its state, and every sub-area inside it (a large US metro runs to 100+ rows).
Best when: the campaigns already exist and you only need proper location targeting. Enter the exact campaign names from your account, comma-separated to do several at once.
Builder
Not used — this mode is Google Ads only and produces no JSON.
Perfect-use tips: import via Ads Editor → Account → Import. Campaigns that don't exist yet import Paused. After import set each campaign to “Presence: people in or regularly in” — never “interest” — so budget only buys clicks inside the target area.
Existing pages & the two-phase push
GOOGLE ADS · LANDING PAGESthe "Destination not working" fix
The ads never go up before the pages do
Why ads used to be disapproved: the Final URL was your domain plus a slug the run invented, and it was pushed whether or not a page existed there — the page only appeared later, when the website builder used the same JSON. Pausing the campaign does not help: Google reviews the ads either way.
Auto (the default) fetches every Final URL and sitelink before pushing an ad. It refuses more than a 404: a page that returns 200 while its title says "not found", one that redirects to your homepage or another domain, and one too thin to have real content all count as not ready.
If a page is not ready, the campaign, ad groups, keywords, negatives, geo targeting and audiences still go up — none of them carries a URL, so there is nothing for Google to review. Only the ads are held. Deploy the pages, run the same thing again, and the ads go in.
Enabling is separate. The campaign stays Paused unless you pick "Enable the campaign" — turning it on starts spending, and that should never happen as a side effect of a push.
EXISTING PAGESclients whose site is already live
The pages decide the campaign, not the other way round
your URLs → pages read → seeds → Keyword Planner (real volumes) → 1 page = 1 ad group
Set Landing pages to "Already live" and paste the URLs instead of seed keywords. Each page is read for what it actually sells, and that becomes the seeds — then the normal Planner pull runs on them. The strategy still comes from measured volume; the crawl only replaces you typing the seeds in.
One ad group per URL. 5 pages → 5 ad groups. An ad group whose page does not exist stops being possible, and the URLs are used exactly as given, so nothing is ever rebuilt from a slug.
Ad copy matches the page. The run reads each page's real H1 and H2s and writes ads the page can back up — which is what lifts Ad Relevance and Landing Page Experience, and lowers CPC.
Sitelinks that go somewhere. If a page has its own #sections they are used; if not, its sitelinks point at the client's other pages — a better path than scrolling the page the visitor is already on.
Nothing is wasted. Keywords with real volume that no current page sells come back as new_page_opportunities — the client's growth list. Pages too thin to convert come back in page_improvements.json: feed it to the builder and the content improves while the URL stays exactly where it is, so nothing in the campaign has to move.
Area bid tiers — how the Locations CSV decides to bid up or down
GOOGLE ADS · LOCATIONSevery targeted area gets a bid modifier
Bid up where the money is, bid down where the junk clicks are
geo dataset → area names → AI classification → your overrides → Bid Modifier column
What it does: every area in the Locations CSV is graded into one of three tiers — premium (affluent or high-commercial-intent) gets +25%, standard gets no change, and low (labour housing, industrial and warehouse zones, areas with a click-fraud reputation) gets −90%, which effectively switches it off.
What it decides on: the geo dataset supplies only names and Google geo IDs — no income, population or traffic data exists in it. The tiers come from the model's own world knowledge of who lives and works in each named area. That works well in cities it knows well and defaults to standard when it is unsure, which is the safe direction.
Because it is judgment, not data: every non-standard call now ships with a short reason, written into the Locations CSV's Comment column and listed in locations.md. Read that list before you import — the one expensive mistake here is a good area wrongly marked low.
Your knowledge wins: put anything you already know into Premium areas or Low / fraud-prone areas above. Those override the model completely, and they work even with no AI key at all. Use the premium list to protect areas that must never be bid down.
Guardrails: bid adjustments are clamped to Google's −90%…+900% range so one bad value cannot fail the whole campaign push; if most of the map gets marked low the run warns you loudly; and the target country and any area you are targeting can never be added as a negative location.
Languages
23 LANGUAGES + ENGLISHthe same set everywhere
One language per run, end to end
Google Ads: all 24 run the full pipeline — Planner research, ad group architecture, RSA ad copy, sitelinks, and campaign language targeting on the live API push.
Mode 3 websites and Mode 4 cluster sites: the same 24. The website builder itself handles 43 languages, so every language this tool can research is one it can build.
Right-to-left: Arabic and Urdu build RTL pages automatically.
URLs: content and ad copy come back in your language; URL slugs always stay clean English, on both sides, so the two repos agree on every path.
Mode 5 is the one exception: it researches and tags the language — so the builder's area pages come out in it — but the area plan's own summary text is not translated.

The two repos, one flow

  1. Pick the language first. Whatever you choose here must be the same language you set in the website builder. The tool writes it into every JSON and the builder adopts it automatically.
  2. Run the mode that matches what you are building — the dropdown labels name the builder mode each one feeds.
  3. Copy the JSON link from the result page and paste it into the builder field named on the card above.
  4. For paid campaigns, match the URL folder. The builder publishes non-English sites under /{lang}/ by default; the Language URL folder field here has to agree with it or the ads point at pages that do not exist.

🚀 Fastest path — API push (no Editor at all)

Fill the API Push — Google Ads customer ID field and the whole campaign goes straight into the account through the Google Ads API — campaign settings, ad groups, keywords with bids, negatives, RSAs, locations with premium/low bid tiers, excluded locations, and audiences. No CSV, no import, no format errors, and it even sets Presence-only location targeting (which a CSV can't).
  1. Validate first (default): Google checks every single operation and reports any problem without creating anything — account stays untouched. Read the API Push Report on the result page.
  2. Validation clean? Run again with Live — the campaign lands Paused (zero spend) in one atomic write: either the whole thing lands or nothing does.
  3. Requirement: the account must be linked to your MCC (Manager Account). Only the guard script stays manual (Ads Scripts can't be pushed via API).
Leave the field blank and you get the CSV files exactly as before — the manual path never goes away.

Full account import order (Ads Editor)

⭐ Shortcut — Master CSV: one file, one import, complete campaign: campaign settings (Search only, Google partners OFF, Manual CPC, Paused) + ad groups + keywords with bids + negatives + RSA ads + locations with premium/low bid tiers + excluded locations + audiences included AND excluded (via the Editor's documented Type column). Import via Account → Import, set the daily budget, review, Post. The ONLY thing left out is the guard script (Tools → Scripts — Ads Scripts can't import from CSV). Steps 1–5 below are the manual per-file path if you prefer it.
  1. Ads Editor CSV — campaigns, ad groups, keywords with suggested bids.
  2. Negatives CSV — the anti-cannibalization layer. Always a separate import — pasting positives and negatives together makes the Editor import everything as positive keywords.
  3. RSA Ads CSV — responsive search ads per ad group.
  4. Audiences CSV (+), then Audiences Negatives CSV (−) — again, two separate imports.
  5. Locations CSV — geo targets per campaign.
  6. Set budgets and bidding manually, review everything, then Post. All campaigns arrive Paused — nothing spends until you enable it.
Golden rule: every file goes through Account → Import (paste text or select file) — never paste into the keyword grids directly; the grids ignore the Criterion Type column.
Business type templates
1 · LOCAL SERVICEHVAC company — Phoenix, AZ
core service · service + city · price/cost modifier · problem phrase · urgency
Niche: AC repair, installation and maintenance company for homes and offices
ac repair phoenix, ac not cooling, ac repair cost phoenix, emergency ac repair, hvac maintenance phoenix
• Deliverable: Both — the Ads package (campaigns, negatives, guard script) and the SEO package (Mode 4 cluster site) in one run.
• Problem phrases ("ac not cooling") pull the diagnostic long-tail that becomes your strongest SEO pages.
• Small niche? Set Max new ad groups to 1–2 — the tool never pads to look thorough.
2 · MULTI-TRADE SERVICEShome services company — this card = the plumbing run
run each trade SEPARATELY — clone this run for electrical, roofing, painting…
Niche: Plumbing repair and installation services for houses and apartments
plumber austin, emergency plumber near me, plumbing repair cost, slab leak repair, water heater installation
Never mix trades in one run — the 400-keyword cap and the percentile floor squeeze out each trade's long-tail and the clusters go shallow.
• Ads: each run = its own campaign (per-trade budget control). Adding a trade to a live account later? Fill the Existing campaign / ad groups fields — 2-way negative siloing is automatic.
• SEO: each run's Mode 4 JSON builds its own site section via parent slug (/plumbing/, /electrical/). Umbrella homepage → Mode 3.
3 · ECOMMERCE STOREonline fragrance store — United States
buy + product · product + price · best X for Y · category / type · occasion / gifting
Niche: Online store selling perfumes and fragrances with nationwide shipping
buy perfume online, designer perfume prices, best cologne for men, niche fragrance brands, perfume gift set for women
One run per main category (perfumes ≠ watches) — one category = one clean cluster architecture.
• Never seed your own brand or competitor brands — competitors get auto-excluded and auto-negatived.
• SEO clusters become category pages + buying guides; "best X for Y" seeds create the MOFU comparison content that converts.
4 · BLOG / CONTENT SITEhome improvement blog — worldwide
how-to question · cost query · best X comparison · DIY topic · ideas / inspiration
Niche: Home improvement blog covering repairs, renovation costs and DIY guides
how to fix a leaking tap, bathroom renovation cost, best water heater for home, diy wall painting tips, small kitchen design ideas
• Deliverable: SEO — a blog doesn't need the ads package; question/informational keywords are the content gold here.
• Question seeds make the tool generate AI-overview / voice questions with answer angles — they become the H2/H3 headings on your pages.
• Monetizing with affiliate? Add "best X" comparison seeds — MOFU clusters are where the revenue is. Location N/A = worldwide data.
5 · CLINIC / HEALTHCAREdental practice — Charlotte, NC
practitioner + city · treatment + price · treatment cost · condition / symptom
Niche: Dental practice offering implants, braces, whitening and general dentistry
dentist charlotte nc, teeth whitening cost, dental implant cost, invisalign near me, tooth pain treatment
• Symptom seeds ("tooth pain") pull TOFU keywords: excluded from ads automatically, but they power the SEO cluster pages that bring patients in.
• If one treatment matters most commercially (implants), give it its own run for depth.
• Same pattern works for any clinic — physio, derma, vet — just swap the treatments.
6 · B2B / SAASHR software — United States
category + market · product + price · best X for business · feature / use-case · vs comparison
Niche: Cloud HR and payroll software for small and medium businesses
hr software for small business, payroll software pricing, best hris system, employee time tracking software, gusto vs adp
• Low volumes are normal in B2B — the tool scores against the dataset itself (no absolute floors), so relative opportunity still surfaces.
"vs / comparison" seeds create the MOFU clusters that actually convert in long sales cycles.
• Check the CPC columns in the report before committing ads budget — B2B clicks are expensive; SEO often wins on cost.
7 · REAL ESTATEreal estate brokerage — Tampa, FL
inventory + intent (rent/buy) · area-specific · price query · market segment
Niche: Real estate brokerage for buying, selling and renting homes and condos
apartments for rent tampa, homes for sale tampa, condos in south tampa, tampa home prices, new construction homes tampa
Rent vs buy are different intents — expect the tool to silo them into separate ad groups with cross-negatives automatically.
• Neighborhood names in seeds ("south tampa") feed Mode 5 pSEO: run that mode to get per-area pages, each one measured before it is built.
8 · EDUCATION / COACHINGtest prep tutoring — Chicago, IL
course + city · cost / price · best X · online variant · how-to (content)
Niche: SAT and ACT test preparation tutoring with in-person and online classes
sat prep chicago, act tutoring cost, best sat prep course, online sat classes, how to study for the sat at home
• Use the words your market uses — in the US that is "cost" and "tutoring", not "fees" or "coaching".
• Teaching remote students too? Do a second run with location N/A (worldwide) for the online demand — different volumes, different competition.
• "how to study" seeds feed the SEO content plan (TOFU articles that rank and funnel into the course pages).
Google Ads — best practices after the run
  1. Import the CSVs: download Ads Editor CSV (positives) from the result page → Google Ads Editor → Account → Import. Campaigns, ad groups, keywords (Phrase/Exact — never Broad) and intent expansions land in one import. Then import Negatives CSV as a separate second import — never mix the two files (see the import-order box above). Review, then post.
  2. Install the guard script: Google Ads → Tools → Scripts → paste the Negative Guard Script → run with DRY_RUN = true for 2–3 days → read the logs → set it to false and schedule hourly. Search terms with conversions are never banned.
  3. Build matching landing pages: copy the Mode 1 landing pages link from the result page → website builder → Mode 1 → paste into Landing pages JSON URL → ONE run generates every ad-group's landing page at the exact slug its RSA Final URLs point to, internally linked, same logo/brand. Message match raises Quality Score and lowers CPC.
  4. Account already running? Fill Existing campaign name + Existing ad groups before the run — new groups slot into that campaign with 2-way negative siloing, plus a list of negatives to add to your old groups.
  5. Who decides how many ad groups? The data does (one group per genuinely distinct commercial theme — if it only supports 4, you get 4), you cap it (Max new ad groups), and Python enforces it (every keyword in exactly one group, empties dropped).
SEO — best practices after the run
  1. Copy the link: the result page shows the Mode 4 SEO data link the moment the run is ready — no manual file handling.
  2. Feed the website builder: choose Mode 4 → paste the link into SEO data URL → leave Main topic and Problem clusters blank; they fill themselves from real search demand.
  3. What each page gets: its own primary keyword (forced into the hero title and first paragraph), the top-10 target keywords with volumes, and real customer questions as H2 sections and H3 FAQs — each answer's first line follows its answer angle, the pattern that wins featured snippets and AI overviews. The pillar page gets the pillar keyword and its own questions.
  4. Multi-section sites: one run per section, each with its own parent slug (/plumbing/, /electrical/).
  5. Same JSON, other modes: it also carries a demand-backed services list (Mode 3) and real geo-area city targets (Mode 5 — pick a city in the location picker and every candidate area ships in geo_area_candidates) — reuse the same link when you run those modes.
  6. Cluster count is data-driven: 3–8, based on the distinct problems actually visible in the keywords — never padded, and one keyword never appears in two clusters (cannibalization guard).