---
title: "On-page SEO — seo-mcp"
description: "Titles, content, intent match, E-E-A-T and internal linking."
url: "https://seo-mcp.io/c/on-page"
---

# On-page SEO

Titles, content, intent match, E-E-A-T and internal linking.

Underlying category: [On-page SEO](https://seo-mcp.io/c/on-page) (28 tips).

- [Generate social images with opengraph-image.tsx](https://seo-mcp.io/t/generate-social-images-with-opengraph-image-tsx) — The App Router reads opengraph-image files as social cards for each route. Export a small ImageResponse component that renders the title and brand, set size and contentType, and add route-level files where the default card is wrong. Confirm the rendered tags point at the generated image and that the image returns 200 with the expected dimensions.
- [Consolidate thin and duplicate pages](https://seo-mcp.io/t/consolidate-thin-and-duplicate-pages) — Thin pages targeting the same topic compete with each other. Group URLs by shared queries and near-duplicate titles, choose the strongest by impressions and links, merge unique material, and 301 the losers. Keep pages that serve genuinely different intent.
- [Write unique title tags](https://seo-mcp.io/t/write-unique-title-tags) — The title element is the main input for the search result link, and Google rewrites vague or duplicated titles. Write one unique title per page, aim for 50 to 60 characters, front-load the distinguishing phrase and keep the brand short at the end. Audit duplicates before adding keywords.
- [Add original data or first-hand expertise](https://seo-mcp.io/t/add-original-data-or-first-hand-expertise) — Original data and first-hand experience are the hardest parts of E-E-A-T to fake. Publish test results, benchmarks, screenshots or interviews, state sample size and date range, and cite primary sources. Update the data when it changes and keep past versions verifiable.
- [Add author bios with credentials](https://seo-mcp.io/t/add-author-bios-with-credentials) — An author bio with verifiable credentials connects content to a real person. Show name, role, relevant experience and links to professional profiles, and link the byline to a dedicated author page. Use Person markup, keep bios current, and never invent expertise or personas.
- [Add alt text to images](https://seo-mcp.io/t/add-alt-text-to-images) — Alt text describes an image for people who cannot see it and for crawlers that cannot read pixels. Write what the image shows in context, keep it under about 125 characters, and use an empty alt for decorative images. Make alt text a required field on upload.
- [Use exactly one H1 per page](https://seo-mcp.io/t/use-exactly-one-h1-per-page) — Each page needs one H1 that names its topic. Multiple H1s usually come from logos or reused components that each include a heading. Audit rendered HTML, keep the H1 visible and near the main content, and let H2 and H3 carry the subsections. One H1 is a structure fix, not a ranking trick.
- [Structure headings as H1, H2 and H3](https://seo-mcp.io/t/structure-headings-as-h1-h2-and-h3) — Headings describe document structure for readers, assistive technology and extraction tools. Use one H1, H2 for main sections and H3 for subsections without skipping levels. Style with classes rather than heading tags, and make each heading a specific statement instead of a generic label.
- [Build internal links with descriptive anchors](https://seo-mcp.io/t/build-internal-links-with-descriptive-anchors) — Internal links pass context and help crawlers discover pages. Use anchor text that names the destination, link from body copy where the link is useful, and keep important pages within three clicks of the homepage. Do not nofollow internal links, and fix links that point at redirects.
- [Refresh stale content on a schedule](https://seo-mcp.io/t/refresh-stale-content-on-a-schedule) — Content decays as facts change and competitors update. Review pages that lost clicks or impressions over three months, refresh facts, examples, screenshots and internal links, and change dateModified only for substantive updates. Track the page for four to six weeks after the update.
- [Run internal-link outreach](https://seo-mcp.io/t/run-internal-link-outreach) — Existing pages already pass authority. Find pages that link to outdated, thin or competing resources and ask their owners to point the link at your stronger page. Mine unlinked brand mentions as a second source. Send a short personalised email that names the page and the replacement, then follow up once and track replies.
- [Add OG and Twitter cards](https://seo-mcp.io/t/add-og-and-twitter-cards) — Open Graph and Twitter card tags control how links render in feeds, chats and some assistants. Set og:title, og:description, og:url, og:type and an absolute og:image, plus twitter:card and matching fields. Generate them per page and make og:url equal the canonical.
- [Fix orphan pages with internal links](https://seo-mcp.io/t/fix-orphan-pages-with-internal-links) — Orphan pages have no internal links, so crawlers find them late or never. Compare a crawl's URL set with the sitemap and analytics landing pages. Link orphans from related content, category pages or a hub, and keep the sitemap as a discovery aid rather than the only path.
- [Write unique titles and descriptions in Next.js](https://seo-mcp.io/t/write-unique-titles-and-descriptions-in-next-js) — Next.js resolves metadata from the page up to the layout, so a title set once in the root layout repeats on every route. Export a title and description per page, or generate them from record data in generateMetadata. Use title.template for the site suffix, keep descriptions unique, and verify the rendered HTML rather than the component source.
- [Write meta descriptions that earn clicks](https://seo-mcp.io/t/write-meta-descriptions-that-earn-clicks) — Meta descriptions do not rank pages but influence click-through. Write 120 to 160 characters that state what the page delivers, use the searcher's phrasing and include a concrete detail. Keep them unique, avoid quotes that truncate, and rewrite the pages with high impressions and low CTR first.
- [Match content to search intent](https://seo-mcp.io/t/match-content-to-search-intent) — Search intent decides the page format. Informational queries need a direct answer and clear sections, commercial queries need comparisons and pricing, transactional queries need product details above the fold. Classify top queries from the SERP, then restructure rather than rewriting when the topic is right.
- [Rewrite biased listicles so your product earns its rank](https://seo-mcp.io/t/rewrite-biased-listicles-so-your-product-earns-its-rank) — Audit listicles and comparison pages where the site ranks its own product first, then reorder entries by the criteria printed on the page and move the product to the position it honestly earns. The result is a ranking a reader can defend, without changing the page's structure or losing its internal links.
- [Find information gain gaps in the top 10 search results](https://seo-mcp.io/t/find-information-gain-gaps-in-the-top-10-search-results) — Audit what the top 10 Google results, relevant YouTube videos and user forums already say about your target keyword, then find the questions none of them answer. Quantify the pattern from a real sample and open the article with that original finding so the page offers something the existing results do not.
- [Add topic-cluster internal links between related pages](https://seo-mcp.io/t/add-topic-cluster-internal-links-between-related-pages) — Export every published URL and group it by topic and customer task. Pick one main guide and one product page per cluster, link the guide to supporting tutorials with return links where useful, and add contextual links to product and proof pages using descriptive anchor text. The result is a crawlable path from informational content to commercial pages.
- [Target buying-intent questions instead of beginner SEO content](https://seo-mcp.io/t/target-buying-intent-questions-instead-of-beginner-seo) — Software sites often publish content aimed at beginners who are still learning a topic. Instead, list the questions a buyer asks while comparing options, then build or rewrite pages that answer each one so the site is eligible to be found and cited when someone is ready to choose.
- [Build a keyword-targeted free tool page with on-page SEO](https://seo-mcp.io/t/build-a-keyword-targeted-free-tool-page-with-on-page-seo) — Create a small free tool aimed at a single keyword: no signup, result shown instantly, mobile-friendly layout, one call to action into the product. Then complete the page's on-page SEO with a keyword-led title, meta description, H1, an FAQ block, JSON-LD schema and internal links from relevant pages.
- [Publish a keyword-named Google Sites page for parasite SEO](https://seo-mcp.io/t/publish-a-keyword-named-google-sites-page-for-parasite-seo) — Create a Google Sites page whose site name and page title match the exact target keyword, publish it with genuinely useful content, and link it back to your own domain. The tweet claims Google-hosted properties get indexed fast, so the page can surface for the term ahead of your own page. Treat it as a limited gray tactic.
- [Publish competitor comparison pages as direct answers](https://seo-mcp.io/t/publish-competitor-comparison-pages-as-direct-answers) — Create a dedicated page for every head-to-head comparison buyers search (your tool vs each alternative) and open each page with a short, direct answer before any tables or feature lists. This makes the page easy for both searchers and AI assistants to extract and quote when someone asks which tool to pick.
- [Rank a Facebook post for a buyer question](https://seo-mcp.io/t/rank-a-facebook-post-for-a-buyer-question) — Turn a question your buyers ask into a Facebook post: open with the answer in the first line, add a line that invites disagreement to pull comments, then share the post to seed engagement. Question-shaped posts can surface in search results for that query and give the brand visibility outside its own domain.
- [Find internal linking opportunities with a site: search](https://seo-mcp.io/t/find-internal-linking-opportunities-with-a-site-search) — Run a Google site: search for your domain with the target keyword in quotes. The results are pages on your site that already discuss the topic, so they are candidates for contextual internal links to the page you want to rank. Adding those links spreads relevance and helps crawlers discover related pages.
- [Build one dedicated page per treatment for local SEO](https://seo-mcp.io/t/build-one-dedicated-page-per-treatment-for-local-seo) — Split a bulky services page into one page per treatment, each covering what it treats, how it is done, downtime, suitability, price and who performs it. Add provider bio pages, consented before/after photos and original location pages. Each page then matches a specific treatment query instead of competing on one crowded list.
- [Prioritize the five ranking levers before on-page polish](https://seo-mcp.io/t/prioritize-the-five-ranking-levers-before-on-page-polish) — Work the five levers in order: match the page type Google shows for the query, start the title with the target keyword word for word, add at least five internal links using that keyword as anchor, build domain authority, then earn deeplinks to the page. Polish items such as alt text, schema and meta descriptions wait until these are done.
- [Add brand trust signals: About page, author box, schema](https://seo-mcp.io/t/add-brand-trust-signals-about-page-author-box-schema) — Publish an About page built from real facts, a linked legal notice, and an author box with LinkedIn and X profiles under every article. Add Organization schema sitewide and Person schema for each author. These cheap on-page signals let search engines confirm a real entity behind the site instead of sorting it with junk pages.
