SEO Audits

SEO Audits 1.4.0

Keine Berechtigung zum Herunterladen
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.



  • 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.

  • 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.

  • 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.
    [*][B]CSV export is formula-injection safe[/B] - user-controlled values (thread titles, URLs, issue detail) that start with =, +, - or @ are quoted so spreadsheets render them as text.
    [*][B]Concurrency hardening[/B] - 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.
    [/LIST]
Fixes duplicate <meta name="description"> tags on thread pages when meta description auto-fix is enabled. Reported by @briansol.

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.

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.

Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. No database migration needed. Code-only 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.



  • 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.

  • 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.

  • False positive BBCode detection - plain-text brackets like [EDIT], [UPDATE], [SOLVED], and date stamps like [2024-01-15] no longer trigger "BBCode pollution" or "BBCode in meta description" issues. Detection now only matches the 35 actual XenForo BBCode tags. Fixed in both the scanner and the runtime meta description fixer.
  • "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.

Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. One upgrade step runs automatically to remove the "thread" sub-option from the JSON-LD injection type selector (thread JSON-LD is now handled by the class extension instead).

The new enrichment option defaults to on - your thread pages will immediately gain the extra structured data properties. All existing scan data, reports, and settings are preserved.
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.

Improvements
  • 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

Upgrading
Upload the ZIP via Admin CP > Add-ons > Install/upgrade from archive. Three upgrade steps run automatically:
  1. Marks any pending scans as failed and adds redirect tracking to URL cache
  2. Adds per-forum tracking to issues
  3. Creates the autofix_log table

All existing scan data and reports are preserved.

Requirements
  • XenForo 2.3.0+
Oben