DRUPAL SEO AUDIT · PATHAUTO · METATAG · AI VISIBILITY
Free Drupal SEO Audit
Drupal's SEO quality depends almost entirely on which modules are installed and configured. DeepSEOAnalysis audits Drupal sites and identifies Pathauto gaps, Metatag coverage holes, XML Sitemap configuration issues, and AI visibility signals — with module names and admin paths for each fix.
WHAT WE CHECK
6 Drupal-specific SEO checks
Beyond the 80+ general checks, the engine applies Drupal-aware analysis — detecting numeric node URL patterns, missing Metatag module output, XML Sitemap configuration gaps, and AI visibility signals — with specific module names and Drush commands for each fix.
Pathauto URL alias configuration
By default, Drupal assigns numeric node IDs to content: `/node/42`, `/node/43`. These URLs carry no keyword signal — Googlebot sees a number, not a topic. The Pathauto module (`drupal/pathauto`) auto-generates clean URL aliases based on configurable patterns. A typical pattern for articles: `[node:content-type]/[node:title]` generates `/article/my-post-title`. For taxonomy terms: `[term:vocabulary]/[term:name]` generates `/category/drupal-seo`. Pathauto requires the Token module as a dependency and applies patterns retroactively to existing content when bulk-generating aliases. Common gaps: Pathauto is installed but the pattern isn't set up for all content types; aliases are generated but the original `/node/N` paths still resolve (they should 301-redirect to the alias); content imported programmatically bypasses Pathauto and retains numeric paths. The audit checks URL patterns across all crawled pages and flags numeric-node URLs as critical on-page issues.
Metatag module coverage
Drupal's core doesn't provide per-node meta description or OG tag management. The Metatag module (`drupal/metatag`) adds a metadata field to every content entity — nodes, taxonomy terms, user profiles — with global defaults and per-entity overrides. It also handles OG tags, Twitter Card, canonical URLs, and robots meta (noindex/nofollow) per-entity. Configuration flow: install → configure global defaults for each content type in `/admin/config/search/metatag` → set content-type-specific defaults using tokens (`[node:summary]` for description) → allow editors to override per entity if needed. Common gaps: Metatag is installed but the description default is `[node:summary]` and the Summary field is never filled in by content editors (resulting in blank meta descriptions); OG tags use the site name rather than content-specific values; there are no per-page canonical URL overrides for pages that need non-default canonicals. The audit checks every crawled page for a unique, non-empty title tag and meta description.
XML Sitemap module
The `xmlsitemap` module generates `sitemap.xml` from Drupal's content entities — nodes, taxonomy terms, and menu links — at a configurable path (default `/sitemap.xml`). Configuration checklist: enable xmlsitemap, select which entity types and bundles to include (only published, indexable content types), set `lastmod` to use the node `changed` timestamp, exclude admin pages and utility paths (user profile pages, search results, `/admin/*`). The sitemap regenerates on a cron schedule — ensure Drupal cron runs at least daily. Common gaps: the sitemap includes unpublished or password-protected nodes; taxonomy term pages with thin content are included; the `Sitemap:` directive is missing from `robots.txt`; the sitemap is excessively large (Drupal sites with thousands of nodes may need a sitemap index with multiple files — the xmlsitemap module handles this automatically but it needs to be verified). The audit checks sitemap presence, URL count, `lastmod` recency, and the Sitemap directive.
robots.txt and AI crawler access
Drupal ships with a default `robots.txt` in the web root (the `web/` or `docroot/` directory that your nginx/Apache server points to). The default blocks many Drupal-specific paths: `/admin/`, `/comment/reply/`, `/filter/tips`, `/user/`, `/node/add`, and others. These defaults are generally correct. Common gaps in the default: AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Applebot-Extended) are not explicitly allowed — the default `User-agent: *` block with selective Disallow rules implicitly allows all crawlers, but some Drupal security modules add broad Disallow rules that accidentally block AI bots; the file lacks a `Sitemap:` directive referencing the xmlsitemap output; `/search/` and `/node` (the numeric node path prefix) are not always disallowed, allowing thin or duplicate content to be crawled. Note: `robots.txt` in a Drupal Composer-based project (Drupal 8+) lives in `web/robots.txt` and is committed to the repo — edits must be deployed, not made via FTP. The audit checks the file at `/robots.txt`, all AI crawler user-agents, and common Drupal utility path patterns.
Server-rendered PHP output
Drupal renders pages server-side via PHP and its Twig template engine. Every HTTP response is a complete HTML document — content, headings, metadata, and structured data all appear in the initial response before any JavaScript runs. Googlebot receives the full page content immediately with no rendering queue delay. This is Drupal's core SEO infrastructure advantage over SPA frameworks. The audit verifies that crawled pages deliver complete HTML on the first request and flags any Drupal pages where content is deferred via JavaScript after the initial render — common in Drupal sites that have added React or Vue frontends to specific sections (Decoupled Drupal), where those sections may appear empty to crawlers.
AI visibility for Drupal sites
Serve `llms.txt` by placing it in Drupal's web root (`web/llms.txt`) — nginx or Apache will serve it at `/llms.txt` via the same static file handling as `robots.txt`. FAQPage JSON-LD can be added via: (a) the Schema.org module (`drupal/schema_metatag`) which auto-generates FAQPage schema from FAQ content types; (b) a custom Drupal block in the Twig template rendering inline JSON-LD; or (c) a custom module rendering a `#type = 'html_tag'` render element with `script` type. Article JSON-LD for blog posts is typically handled by the Schema.org module automatically. The audit checks all five AI visibility signals — llms.txt presence, AI crawler access, FAQPage/HowTo schema, question-heading ratio (≥20%), and content chunkability (avg section ≤400w) — with Drupal module names and configuration paths for each fix.
HOW IT WORKS
Audit your Drupal site in 60 seconds
- Enter your Drupal site URL. Works with any Drupal version (7, 9, 10, 11) on any host: Pantheon, Acquia, Platform.sh, Kinsta, WP Engine (for Drupal), or self-hosted. No Drupal admin access, Drush, or database credentials needed — the audit crawls the live site.
- We crawl and analyse. The engine crawls up to 50 pages (free) or 1,000 pages (paid), detects numeric node URL patterns, checks Metatag module output per page, validates JSON-LD structured data, tests the sitemap and robots.txt, measures CrUX Core Web Vitals, and evaluates all five AI visibility signals.
- You get a prioritised report. Drupal-aware issues first — Pathauto gaps, missing Metatag descriptions, XML Sitemap configuration, AI crawler access, Schema.org module recommendations — then general SEO, each with the specific module name, Drush command, or `/admin/` path to fix it.
FAQ
Questions about the Drupal SEO audit
Does DeepSEOAnalysis detect Drupal-specific SEO issues?
Yes. The engine detects Drupal signatures — PHP server-rendered HTML, Drupal's default node path patterns (`/node/N`), and common Drupal module indicators — and surfaces module-specific guidance alongside the 80+ general checks. It distinguishes between Drupal sites that have installed Pathauto and Metatag modules (often well-configured) and bare Drupal installations where these critical SEO modules are missing.
What is the most important Drupal SEO module?
Pathauto, which auto-generates clean URL aliases from content titles (e.g. `/blog/my-article-title` instead of `/node/42`). Without Pathauto, all Drupal content URLs are numeric node paths with no keyword signal. After Pathauto, the Metatag module (for meta descriptions and OG tags), XML Sitemap (for sitemap.xml generation), and the Schema.org module or JSON-LD custom blocks (for structured data) round out the essential SEO module stack.
How do I add a sitemap to Drupal?
Install and enable the `xmlsitemap` module (Drupal 10: `composer require drupal/xmlsitemap && drush en xmlsitemap`). In the XML Sitemap settings, enable the content types you want included, set `lastmod` to the node changed timestamp, and exclude admin, user, and utility paths. Configure the `Sitemap:` directive in `robots.txt` (Drupal's default `robots.txt` in the web root needs a `Sitemap: https://yoursite.com/sitemap.xml` line added). The audit checks sitemap presence, URL coverage, and the Sitemap directive.
Is the Drupal SEO audit free?
Yes. The complete audit is free with no signup and no email gate. Paid plans add saved history, scheduled monitoring, larger crawls (up to 1,000 pages), and agency workflows.