Deep Page Analysis: SEO Audit Walkthrough with Real Data
Most SEO tools check the basics — is your title tag present, is your meta description the right length, do you have an H1. That is useful, but it is surface-level. It tells you nothing about whether your content is readable, whether AI engines can cite it, or whether your link profile is helping or hurting.
A deep page analysis goes further. It checks rendering and framework detection, readability scoring (Flesch-Kincaid), content humanness, E-E-A-T signals, link quality, and 18 AEO signals. This walkthrough shows you what a complete analysis looks like and how to act on every section.
What Makes a Deep Analysis Different
A surface-level audit checks maybe 10 things: title, description, H1, canonical, robots, OG tags, and a few more. A deep analysis checks over 50 signals across six categories:
- Technical SEO — canonical, robots, viewport, charset, lang, HTTPS, OG tags, heading structure, title/description length
- Rendering — framework detection, rendering type (CSR/SSR/SSG), SPA detection, SEO impact assessment
- Content Quality — readability (Flesch Reading Ease, Flesch-Kincaid Grade), humanness scoring, E-E-A-T signals, content depth
- Link Health — internal/external link counts, anchor text quality, broken link detection
- AEO Signals — all 18 schema and content structure signals for AI citation readiness
- Recommendations — prioritized, actionable fixes based on all detected issues
By the end of this walkthrough, you will know how to run this analysis and what to do with every piece of data it returns.
Step 1: Crawl the Page
Start by crawling the page you want to analyze:
$ xyle crawl --url https://example.com/blog/my-post --json
This returns a comprehensive JSON object with six sections: technical_seo, rendering, content_quality, links, aeo_signals, and page metadata. The crawl fetches the page, parses the DOM, detects the framework, extracts structured data, and computes all signals.
Let us walk through each section using real output.
Step 2: Technical SEO Checklist
The technical_seo section is your foundation. If these checks fail, nothing else matters — crawlers may not index the page at all.
{
"technical_seo": {
"has_canonical": true,
"canonical_url": "https://example.com/blog/my-post",
"has_robots_meta": true,
"robots_content": "index, follow",
"has_viewport": true,
"has_charset": true,
"has_lang": true,
"lang": "en",
"is_https": true,
"has_og_tags": true,
"og_title": "My Blog Post Title",
"og_description": "A description for social sharing...",
"h1_count": 1,
"title": "My Blog Post Title — Example",
"title_length": 35,
"meta_description": "A concise description with target keywords...",
"meta_description_length": 52
}
}
Here is what to check:
has_canonical: true— Every page needs a canonical URL. Without it, search engines may treat URL variants (with/without trailing slash, query parameters) as duplicate content.h1_count: 1— Exactly one H1 per page. Zero means missing primary heading. Two or more means the page hierarchy is ambiguous.title_length: 35— This is short. The ideal range is 50-60 characters. Titles under 50 leave ranking potential on the table. Titles over 60 get truncated in search results.meta_description_length: 52— This is too short. Aim for 120-155 characters. Short descriptions mean Google will auto-generate one from your page content, and that auto-generated snippet is usually worse than what you would write.is_https: true— Non-negotiable. HTTPS is a ranking signal and a trust signal. If this is false, fix it before anything else.has_og_tags: true— Required for social sharing. Without OG tags, social platforms generate their own preview from your page — and it usually looks bad.has_lang: true— Tells search engines what language your content is in. Missinglangattributes can hurt rankings in international search.
Common Failures and Fixes
| Check | Common Failure | Fix |
|-------|---------------|-----|
| Canonical | Missing or self-referencing with wrong protocol | Add <link rel="canonical" href="..."> with full HTTPS URL |
| H1 Count | 0 or 2+ | Ensure exactly one <h1> in page content |
| Title Length | Under 50 chars | Expand title to include target keyword and value prop |
| Meta Description | Under 120 chars | Write a 120-155 character description with call to action |
| OG Tags | Missing og:image | Add 1200×630px OG image for every page |
Step 3: Content Quality Deep Dive
This is where deep analysis separates from basic SEO tools. The content_quality section measures four dimensions of your content.
Readability Scores
{
"content_quality": {
"flesch_reading_ease": 62.4,
"flesch_kincaid_grade": 8.2,
"word_count": 1847,
"sentence_count": 98,
"avg_sentence_length": 18.8,
"heading_count": 12,
"list_count": 4,
"image_count": 3
}
}
Flesch Reading Ease measures how easy your text is to read on a 0-100 scale:
| Score | Level | Audience | |-------|-------|----------| | 90-100 | Very Easy | 5th grade | | 80-89 | Easy | 6th grade | | 70-79 | Fairly Easy | 7th grade | | 60-69 | Standard | 8th-9th grade | | 50-59 | Fairly Difficult | 10th-12th grade | | 30-49 | Difficult | College | | 0-29 | Very Difficult | Graduate/Professional |
For technical content aimed at developers, a score of 50-65 is typical and appropriate. For general audience content, aim for 60-70. A score of 62.4 is solid for a technical blog post.
Flesch-Kincaid Grade translates readability to a US grade level. A grade of 8.2 means an 8th grader could understand the text. For developer content, grades 8-12 are normal. Above 12 suggests overly complex sentence structure — not necessarily complex ideas, but complex writing.
Average Sentence Length of 18.8 words is slightly above the 15-word AEO threshold. For AI engines to easily extract and cite your content, shorter sentences are better. This does not mean dumbing down the content — it means breaking compound sentences into simpler ones.
Humanness Score
The humanness score detects whether content reads like it was written by a human or generated by AI. It measures three signals:
- Sentence length variance — Human writing has natural variation in sentence length. AI-generated text tends toward uniform length. High variance is more human.
- Pronoun usage — Human writers use personal pronouns ("you", "we", "I") more naturally and frequently than AI. Low pronoun density suggests AI generation.
- Trigram repetition — AI models tend to repeat three-word phrases more often than human writers. High trigram repetition suggests AI content.
The score ranges from 0 to 1, where higher is more human. This is not about penalizing AI-assisted content — it is about ensuring your content has the natural patterns that readers (and search engines) expect.
E-E-A-T Score
E-E-A-T stands for Experience, Expertise, Authoritativeness, and Trustworthiness — Google's framework for evaluating content quality. The E-E-A-T score checks for concrete signals:
- Author information — Is there a byline? Does it link to an author page?
- Publication dates — Are
datePublishedanddateModifiedpresent? - Source citations — Does the content link to authoritative external sources?
- Expert indicators — Are there quotes, credentials, or first-hand experience signals?
A low E-E-A-T score does not mean your content is bad — it means the signals that Google uses to assess quality are missing from the page structure. Adding an author bio, publication date, and a few authoritative citations can significantly improve this score.
Step 4: Link Health Check
Links are both a navigation tool and a quality signal. The links section of a crawl shows your page's link profile:
{
"links": {
"internal_links": 8,
"external_links": 5,
"total_links": 13,
"unique_anchors": 11,
"generic_anchors": 2,
"generic_anchor_examples": ["click here", "read more"],
"external_domains": ["schema.org", "web.dev", "developer.mozilla.org"],
"nofollow_count": 0
}
}
What to Check
Internal links (8): Your page should link to other relevant pages on your site. This distributes page authority and helps crawlers discover content. Aim for at least 3-5 internal links per post, pointing to related content.
External links (5): Outbound links to authoritative sources signal trustworthiness. Linking to documentation, research papers, or official specs tells search engines and AI engines that your content is well-sourced. The domains here — schema.org, web.dev, MDN — are excellent choices.
Generic anchors (2): "Click here" and "read more" are wasted anchor text. Anchor text should describe what the linked page is about. Instead of "click here to learn about SSR," write "learn about server-side rendering." Descriptive anchors help both SEO and accessibility.
External link ratio: A healthy ratio is 60-80% internal, 20-40% external. A page with all internal links looks insular. A page with all external links sends authority away. This page's 62% internal / 38% external is good.
Step 5: Run the Full Analysis
Crawling gives you raw signals. Analysis computes scores, applies weights, and generates recommendations:
$ xyle analyze --url https://example.com/blog/my-post --content "..." --json
The output includes an overall SEO score broken into four sub-scores:
{
"seo_score": 0.74,
"seo_breakdown": {
"technical_seo": 0.88,
"on_page_seo": 0.72,
"content_quality": 0.68,
"link_quality": 0.70
},
"aeo_score": 0.61,
"recommendations": [...]
}
How the Weighted Average Works
The overall seo_score is a weighted average of four sub-scores:
| Sub-Score | Weight | What It Measures | |-----------|--------|------------------| | Technical SEO | 25% | Canonical, robots, viewport, HTTPS, structured data | | On-Page SEO | 30% | Title, meta description, headings, keyword usage | | Content Quality | 25% | Readability, humanness, E-E-A-T, content depth | | Link Quality | 20% | Internal/external balance, anchor text, link count |
In this example:
- Technical SEO (0.88 × 0.25) = 0.220
- On-Page SEO (0.72 × 0.30) = 0.216
- Content Quality (0.68 × 0.25) = 0.170
- Link Quality (0.70 × 0.20) = 0.140
- Total: 0.746 (rounded to 0.74)
Where to Focus Effort
Look at which sub-score is lowest — that is where improvement has the most impact. In this example, Content Quality (0.68) is the weakest. Improving readability, adding author information, or including more citations would raise the overall score more than perfecting technical SEO from 0.88 to 0.95.
The AEO score of 0.61 tells you AI engines can cite some of your content, but not all. Adding FAQ schema and more concise answer paragraphs would push this above 0.7.
Step 6: Act on Recommendations
The recommendations array contains prioritized, actionable fixes:
{
"recommendations": [
{
"priority": "critical",
"category": "on_page",
"message": "Meta description is too short (52 chars). Expand to 120-155 characters with target keywords and a call to action."
},
{
"priority": "important",
"category": "content",
"message": "Average sentence length (18.8 words) exceeds AEO threshold. Shorten sentences to 15 words or fewer for better AI citation readiness."
},
{
"priority": "important",
"category": "aeo",
"message": "No FAQPage schema detected. Add FAQ JSON-LD for question-answer content to improve AI citation rates."
},
{
"priority": "nice_to_have",
"category": "content",
"message": "Add author bio with credentials or experience indicators to improve E-E-A-T signals."
},
{
"priority": "nice_to_have",
"category": "links",
"message": "Replace 2 generic anchor texts ('click here', 'read more') with descriptive anchor text."
}
]
}
How to Prioritize
Work through recommendations in priority order:
-
Critical — These directly prevent indexing or cause significant ranking harm. Fix them immediately. In this case, the meta description is too short — it takes 2 minutes to fix and affects every search result listing.
-
Important — These have measurable ranking impact but are not blocking. Schedule them for your next content update. Shortening sentences and adding FAQ schema are both high-impact changes.
-
Nice to Have — These improve quality but have smaller individual impact. Batch them together when you are already editing the page.
Example: Fixing the Meta Description
The critical recommendation says the meta description is 52 characters — far below the 120-155 character target. Here is the fix:
// Before — too short
export const metadata = {
description: "A concise description with target keywords...",
};
// After — 148 characters with keyword and CTA
export const metadata = {
description:
"Walk through a complete SEO and AEO page analysis with real data. Technical SEO checks, readability scores, link health, and prioritized recommendations.",
};
That is a 2-minute change that improves how your page appears in every search result listing. Google displays the meta description as the snippet under your title — a better snippet means a higher click-through rate at the same ranking position.
Getting Started
Run your first deep analysis in 30 seconds:
$ npm install -g @xyleapp/cli
$ xyle login
$ xyle crawl --url https://yoursite.com/page --json
That gives you raw signals. To get scored analysis with recommendations:
$ xyle analyze --url https://yoursite.com/page --content "..." --json
Or skip the CLI and use the Xyle dashboard — paste a URL and get a visual analysis with score rings, signal checklists, and a prioritized recommendation list.
The pages that rank well and get cited by AI engines are not the ones with the most content. They are the ones with the right structure, the right signals, and the right quality markers. A deep analysis tells you exactly where you stand and exactly what to fix. Start with one page, work through the recommendations, and watch your scores climb.
Ready to optimize your search rankings?
Xyle connects to Google Search Console, analyzes content gaps with AI, and gives you actionable fixes — from the terminal or dashboard.