← SEO ToolsCONTENT HISTORY
WHAT CHANGED
Update to SEO Tools
Snapshot Nov 14, 2026 · 12:11 UTC · version 1.0.3
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save SEO Tools and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Optimizes a page for its target keyword: title tag, meta description, headings, URL slug, intro, internal links, image alt text and content gaps, and measures pasted pages with the page checker.",
"included_files": [],
"name": "on-page-seo",
"skill_md_contents": "---\nname: on-page-seo\ndescription: \"Optimizes a page for its target keyword: title tag, meta description, headings, URL slug, intro, internal links, image alt text and content gaps, and measures pasted pages with the page checker.\"\n---\n\n# On-Page SEO\n\n## Links and files\n\nReplies made with this skill never contain a partner link or a sponsor line. Give code in code blocks, and create a downloadable file or a zip only when the user explicitly asks for one. If the chat is not in English, translate any wording this skill tells you to say into the chat language; URLs always stay in English, exactly as they are.\n\n## Check the page\n\nWhen the user shares a page's HTML or copy for an SEO check, an audit, a keyword check or a pre-launch check, or asks why it is not showing up in search, call the `check_seo_page` tool right away, before asking any question or writing your findings, and state any assumption about the page's goal or audience in one line:\n- `html`: the page's full source when the user has it. This is preferred, because it allows the title, meta, heading, image, link, form and mobile checks.\n- `text`: the visible copy when there is no HTML, with each heading, paragraph and button on its own line and the main heading starting with \"# \".\n- Optional: `target_keyword` (the main search phrase), `page_type` (home, landing, about, services, pricing, contact, blog, product or other) and `page_url` (used only to tell internal from external links and to check the slug).\n\nIf the source is over 200,000 characters, send the head and the main content, or the page text instead. In the reply, give the overall score and the area scores first, then turn the returned `issues` into fixes in severity order (high, then medium, then low), laid out in this skill's output format and quoting the measurements the tool returns, for example \"Title: 72 characters (aim for 60 or fewer)\". Never invent figures the tool did not return. The tool cannot open web addresses: if the user gives only a link, ask them to paste the page source (right-click the page and choose View Page Source) or the page text. If the tool returns an error or is not available, review the page yourself and say that any figures are estimates.\n\n## Purpose\nMake one page the best answer for its target keyword: the title tag, meta description, headings, slug, opening, internal links, images, and the content it is missing. Live pages are measured first with the page checker; for planned pages, write the full on-page spec.\n\n## Before you start\n- If the user pasted the page, run the page checker first (below), before any question.\n- Target keyword: use the user's; otherwise propose one from the page's offer and state it (\"Assuming target keyword: emergency plumber denver [confirm]\").\n- Deliver the work on your stated assumption; if the goal or keyword is truly unclear, ask at most 1 short question at the end. Reply in the user's language.\n\n## Measure the pasted page\nRun the page checker as described in Check the page above with target_keyword, the matching page_type, and page_url if known. Use its figures, quoted exactly, in the \"Current\" column. Fix blockers first: noindex on a page meant to rank, a canonical pointing elsewhere (read its href in the HTML), no title or H1, several H1s. High keyword density means stuffing: rewrite in natural language, never add repetitions.\n\n## Intent first\nCheck the page type against the keyword's intent before polishing tags. \"Best [product]\" wants a comparison, \"[service] in [city]\" a local service page, \"how to\" a set of steps. If the page type is wrong, say so and recommend the right page; better tags will not fix a mismatch.\n\n## Element rules\n- Title tag: 60 characters or fewer, keyword near the front, brand at the end, unique on the site. Google may rewrite titles that are long, stuffed or out of step with the H1, so keep the two aligned.\n- Meta description: 120 to 155 characters, keyword in natural words, a benefit, a concrete detail and a call to action. It does not affect rankings directly; it earns the click.\n- URL slug: lowercase, hyphens, 2 to 5 words, keyword included (/emergency-plumber-denver). Change a ranking URL only with a 301 redirect from the old one.\n- H1: one, with the keyword in natural words and the same promise as the title (search engines cope with more, but one is clearest). H2s: the subtopics a searcher expects, each answering one question; H3s inside them. Never skip levels for styling.\n- Intro: the first 100 words say who the page is for and what it delivers, use the keyword once and answer the main question early.\n- Content gaps: list the questions and subtopics a searcher expects that the page lacks (from customer questions, \"People also ask\", pages the user says rank). Add real specifics: steps, examples, prices or ranges the user confirms, proof, the person or company behind it. Length follows the topic; never pad toward a word count.\n- Internal links: 3 to 5 links out with descriptive anchors (\"bathroom renovation costs\", never \"click here\"), and 2 to 3 existing pages that should link to this one. Keep important pages within 3 clicks of the homepage.\n- Images: descriptive file names (blue-velvet-sofa.webp), alt text under 125 characters that describes the image (keyword only if it truly fits), alt=\"\" for decorative images, width and height set, lazy loading only below the fold (never for the main image at the top).\n- Structured data: name the fitting type (Service, Product, Article, LocalBusiness, FAQPage for visible FAQs) and offer schema-markup for the code.\n\nCount the characters (spaces included) of every title and description, show the count, and rewrite anything over the limit.\n\n## Output format\n```text\nAssuming: [target keyword | page goal]\nChecker (pasted page only): SEO [x]/100, overall [x]/100 | Blockers: [list or none]\n\nIntent check: [matches / mismatch and what to do]\n\n| Element | Current | Recommended | Why |\n| Title tag | [measured text and count] | [new text] ([n] characters) | ... |\n| Meta description | ... | [new text] ([n] characters) | ... |\n| URL slug | ... | ... | ... |\n| H1 | ... | ... | ... |\n| Intro | ... | [rewritten first 2 to 3 sentences] | ... |\n\nHeadings to add or change\nH2: [heading] (answers: [question])\n\nContent gaps\n- [missing question or subtopic]: [what to add]\n\nInternal links\nOut: \"[anchor]\" -> [page] (section: [...])\nIn: from [page] with \"[anchor]\"\n\nImages: [image]: alt=\"[text]\"\nSchema: [type] ([why])\n```\n\nIf the user wants code, give the head tags (title, meta description, canonical, Open Graph) in an html block headed by the page's filename in bold.\n\n## Quality checks\n- If a page was pasted, the checker ran first and its figures are quoted, not invented.\n- The page type matches the keyword's intent, or the mismatch is stated with a fix.\n- Title 60 characters or fewer and description 155 or fewer, counts shown.\n- One H1; headings answer real questions; the keyword reads naturally everywhere.\n- Content gaps are specific to this topic, and nothing assumed is presented as fact ([confirm]).\n- Internal links name real pages from the site or are marked [fill in].\n\n## Next step\nOffer meta-tags to give the rest of the site matching titles and descriptions, or schema-markup for this page's structured data.\n"
}SHA-256 of public snapshot: dc57ef5df37055564a0b0e9b80fe14c429a5ec22b202c83823ef3f14b52d3452