From e18cc04959745fd6ed528dfd3e910a13050334b9 Mon Sep 17 00:00:00 2001
From: Alexander Mayes
Date: Fri, 31 Jul 2026 15:44:15 -0700
Subject: [PATCH 1/2] Retarget homepage + guide metadata at audit intent
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Search Console shows two distinct query populations on the homepage:
"analyzer" queries (~1.5k impressions) convert at 10-36%, while
navigational "wow tbc logs"-style queries (~14k impressions, people
looking for warcraftlogs.com) convert at ~0.2%. The site-wide CTR
decline is that second group growing, not a regression — so this
change ignores it and targets the one high-volume query with genuine
tool intent instead.
- Homepage title: add "Raid Audit". `tbc audit` is 3.3k impressions at
position 4.9 with 0.61% CTR; the word was absent from the title, so
searchers never saw their term matched. Keeps "Log Analyzer" intact —
those queries are the 30%+ CTR group. Drops "Classic" to stay under
SERP truncation; it remains in the description and H1.
- Homepage description: lead with the paste-a-URL action and name the
specific things audited.
- Guide: retarget from the navigational cluster (91% of its impressions,
unwinnable against warcraftlogs.com) toward the genuine-intent queries
it already surfaces for. Description now matches the page's actual
7-step structure.
Co-Authored-By: Claude Opus 5 (1M context)
Claude-Session: https://claude.ai/code/session_01DzE8p4mzrJjXKSqMhj3YHN
---
app/guides/how-to-analyze-wow-classic-logs/page.tsx | 4 ++--
app/layout.tsx | 10 ++++++++--
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/app/guides/how-to-analyze-wow-classic-logs/page.tsx b/app/guides/how-to-analyze-wow-classic-logs/page.tsx
index 00fdc09..c3f40b4 100644
--- a/app/guides/how-to-analyze-wow-classic-logs/page.tsx
+++ b/app/guides/how-to-analyze-wow-classic-logs/page.tsx
@@ -2,9 +2,9 @@ import type { Metadata } from "next";
import Link from "next/link";
export const metadata: Metadata = {
- title: "How to Analyze WoW Classic & TBC Logs",
+ title: "How to Read Your WoW Classic & TBC Logs",
description:
- "Step-by-step guide to reading your Warcraft Logs reports for WoW Classic and TBC — turn raw parses into DPS, gear, and buff improvements with ParseForge.",
+ "Confused by your Warcraft Logs report? A 7-step walkthrough: read your DPS and HPS parses, then audit gear, enchants, gems, consumables, and raid buffs.",
alternates: {
canonical:
"https://parseforge.gg/guides/how-to-analyze-wow-classic-logs",
diff --git a/app/layout.tsx b/app/layout.tsx
index 4446a43..e0c791a 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -20,11 +20,14 @@ const geistMono = Geist_Mono({
export const metadata: Metadata = {
metadataBase: new URL("https://parseforge.gg"),
title: {
- default: "Free WoW Classic & TBC Log Analyzer — ParseForge",
+ // "Audit" is deliberate: `tbc audit` is our largest non-navigational
+ // query (~3.3k impressions at position ~4.9) and the word was missing
+ // from the title. "Log Analyzer" stays — those queries convert at 30%+.
+ default: "Free WoW TBC Log Analyzer & Raid Audit — ParseForge",
template: "%s | ParseForge",
},
description:
- "Free WoW Classic & TBC log analyzer — paste a Warcraft Logs URL to compare your raid DPS against top players, audit gear and buffs, and get improvement tips.",
+ "Paste a Warcraft Logs URL to audit your TBC or Classic raid in seconds — compare DPS and HPS against top parses, and catch missing gear, gems, enchants, buffs, and consumables.",
keywords: [
"WoW Classic",
"Warcraft Logs",
@@ -33,6 +36,9 @@ export const metadata: Metadata = {
"raid analysis",
"WoW Classic TBC",
"WoW Classic WotLK",
+ "TBC audit",
+ "raid audit",
+ "TBC Anniversary logs",
"gear audit",
"buff tracking",
"consumable tracking",
From 3953622c5f301eee702cb7f253531b0451e9e39f Mon Sep 17 00:00:00 2001
From: Alexander Mayes
Date: Fri, 31 Jul 2026 16:01:02 -0700
Subject: [PATCH 2/2] Add dedicated /tbc-audit landing page
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
`tbc audit` is our largest non-navigational query — ~3,280 impressions
per 28d at position ~4.9, converting at 0.61%, with the general-purpose
homepage as the only thing ranking for it. Unlike the "wow tbc logs"
cluster (navigational, people looking for warcraftlogs.com), these
searchers want an auditing tool, which is exactly what the Buff & Gear
Audit tab is. That feature had no dedicated URL until now.
This is a feature page, not a doorway: every check described is one the
CLA engine actually runs, verified against lib/cla-engine.ts and
lib/constants.ts — enchants and severity tiers (error/warning/info →
CRITICAL/WARNING/NOTE), sockets, gem type, TBC weapon oils and
sharpening stones, item level, flasks, battle/guardian elixirs, food,
scrolls, class buff families incl. the Salvation-on-tank warning, and
the 61-point TBC talent check.
- New `/tbc-audit` with the URL form inline (matches tool intent), plus
BreadcrumbList and FAQPage JSON-LD.
- Linked from the homepage and added to the sitemap at priority 0.9.
Prior experience here is that unlinked pages sit in "Discovered –
currently not indexed", so the internal link is load-bearing.
- Fixed a stale claim in ReportUrlForm: it said "Supports Classic and
Season of Discovery reports" while the app has handled TBC through
Cataclysm for a while (EXPANSION_ID_TO_DOMAIN, 1000-1004). It read as
a direct contradiction on a TBC page.
Verified: tsc + lint clean; page rendered locally and checked end to
end (title 58 chars incl. the " | ParseForge" template, canonical,
JSON-LD, and the crawlable homepage anchor).
Co-Authored-By: Claude Opus 5 (1M context)
Claude-Session: https://claude.ai/code/session_01DzE8p4mzrJjXKSqMhj3YHN
---
app/components/ReportUrlForm.tsx | 3 +-
app/page.tsx | 15 ++
app/sitemap.ts | 1 +
app/tbc-audit/page.tsx | 309 +++++++++++++++++++++++++++++++
4 files changed, 327 insertions(+), 1 deletion(-)
create mode 100644 app/tbc-audit/page.tsx
diff --git a/app/components/ReportUrlForm.tsx b/app/components/ReportUrlForm.tsx
index 4fbe2d1..45416d8 100644
--- a/app/components/ReportUrlForm.tsx
+++ b/app/components/ReportUrlForm.tsx
@@ -90,7 +90,8 @@ export default function ReportUrlForm() {
- Supports Classic and Season of Discovery reports. Example:{" "}
+ Supports Classic Era, Season of Discovery, TBC, Wrath, Cataclysm, and
+ Anniversary reports. Example:{" "}
https://classic.warcraftlogs.com/reports/ABC123#fight=5&source=12
diff --git a/app/page.tsx b/app/page.tsx
index d9c6769..d98051c 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -83,6 +83,21 @@ export default function Home() {
+
+
+ TBC Raid Audit
+
+
+ Running The Burning Crusade? The{" "}
+
+ TBC raid audit
+ {" "}
+ checks every raider for missing enchants, empty gem sockets, flasks,
+ food buffs, weapon oils, raid buffs, and unspent talent points — the
+ whole raid in one pass.
+
+
+
Supported Versions
diff --git a/app/sitemap.ts b/app/sitemap.ts
index 525b52d..b521531 100644
--- a/app/sitemap.ts
+++ b/app/sitemap.ts
@@ -10,6 +10,7 @@ export const revalidate = 3600;
const STATIC_ROUTES: MetadataRoute.Sitemap = [
{ url: BASE, changeFrequency: "weekly", priority: 1 },
+ { url: `${BASE}/tbc-audit`, changeFrequency: "monthly", priority: 0.9 },
{ url: `${BASE}/guides`, changeFrequency: "monthly", priority: 0.8 },
{ url: `${BASE}/guides/how-to-analyze-wow-classic-logs`, changeFrequency: "monthly", priority: 0.7 },
{ url: `${BASE}/guides/improve-dps-wow-classic`, changeFrequency: "monthly", priority: 0.7 },
diff --git a/app/tbc-audit/page.tsx b/app/tbc-audit/page.tsx
new file mode 100644
index 0000000..729d7e4
--- /dev/null
+++ b/app/tbc-audit/page.tsx
@@ -0,0 +1,309 @@
+import type { Metadata } from "next";
+import Link from "next/link";
+import { Gem, FlaskConical, Sparkles, ScrollText } from "lucide-react";
+import ReportUrlForm from "@/app/components/ReportUrlForm";
+
+// Dedicated landing page for `tbc audit` search intent. GSC (Jul 2026) shows
+// ~3.3k impressions/28d at position ~4.9 for that query with the homepage as
+// the only thing ranking — unlike the navigational "wow tbc logs" cluster,
+// these searchers want an auditing tool, which is exactly the Buff & Gear
+// Audit tab. This page targets that intent directly instead of making the
+// general-purpose homepage compete for it.
+export const metadata: Metadata = {
+ // Keep short: the root layout appends " | ParseForge" (13 chars), so this
+ // must stay under ~47 to survive SERP truncation at ~60.
+ title: "WoW TBC Raid Audit — Free Buff & Gear Checker",
+ description:
+ "Free TBC raid audit. Paste a Warcraft Logs URL to check every raider for missing enchants, empty gem sockets, flasks, food buffs, weapon oils, and raid buffs.",
+ alternates: {
+ canonical: "https://parseforge.gg/tbc-audit",
+ },
+ openGraph: {
+ title: "WoW TBC Raid Audit — Free Buff & Gear Checker | ParseForge",
+ description:
+ "Paste a Warcraft Logs URL to audit your whole TBC raid for missing enchants, gems, flasks, food, weapon oils, and raid buffs.",
+ url: "https://parseforge.gg/tbc-audit",
+ },
+};
+
+const GEAR_CHECKS = [
+ {
+ label: "Missing enchants",
+ severity: "CRITICAL",
+ detail:
+ "Every enchantable slot is checked against what the player actually had equipped during the pull.",
+ },
+ {
+ label: "Empty gem sockets",
+ severity: "WARNING",
+ detail: "Sockets left unfilled on otherwise raid-ready gear.",
+ },
+ {
+ label: "Wrong gem type",
+ severity: "WARNING",
+ detail:
+ "Gems that don't match the socket color or the player's role — a stamina gem in a caster's gear, for example.",
+ },
+ {
+ label: "Missing weapon oil or sharpening stone",
+ severity: "NOTE",
+ detail:
+ "Superior Wizard Oil, Superior Mana Oil, Adamantite Sharpening Stone, Fel Sharpening Stone and the rest of the TBC set.",
+ },
+ {
+ label: "Under-leveled items",
+ severity: "NOTE",
+ detail:
+ "Pieces well below the item level of the rest of the raider's gear, flagged as likely upgrade slots.",
+ },
+];
+
+const CONSUMABLE_CHECKS = [
+ {
+ icon: FlaskConical,
+ title: "Flasks & elixirs",
+ body: "Flasks, plus the battle-elixir and guardian-elixir pairing that TBC raiders run instead. A raider with only one half of the pair gets flagged.",
+ },
+ {
+ icon: ScrollText,
+ title: "Food buffs & scrolls",
+ body: "Well Fed food buffs and stat scrolls, checked per pull rather than per night — so a raider who ate before the first boss and never again is visible.",
+ },
+ {
+ icon: Sparkles,
+ title: "Raid buffs",
+ body: "Paladin Blessings, Power Word: Fortitude and the other class buff families, matched against the roles that should have received them. Blessing of Salvation on a tank is called out as a threat problem.",
+ },
+ {
+ icon: Gem,
+ title: "Talent builds",
+ body: "Incomplete builds — a TBC raider should have all 61 talent points spent, and unspent points are easy to miss for weeks.",
+ },
+];
+
+const FAQ = [
+ {
+ q: "What does the TBC raid audit check?",
+ a: "Gear (missing enchants, empty or mismatched gem sockets, missing weapon oils and sharpening stones, under-leveled items), consumables (flasks, battle and guardian elixirs, food buffs, scrolls), raid buffs from every buff-giving class, and incomplete talent builds. Every check runs for the whole raid at once, per pull.",
+ },
+ {
+ q: "Is it free?",
+ a: "Yes. ParseForge is free, there is no account to create, and there is no limit on how many reports you can audit.",
+ },
+ {
+ q: "Do I need to install an addon?",
+ a: "No. The audit reads a Warcraft Logs report you have already uploaded, so anything your raid logged is available. Nothing gets installed in-game.",
+ },
+ {
+ q: "Which TBC raids are supported?",
+ a: "Karazhan, Gruul's Lair, Magtheridon's Lair, Serpentshrine Cavern, Tempest Keep, Hyjal Summit, Black Temple, Sunwell Plateau, and Zul'Aman — including TBC Anniversary realms.",
+ },
+ {
+ q: "Can I audit a single raider instead of the whole raid?",
+ a: "Yes. The audit runs raid-wide by default, and you can also open any individual character to see their gear, consumables, buff uptime, and talent build on their own.",
+ },
+ {
+ q: "Does it work for Classic Era and Wrath too?",
+ a: "Yes. ParseForge supports Classic Era, Season of Discovery, The Burning Crusade, Wrath of the Lich King, Cataclysm Classic, and Anniversary realms. The consumable, enchant, and talent databases switch to match the expansion your log came from.",
+ },
+];
+
+const breadcrumbJsonLd = {
+ "@context": "https://schema.org",
+ "@type": "BreadcrumbList",
+ itemListElement: [
+ {
+ "@type": "ListItem",
+ position: 1,
+ name: "Home",
+ item: "https://parseforge.gg",
+ },
+ {
+ "@type": "ListItem",
+ position: 2,
+ name: "TBC Raid Audit",
+ item: "https://parseforge.gg/tbc-audit",
+ },
+ ],
+};
+
+const faqJsonLd = {
+ "@context": "https://schema.org",
+ "@type": "FAQPage",
+ mainEntity: FAQ.map((f) => ({
+ "@type": "Question",
+ name: f.q,
+ acceptedAnswer: { "@type": "Answer", text: f.a },
+ })),
+};
+
+function severityClass(severity: string) {
+ switch (severity) {
+ case "CRITICAL":
+ return "badge-bad";
+ case "WARNING":
+ return "badge-warn";
+ default:
+ return "badge-info";
+ }
+}
+
+export default function TbcAuditPage() {
+ return (
+
+
+
+
+
+
+ WoW TBC Raid Audit
+
+
+ Paste a Warcraft Logs report URL and ParseForge audits every raider in
+ it — missing enchants, empty gem sockets, flasks, food buffs, weapon
+ oils, raid buffs, and unspent talent points. Free, no account, no
+ addon.
+
+
+
+
+
+
+ Gear checks
+
+
+ Gear is read from the combat log itself, so it reflects what each
+ raider actually had on during the pull — not what they were wearing
+ when they last logged out.
+
+
+ {GEAR_CHECKS.map((c) => (
+
+
+ {c.label}
+ {c.severity}
+
+
+ {c.detail}
+
+
+ ))}
+
+
+
+
+
+ Consumable, buff & talent checks
+
+
+ {CONSUMABLE_CHECKS.map((c) => (
+
+
+
+
+
{c.title}
+
+ {c.body}
+
+
+
+
+ ))}
+
+
+
+
+
+ How to audit your TBC raid
+
+
+
Upload your raid night to Warcraft Logs as usual.
+
Paste the report URL into the box above.
+
+ Open the Buff & Gear Audit{" "}
+ tab to see the whole raid at once.
+
+
+ Filter to a single pull, or to one raider, to work through what came
+ back.
+
+
+
+ Findings are ordered by severity, so missing enchants surface above
+ cosmetic notes. A raid of 25 usually has a handful of genuine problems
+ buried in it, and they tend to be the same two or three people every
+ week.
+
+
+
+
+
+ Frequently asked questions
+
+
+ {FAQ.map((f) => (
+
+
{f.q}
+
+ {f.a}
+
+
+ ))}
+
+
+
+
+
Related guides
+
+
+
+ WoW Classic Raid Preparation Checklist
+ {" "}
+
+ — what to fix before the audit finds it
+
+
+
+
+ How to Analyze WoW Classic Logs
+ {" "}
+
+ — the full report walkthrough
+
+