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/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", 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 ( +
+