SEO Audit
A comprehensive SEO auditing dashboard for XenForo administrators. Scan your forum for SEO issues, review detailed reports with severity grades, and auto-fix common problems, all from within your Admin CP.Overview
SEO Audit analyzes your forum across five categories, configuration, schema markup, meta tags, content quality, and link integrity, producing an overall SEO score with a letter grade (A through F). Issues are categorized by severity and presented with actionable recommendations. Each issue includes a "How to fix" recommendation. Where the fix involves a specific AdminCP page, a "Fix it" link takes you straight there.Features
Scanning & Analysis- SEO score with letter grade (A-F) - instant overview of your forum's SEO health
- 5 checker categories - Config, Schema, Meta, Content, and Link checkers cover all major SEO concerns
- Delta scanning - only scan content that changed since the last scan, dramatically reducing scan time on large forums
- Forum and date scoping - target specific forums or date ranges for focused audits
- URL cache - previously checked URLs are cached to avoid redundant HTTP requests during link checks
- Scheduled scans - configure automatic scans via XenForo's cron system
- JSON-LD schema injection - automatically adds structured data markup (CollectionPage for forums/categories, WebPage for pages, WebSite + Organization for homepage)
- Meta description generation - generates missing meta descriptions from content
- Open Graph tags - ensures proper og:title, og:description, and og:image tags are present
Code:
admin.php?seo-audit/auto-fix
Reporting & Tracking
- Score trend charts - track your overall SEO score over time
- Category trend charts - monitor improvement across individual checker categories
- Scan comparison - diff view between any two scan reports to see what changed
- Export as CSV or JSON - download full reports for external analysis or record-keeping
- Email notifications - receive an email summary when scans complete
- Issue severity configuration - customize or completely disable individual issue types
- Detection thresholds - adjust limits for thin content word count, title length, description length, and more
- Issue dismissal - hide known or accepted issues from reports without affecting the scan
Requirements
- XenForo 2.3.0 or later
- PHP cURL extension (for link checking)
Installation
- 1- Download and extract the release ZIP
- 2- Upload the
Code:
Qubn/SEOAudit
Code:
src/addons/
- 3- Go to Admin CP > Add-ons and click Install/upgrade from archive, or install via CLI:
Code:
php cmd.php xf-addon:install Qubn/SEOAudit
Getting Started
1- After installation, go to Admin CP > Tools > SEO Audit2- Click Run new scan to perform your initial full audit
3- Review issues grouped by category and severity
4- Issues with a specific AdminCP fix (configuration, forum descriptions, style properties) have a Fix it link that takes you directly to the right page
5- For automatic corrections, visit
Code:
admin.php?seo-audit/auto-fix
6- Customize thresholds and severity levels under Admin CP > Setup > Options > SEO Audit
7- (Optional) Set up a cron schedule for automatic periodic scans
Support
If you encounter any issues or have feature requests, please use the discussion tab on this resource page. When reporting problems, include:- Your XenForo version
- PHP version
- Any relevant entries from
Code:
xf_error_log
- Steps to reproduce the issue
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Version 1.0.1 SEOAudit - Fix JSON-LD page type checkboxes on Options page :
Bug Fixes
Bug Fixes
- Fixed JSON-LD page type checkboxes not rendering on the Options page (Admin CP > Setup > Options > SEO Audit). The four type checkboxes (forums, categories, pages, homepage) now display correctly below the JSON-LD toggle.
- Improved option explanation text to reference both the Options page and the Auto-Fix page for configuration.
- Existing v1.0.0 installs upgrade seamlessly
- No database migration needed
- Install via AdminCP > Add-ons > Install/upgrade from archive
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEO Audit v1.1.0 Update
v1.1.0 adds webhook notifications, a CLI scanner, email alerts, impact ranking, and more.
New Features
Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. Three upgrade steps run automatically:
Requirements
v1.1.0 adds webhook notifications, a CLI scanner, email alerts, impact ranking, and more.
New Features
- Webhook notifications - send scan results to Discord or Slack when a scan completes.
- CLI scanner - run scans from the command line with qubn-seoaudit:scan. Supports flags for delta mode, forum targeting, date ranges, email notifications, and more.
- Email notifications - receive an email when scans complete. Works with scheduled scans and CLI --email flag.
- Critical issue alerts - get emailed when new critical issue types appear.
- Score improvement hints - actionable suggestions showing which fixes will boost your SEO score the most.
- Impact-ranked issues - issues are now ranked by priority score (severity x frequency), so you fix what matters first.
- Per-forum breakdown - see how issues are distributed across your forums.
- BreadcrumbList JSON-LD - auto-injects BreadcrumbList structured data on all pages with breadcrumbs.
- ALL CAPS title case correction - auto-fix converts ALL CAPS thread titles to title case at render time.
- Auto-fix audit log - full log of every auto-fix injection with date, type, URL, and injected HTML. Includes debug logging toggle.
- AdminCP dashboard widget - your current SEO score and grade displayed on the main AdminCP page.
- Category trend chart - stacked bar chart showing config/schema/meta/content/links/HTML issue counts over time.
- Bulk dismiss and dismiss-by-type - dismiss multiple issues at once, with undo support.
- Autofix page buttons now render inline (no longer stacking vertically)
- Fix it buttons use primary styling for better visibility
- Scan form integrated directly into the dashboard
- Scheduled scan frequency shown on dashboard
- Autofix log now humanizes raw identifiers (e.g., "missing_meta_description" → "Missing Meta Description")
- All user-facing text fully phraseified for i18n readiness (160+ new phrases)
- Fixed issue config page crash when option value is already decoded as array by XF
Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. Three upgrade steps run automatically:
- Marks any pending scans as failed and adds redirect tracking to URL cache
- Adds per-forum tracking to issues
- Creates the autofix_log table
Requirements
- XenForo 2.3.0+
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEO Audit v1.2.0 Update
v1.2.0 adds runtime auto-fix for thread pages, a periodic digest email, and graceful handling of restricted HTTP environments.New Features
- Thread meta description auto-fix - generates fallback descriptions for threads with empty or very short first posts. Cleans BBCode artifacts that slip through XF's regex stripping, and extends short descriptions (<120 chars) with forum and board context.
- Thread JSON-LD - injects DiscussionForumPosting structured data on thread pages with headline, author, dates, and parent forum. Falls back to "Community Member" for deleted or banned authors.
- Email digest - periodic SEO summary email (weekly, biweekly, or monthly) with score trend, scan count, and issue breakdown by severity. Uses the same recipient list as scan alerts, or falls back to the board contact email.
- Graceful HTTP failure handling - link and image checking detects when outbound HTTP is blocked (e.g., restricted hosting environments) and stops gracefully with an informational issue instead of failing the scan.
- Thread sub-option in JSON-LD type selector - enable thread JSON-LD independently from forum, category, page, and index types.
New Options
- Enable digest email (on/off, default off)
- Digest interval (weekly / biweekly / monthly, default weekly)
New Cron Entry
- SEO Audit: Send digest email - checks daily at 06:00, sends only when the configured interval has elapsed.
SEO Audit v1.3.0 Update
v1.3.0 enriches thread structured data by extending XF core's output instead of injecting duplicates, adds drill-down navigation for large reports, and fixes several issues reported by users.New Features
- Thread JSON-LD enrichment - extends XF core's native DiscussionForumPosting via class extension to add commentCount, isPartOf (DiscussionForum with forum name and URL), and author fallback for deleted/banned users. No more duplicate structured data blocks on thread pages.
- Clickable issue counts - every count in the report view is now a link. Click severity counts, category counts, issue summary totals, or per-forum breakdown numbers to drill down to a filtered view instantly.
- Impact sort - sort the full issue list by impact score (page views × severity weight). New "View all issues sorted by impact" link below the top-10 ranking.
- Per-page selector - choose 50, 100, 200, or 500 issues per page in the report view. Useful for forums with large scan results.
- Scanner enrichment detection - three new info-level issue types flag when the enrichment option is disabled: missing commentCount, missing isPartOf, and missing author fallback.
New Option
- Enrich thread JSON-LD (on/off, default on) - toggle under SEO Audit > Auto-Fix. Adds the three enrichment properties to XF core's thread structured data output.
Bug Fixes
- False positive BBCode detection - plain-text brackets like [EDIT], [UPDATE], [SOLVED] no longer trigger false positives. Detection now uses a whitelist of 35 actual XenForo BBCode tags instead of a generic bracket regex.
- "How to fix" toggle - clicking the link on report issues now correctly reveals the recommendation text. Previously appeared to do nothing due to a CSS/JS interaction bug.
- URL extraction - plain URLs with quoted query parameters are no longer truncated. IMG tag extraction handles alt text containing brackets.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEO Audit v1.3.1 - Bug Fixes & False Positive Reduction
v1.3.1 addresses the issues reported by @briansol, @frpsucre, and @akok after v1.3.0. The main focus is eliminating false positive BBCode detections on forums with legacy content and fixing a crash when scanning threads with emoji or very long titles.Bug Fixes
- BBCode false positive refinements - tightened the v1.3.0 BBCode whitelist further. Single-letter tags like
[s], [b], [i]no longer match when followed by a lowercase letter (e.g.,[s]ome, [b]efore). Also applied the same strict matching to the runtime meta description fixer. - Emoji/long thread titles crash - threads with emoji characters or very long titles no longer crash the scan. Content URL and title fields are now safely truncated with
mb_strcut()to respect UTF-8 boundaries and column limits. - Homepage H1 heuristic - the check now fetches actual homepage HTML instead of guessing from an unrelated style property, eliminating false "missing H1" reports.
- Excessive formatting false positive - posts with lots of newlines but no actual BBCode (e.g., data table threads) no longer trigger "excessive BBCode formatting".
- Admin widget link - fixed double-encoded URL that produced "report not found" errors when clicking "View report" on the dashboard widget.
- Meta description truncation - BBCode check now uses the full message instead of a truncated version, preventing false positives from truncation breaking tag pairs.
- BBCode severity - "Thread BBCode in meta description" downgraded from critical to warning severity.
- Non-indexed forums - zero-views and thin-thread checks are now skipped for non-indexed forums (staff-only threads are expected noise).
- robots.txt false positive -
Disallow: /rules targeting specific bots (e.g.,User-agent: BadBot) no longer trigger the "broad Disallow" warning. Only rules underUser-agent: *are flagged. - Internal link entity false positives - HTML entities like
&#039;and&amp;in BBCode URL attributes are now decoded before link checking. URLs containing these entities are no longer falsely reported as broken. - Sitemap XML parsing - handles gzip-compressed sitemaps, strips UTF-8 BOM, detects HTML responses (login redirects), and now includes the XML parse error and response snippet in the issue detail for easier debugging.
SEO Audit v1.3.2 - URL Extraction Fix
Fixes a remaining issue reported by @akok where internal and external links were flagged as broken due to a trailing quote being appended during URL extraction.Bug Fix
- Link checker trailing quote - the plain URL regex was re-matching inside already-parsed
[URL='...']BBCode blocks, capturing the closing quote as part of the URL. This caused valid links to be reported as broken with&#039;appended. The fix strips all[URL]blocks before running the plain URL regex, making duplicate extraction impossible.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEO Audit v1.3.3 - Sitemap Parsing Fix
Bug Fix
- Sitemap XML false positive on large sitemaps - the scanner used streamed reads capped at 512KB, which truncated large sitemaps mid-tag and caused false "invalid XML" errors. Now reads the full response body (capped at 10MB for safety). Tested against a 2.1MB sitemap with 14,743 URLs.
Upgrading
- Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. No database migration needed. Code-only update.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEOAudit v1.3.4 - Duplicate Meta Description Fix :
_ Fixes duplicate
<meta name="description"> tags on thread pages when meta description auto-fix is enabled.Bug Fix
- Thread pages no longer produce two meta description tags. The addon now replaces XF's default tag instead of adding a second one alongside it. SEO tools (ahrefs, etc.) will no longer flag duplicate meta descriptions.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
SEO Audit v1.4.0 - Grant access without super-admin, faster auto-fix-log cleanup, and a hardening pass
This release is driven by your feedback. The two most-requested items are in (a dedicated permission and an easy-to-find auto-fix log), the auto-fix log cleanup that was locking up on big boards is fixed, and the whole add-on went through a deep security/robustness pass.New
- Dedicated "SEO Audit" admin permission - You can now grant SEO Audit to a specific moderator or administrator without giving them super-administrator (or the broad "Checks and tests") access. After upgrading, tick the new "SEO Audit" permission on the admin accounts that should have it. (Requested by Alfre_DGR.)
- Auto-fix log is easy to find - "Auto-fix settings" and "Auto-fix log" now appear under SEO Audit in the AdminCP sidebar, with a link on the dashboard too. (Asked about by rdn.) Note: that log only records entries while the "Debug logging" option is enabled.
- "Clear log" button - empty the auto-fix log instantly from the log page.
- Issue configuration is now reachable from the UI - the page where you disable issue types, override severities, and tune detection thresholds now has its own sidebar entry and a dashboard button (previously it was only reachable by typing the URL). All seven detection thresholds are now adjustable, with input limits that match what the scanner actually accepts.
- Broken-image checking in the scan form - the "Check for broken images" option is now on the scan form, not just the CLI.
Fixed
- Auto-fix log cleanup no longer locks the database - The daily cleanup now deletes in bounded batches instead of one large statement, so it can never hold a long table lock or saturate disk I/O, even if the debug log has grown into the millions of rows. (Reported by Enes3078. If you don't need the debug log, just leave "Debug logging" off and the table stays empty.)
- "Sort by impact" works - the report's impact sort now orders by a real indexed column instead of a JSON expression, which fixes an error on newer MySQL and makes it scale (it fetches only what it needs instead of loading thousands of rows).
- Dismissing broken-link and image issues now sticks - previously, dismissing a broken-link / image / redirect / soft-404 issue (single or bulk) silently failed to suppress it and it came back on the next scan. Both dismiss paths now store the dismissal correctly.
- Clearer dismiss feedback - dismissing an issue now shows a confirmation, notes that it applies on the next scan, and keeps your current page, filter and sort instead of bouncing you back to page 1.
- Page structured data and meta descriptions - JSON-LD for CMS pages now emits a valid WebPage with a publish date, and the page meta-description auto-fix actually works now (it was silently doing nothing). This also removes a stray "unknown getter" entry that could fill the server error log on page views.
Security & robustness
- SSRF protection on link and image checks - external link and URL checks now fetch through XenForo's SSRF-safe HTTP reader, which blocks private and link-local IPs (including cloud metadata), private TLDs and non-standard ports. The internal-link and soft-404 checks no longer follow redirects off your board's host. This closes a vector where a member could make a scan probe internal network endpoints via a hotlinked image or external link.
- CSV export is formula-injection safe - user-controlled values (thread titles, URLs, issue detail) that start with =, +, - or @ are quoted so spreadsheets render them as text.
- Concurrency hardening - scan starts are serialised (no duplicate reports from a double-click), a cancelled scan cleans up after itself, the runaway issue cap is now enforced per report, and a report deleted mid-scan is handled cleanly. A new daily cron prunes stale dismissals for deleted content.
Upgrade
Non-destructive. v1.4.0 adds and backfills one column on the issue table (verified: a v1.3.4 to v1.4.0 upgrade produces a schema identical to a fresh install, with all existing reports and dismissals preserved). Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. Afterwards, grant the new SEO Audit admin permission to any non-super administrators who should use it.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Pièces jointes

