How I filtered a 300k keyword sweep into one GW2 list
A plain account of turning a giant Semrush export into one master GW2 list: what I kept, what I threw out, where I filed it, and why.
I pulled a broad-match Semrush sweep of about 300,000 rows and filtered it down to around 1,600 Guild Wars 2 keywords worth a page. Here's the whole process, written so anyone picking it up later (future me included) can run it the same way.
Where it started
With the blog's structure, tags and tracking already in place (the last post), the next job was the list itself. I work the sweep one seed at a time: one export for stats, one for gold, one for mastery, class, legendary, build, and so on. Each file is the whole broad-match neighbourhood around that one word, usually a few thousand rows, and most of those rows are junk: every possible word order of every possible phrase, almost all of it at near-zero volume.
What I'm building is one list I can trust: every Guild Wars 2 keyword actually worth a page, each one listed once, sorted under the topic it belongs to, and graded for a brand-new site with no authority yet. I keep it all in a single document on purpose. The list itself is the thing I work from.
The one that nearly ruined the whole thing: Garden Warfare
Here's the trap, and it's specific to this game. “GW2” isn't only us. It's also how everyone abbreviates Plants vs Zombies: Garden Warfare 2. So the moment you run a broad sweep on “gw2” terms, you drag in a pile of Plants vs Zombies content that has nothing to do with Guild Wars 2. At a glance, “best gw2 character” looks like a perfectly good keyword until you realise the searcher wants a cartoon sunflower.
The easy half announces itself: anything with pvz, garden warfare, plant, zombie, neighborville or garden ops. Gone, no second look. The half that cost me time is the Garden Warfare terms that don't contain any of those words, because they're named after that game's own stuff:
- Its collectibles and modes: golden gnomes, crazy targets, snow globes, delivery badges.
- Its currency: stars. Guild Wars 2 doesn't have “stars,” so every “how to get stars” query was Plants vs Zombies wearing our abbreviation.
- Its characters: peashooter, sunflower, super brainz, cactus, chomper, and the rest of the roster.
The tell that saved me: these came in pairs. If I spotted an obvious “[something] pvz gw2” in the reject pile, there was almost always a twin “[something] gw2” (same words, no pvz) in the keep pile, the exact same Plants vs Zombies term. So whenever the blatant version showed up, I went hunting for its quieter twin. When I wasn't sure, I didn't guess, I searched it.

The rest of the cuts
If it doesn't say "gw2" or "guild wars," it's not ours. Broad match throws in generic MMO terms that never name us. A new site has no business chasing those, so anything without the brand in it goes.
Volume under 30, gone. Below thirty searches a month it's all permutation dust. Thirty is roughly where a keyword stops being an accident and starts being something people actually type.
One keyword, one home. Every term lives once, under the topic it most belongs to. Before I add anything from a new export I check it against everything already in the list.
What it came down to
Start with 300,000-odd rows. Knock out the Garden Warfare homonyms, drop everything that doesn't name the game, then remove the duplicates. That alone clears out almost the whole sweep, because broad match is mostly the same handful of real terms in every possible word order, repeated across all fifty seed exports. Of the few thousand real keywords left, I cut the roughly 2,700 that fall below the volume floor. What's left looks like this:
First full pass, June 2026. Most of the 300k was cross-game, off-brand or duplicate rows, cleared before the volume floor even applied.
The shape that fell out of it: three big pillars by volume. The timer tool (the one thing worth building), the build cluster (easily the largest theme), and the legendary pillar. The easiest wins sit in three repeatable lanes I can template: a page per elite-spec build, a page per crafting discipline, and a page per zone.
Then sorting the whole thing
By the time every export was filtered I had the full list, but organised by the seed each keyword arrived on. That's how I collected it, not how the site should be built. So once the list stopped growing I sorted it two ways: once by raw demand (highest volume first, gw2 event timer at 12,100 down to the 30s), and once by topic, into the 15 clusters that become the site's sections.
How I sorted each keyword:
- What it's about, first clear signal wins. If it says "build" it's a build, even if it also says "wvw" or "fractal." Every build lives in one cluster.
- Intent splits inside a cluster, not across it.
gw2 buildsandgw2 buildersit together in Builds; one's flagged as content, the other as a tool to skip. - Still one keyword, one home. Nothing appears twice. If it could go two places I pick the more useful one and note the other.
- Brand names ride along but stay flagged. A rival build site is about builds, so it sits in Builds with a note that it's a competitor, not a target.
What the list points at
Once it's sorted by demand and graded for difficulty, the plan more or less picks itself. Two piles matter. The first is low-difficulty terms that still have real volume: the pages a brand-new site can plausibly rank in the near term. The second is the big heads, high volume and high difficulty, worth chasing later once the site has some history behind it. Here's a sample of each, straight off the list.
Start here: low difficulty, real volume
These land almost entirely in the three lanes I can template: a page per profession build, a page per crafting topic, a page per zone. That's not luck, it's just where the easy volume sits in this game.
| Keyword | Vol/mo | KD | Lane |
|---|---|---|---|
| gw2 build editor | 1,600 | 16 | Build tool |
| gw2 map | 1,600 | 18 | Zone / map |
| gw2 crafting guide | 1,300 | 15 | Crafting |
| gw2 necro build | 880 | 3 | Profession build |
| mesmer build gw2 | 880 | 9 | Profession build |
| gw2 ranger builds | 720 | 10 | Profession build |
| gw2 mystic clover | 720 | 14 | Crafting |
| gw2 skyscale guide | 390 | 20 | Mount guide |
gw2 necro build at KD 3 is almost certainly underrating a brutal page one. I read every score here as a reason to open the live results and look, not a green light.Chase later: high volume, high difficulty
The big single-word heads. Worth a page eventually, but not the first fight to pick. They stay on the list so the targets keep showing, not so I write them on day one.
| Keyword | Vol/mo | KD | Cluster |
|---|---|---|---|
| guild wars | 8,100 | 78 | About / brand |
| gw2 builds | 8,100 | 30 | Builds head |
| gw2 builder | 6,600 | 31 | Builds tool head |
| gw2 classes | 4,400 | 33 | Classes overview |
| guild wars 1 | 2,900 | 64 | About / legacy |
| gw2 expansions | 2,400 | 44 | Story & expansions |
| guild wars 2 release date | 1,600 | 47 | About |
gw2 event timer sits right between the two piles, 12,100 searches a month at KD 28. The biggest single term in the whole sweep, and only middling difficulty, which is exactly why the timer was the first thing I built. More on that in the timer write-up.How I run a fresh export
The whole loop, in order, so it stays repeatable as new exports come in.