SEO Landing skill
Three modes for fast, search-ready landing pages: build from a brief, audit without edits, fix an existing page
- 207 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The agent creates a project folder with files and runs Lighthouse and validators against the page URL.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/aleksandr-alhoff-seo-landingDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The agent creates a project folder with files and runs Lighthouse and validators against the page URL.
This is third-party code. Review the repository files before installing.
What it does
SEO Landing is a skill that walks an agent through building a static one-page landing for speed and search: critical CSS, AVIF images, schema.org markup in JSON-LD and zero third-party requests on first load. The targets are an LCP under 2.5 s, an INP under 100 ms and a CLS under 0.1. The skill works in three modes. `generate` builds a page from a brief, `audit-only` just reads a page and returns a report, and `fix-existing` applies targeted fixes. Before building, the agent collects a brief: domain, keywords, language, business type and contacts. If the domain or keywords are missing, the agent asks and invents nothing. The result is a separate project folder with `index.html` and every local file it needs. Before validation the agent shows the HTML and waits for confirmation, then runs the W3C validator, JSON-LD checks and Lighthouse and writes a report with measured values.
Who it is for. SEO specialists and developers who build landing pages with an agent and want a technically clean page without excess JavaScript.
Good fit when
- A brief calls for a landing page that opens fast on mobile.
- A page on a heavy SPA framework moves to static HTML.
- A finished page is checked against the checklist without edits: `audit-only` returns a report.
- The first screen of a page jumps, and it is fixed point by point in `fix-existing` mode.
- JSON-LD markup for WebSite, Organization, BreadcrumbList and FAQPage must rest on facts from the brief.
Not a fit when
- The site needs external libraries, Google fonts or SVG images: the skill forbids them.
- A multi-page site on a CMS or framework is required, while the skill produces one static landing page.
- Guaranteed 100 points in production are expected: that is a lab-test target and the skill does not promise it.
Example request
Build a dental clinic landing page for `example.com` from the attached brief with a focus on PageSpeed, and show me the mobile first screen before the checks.Limitations
The skill is a set of instructions for an agent, so the result depends on the model and the hosting. PageSpeed scores serve as lab-test targets, and field Core Web Vitals cannot be guaranteed. External JS and CSS libraries, external fonts, synchronous scripts, SVG images and iframes on first load are forbidden, and JavaScript stays within 15 KB. Videos and maps show a cover until a click, so such a page reaches Google video search only in a separate mode. Validation needs the Lighthouse CLI and a reachable URL of the deployed page.
How to disable. Delete the `seo-landing` folder from the agent's skills directory, for example `rm -rf ~/.claude/skills/seo-landing`. Remove any `seo-landing.backup-*` copies left from updates separately.
FAQ
How do I install the SEO Landing skill?
Clone the repository with `git clone https://github.com/aleksandr-alhoff/seo-landing.git` and copy the folder into the agent's skills directory, `cp -R seo-landing ~/.claude/skills/` for Claude Code. Gemini CLI has `gemini skills install` with the repository URL.
How do I update an installed copy?
`git pull` updates only the clone. Sync the installed copy with `rsync -a --delete --exclude=.git seo-landing/ "$DEST/"` after a backup, then start a new agent session.
What does the skill ask for up front?
The domain, one to three keywords, the page language, business type (Organization or LocalBusiness), contacts and a call to action. Without a domain and keywords the agent asks questions.
Can it only audit a page?
Yes. In `audit-only` mode the agent writes nothing to the project and returns a checklist report with measured values and the commands that produced them.
Does the skill guarantee 100 PageSpeed points?
No. One lab measurement from the repository shows an Angular page that rose from 75 to 100 Performance points, with LCP falling from 3.3 to 1.6 s. Another page will get a different result.
How does the skill handle video and maps?
By default a local cover replaces the embed and the iframe loads on click. A mode visible to Google video search is enabled separately.
Discussion
No questions or reviews yet.
Related
SkillsA Claude Code skill for building a landing page or SaaS site around search demand: Wordstat semantics, intent clusters, on-page markup
A CLI and agent skill for website SEO audits: technical SEO, Core Web Vitals, structured data, security and AI search readiness
Skill and CLI for SEO audits and website builds: a scroll story, GPT images, metadata checks and deployment to free hosting
SEO audits for sites, articles and GitHub repos: topic sub-skills, evidence-collecting scripts and a fix plan
A Claude Code plugin for drafting SEO pages from search results and competitor material, with an outline, FAQ and schema
A beginner-first SEO coaching skill: work on your real site from baselines to one rechecked change until you can repeat it
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| SEO Landing (this card) | no | 207 | |
| seo-landing: demand-driven landing page skill | no | 0 | A same-named skill by another author builds a landing page from search demand and semantics; this one covers the technical side: speed, Core Web Vitals and markup |
| seo-audit-skill | no | 782 | That skill returns an HTML report for one page by URL; here the audit sits alongside building and targeted fixes |
README in short
The repository holds the main `SKILL.md`, a 13-section technical specification and server settings for Nginx and Apache. It also has sample facades for video and maps, Lighthouse measurements and a negative fixture on which every check must fail.
README badge
Original SKILL.md
---
name: seo-landing
description: "Generates fast, SEO-optimized static HTML landing pages targeting 100/100 PageSpeed (LCP < 2.5s, INP < 100ms, CLS < 0.1), full schema.org JSON-LD, AVIF images, critical CSS, zero external dependencies. Use when: user asks to create/build/generate a landing page, one-pager, or static site with focus on SEO, speed, or PageSpeed; asks for an SEO-friendly page from a brief/ТЗ; or asks to audit/fix a landing against a performance checklist."
metadata:
argument-hint: "[topic/domain or brief]"
---
# SEO Landing Generator
Builds a static single-page HTML landing optimized for 100/100 PageSpeed and maximum SEO: critical CSS, AVIF images, full JSON-LD structured data, native-only interactivity, zero third-party requests on first load.
## When to Use
- User asks for a landing page / one-pager focused on speed and SEO → **generate** mode.
- User provides a brief (ТЗ) and wants a production-ready static page → **generate** mode.
- User asks to audit an existing landing against the checklist without changes → **audit-only** mode (§0b, read-only, no project files).
- User asks to fix/improve an existing landing → **fix-existing** mode (§0c).
## Procedure
### 0. Route the request to a mode first
The skill serves three modes — pick one from the request (ask if ambiguous), because each mode collects different inputs and produces different output:
- **generate** — build a new landing page from a brief ("build/create/generate a landing…"). Runs the full procedure below.
- **audit-only** — read-only inspection of an existing page ("audit/check/review this landing against the checklist…", no changes requested). Runs §0b. Never writes project files.
- **fix-existing** — apply targeted fixes to an existing page ("fix/improve/optimize this page…"). Runs §0c.
Representative routing:
- "Build a landing for a dental clinic from this brief" → **generate**.
- "Audit https://example.com/ against the performance checklist and report what's wrong" → **audit-only**.
- "This landing's hero image shifts on load — fix it" → **fix-existing**.
Generation-only brief fields (target keywords, business type, CTA, media facts) are collected ONLY for generate and rebuild work. An audit or a targeted fix must not be blocked or delayed by missing generation inputs, and audit-only mode must not create or modify any project files.
### 0a. Collect the brief (generate mode; ask if missing)
Required before generating anything:
- Domain / final URL — for canonical, og:url, absolute paths, JSON-LD `@id`.
- Site identity (for `WebSite` markup, only when the page is the domain/subdomain home page): preferred site name, optional alternate names, and the canonical home URL — collected separately from the landing URL.
- Breadcrumb trail (for `BreadcrumbList` markup, only when a real site hierarchy exists): the visible breadcrumb trail and canonical parent URLs.
- Page language, base direction, and Open Graph locale — three separate inputs, never one value copied across formats: a BCP-47 language tag for `<html lang>` (e.g. `en-US`, `ar-SA`), the base direction (`ltr`/`rtl` — RTL documents get `dir="rtl"` on `<html>`, and `lang` alone does not set directionality), and the Open Graph locale in `language_TERRITORY` format for `og:locale` (e.g. `en_GB`). Ask when direction is unknown for an RTL-capable language (tech-spec §2).
- Topic + 1–3 target keywords — for H1, title, description.
- Business type: Organization or LocalBusiness. For LocalBusiness collect the verified public/legal business name and the complete structured postal address (street, locality, region, postal code, country), plus phone and geo coordinates. Also collect the verified schema.org subtype(s) based on the actual business (e.g. `Restaurant`, `Dentist`, `HardwareStore`) — never chosen from target keywords. Never invent missing identity facts: fall back to `Organization` markup or omit entity markup until the facts are provided.
- CTA and contacts (phone, form, messengers). When a form is requested, also collect its submission destination and method (a first-party endpoint or a documented form service — never invented), the consent/privacy text required for the collected personal data, and where submissions are stored and who owns them; with no destination, the form is omitted or explicitly stubbed (tech-spec §10 form submission contract).
- A brand-approved favicon or explicit permission to create one — never invent a brand mark silently.
- Approved source material and a claim owner for objective marketing facts (numbers, prices, qualifications, guarantees, comparisons, case studies) — without them such claims are omitted, never invented.
- Whether images are provided; whether FAQ / reviews / video blocks are needed. For a video block collect source-backed facts: video URL/ID, title, description, accurate first-publication date/time with timezone, and a unique crawlable thumbnail (plus `contentUrl` when applicable). Never invent missing media facts. Also collect the video mode with its trade-off stated: click-only facade (default — privacy/performance; the page will not satisfy Google's video discovery requirements and no video-search benefit is claimed) or SEO-discoverable (self-hosted `<video>` or a documented direct embed — required when video search traffic matters) (tech-spec §9).