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…

MITAuto-check passedFrontend & Design

Install SEO Landing

skills CLI
$ npx skills add aleksandr-alhoff/seo-landing --skill seo-landing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install aleksandr-alhoff/seo-landing seo-landing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo-landing
GitHub stars
165
Token cost
~3.4k tokens
SKILL.md length
1,735 words
Files
131 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 7 steps: Route the request to a mode first → Create the project folder → Generate the page → …
  • : user asks to create/build/generate a landing page
  • SKILL.md covers When to Use, Procedure, Generation workflow (generate… and Main pitfalls
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

SEO Landing is an agent skill from aleksandr-alhoff/seo-landing. 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.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 135 other files, including reference files (for example `README.md`, `README.ru.md` and `SECURITY.md`).

It sits in Frontend & Design, covering Landing pages, Schema markup and Web performance. It works with Google Gemini. The repository describes itself as: SEO Landing: Give your AI coding agent the capabilities of a senior Technical SEO engineer. An agent skill for building high-performance, technically optimized SEO landing pages…. The licence is MIT.

When your agent uses it

  • : user asks to create/build/generate a landing page
  • Static site with focus on SEO
  • Asks for an SEO-friendly page from a brief/ТЗ
  • Asks to audit/fix a landing against a performance checklist

Example prompts

  • “Use the seo-landing skill to generate fast, SEO-optimized static HTML landing pages targeting 100/100 PageSpeed (LCP < 2.5s, INP < 100ms, CLS <…”
  • “/seo-landing”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Route the request to a mode first
  2. Create the project folder
  3. Generate the page
  4. Generate companion files
  5. STOP POINT — user approval
  6. Validate
  7. Final report

What it can do on your machine

Read from SKILL.md and the folder at commit 1aa908f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

SEO Landing loads about 3.4k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 113 tokens; SKILL.md has 1,735 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~26k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from aleksandr-alhoff/seo-landing at commit 1aa908f, republished under its MIT licence (© aleksandr-alhoff). 1,735 words, ~3,415 tokens.

Download SKILL.mdSave it as .claude/skills/seo-landing/SKILL.md (or your agent's skills folder). This skill also uses 130 other files; get the full folder from GitHub.
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).

If domain or keywords are missing — ask first, do not invent them.

0b. Audit-only mode (read-only)

Audit an existing page without generating a replacement. No project files are created or modified in this mode — the deliverable is a report.

  1. Identify the target: a deployed URL (preferred — lets every check run against reality) or local HTML files. If neither is supplied, ask; never guess the target.
  2. Run the applicable checks from §5 against the target as-is: W3C validity, local asset existence (for local files), JSON-LD via a schema.org validator, Lighthouse against the served/deployed URL, crawlability contract (robots.txt + sitemap.xml at the deployed host), and the manual accessibility checks in tech-spec §8.
  3. Report evidence per check: pass/fail with the measured value or observed markup, and the exact command/tool used. Where a check cannot run (no deployed URL for Lighthouse, no robots.txt on the host), report a blocker for that check — do not estimate, extrapolate, or omit it silently.
  4. Distinguish syntax validity from Google feature eligibility (FAQPage, VideoObject, rich results): valid markup is reported as valid markup, never as an achieved search feature.
  5. Optionally end with a prioritized fix list. Applying fixes is a separate fix-existing request — do not start editing without it.
0c. Fix-existing mode

Apply targeted fixes to an existing page without a full rebuild.

  1. Identify the page/files and the specific problems to fix; collect only the inputs those fixes need (never the full generation brief).
  2. Apply each fix per the relevant tech-spec section, preserving unrelated markup and content.
  3. STOP POINT (§4) applies: show the changed page before validation. If fixes change what the user approved earlier, obtain renewed approval before reporting.
  4. Validate the changed page (§5) and report measured evidence only.

Generation workflow (generate mode)

1. Create the project folder

Every project lives in its own folder inside the workspace — never write to the workspace root. The output is a multi-file project: every local resource referenced by the HTML must exist as a real file.

<workspace>/<project-slug>/
  index.html        # the generated landing page
  styles.css        # only when below-the-fold CSS is deferred (§1); absent when all CSS is inlined
  script.js         # only when the page uses JS (§10); single file, defer
  images/           # every image variant referenced in src/srcset/preload/OG tags (AVIF/WebP/JPEG, all breakpoints)
  favicon.png       # stable square brand icon, ≥48×48
  ASSETS.md         # rights & provenance record for every asset
  robots.txt
  sitemap.xml
  SERVER-SETUP.md   # hosting instructions

Image branch:

  • Images provided in the brief → produce all required variants (AVIF/WebP/JPEG at every breakpoint named in srcset) from them.
  • No images available → request them from the user or omit the image/block. Never emit a successful-looking asset URL without producing the file or explicitly asking for it — a referenced-but-missing file is a generation failure, not a placeholder.
Show full SKILL.md (685 more words)Show less
2. Generate the page

Build index.html strictly following references/tech-spec.md — 13 requirement sections (performance, HTML structure, SEO, security, CSS/fonts, forbidden list, testing, accessibility, embedded video, typical blocks, deferred widgets, content truthfulness & provenance, input sanitization & output encoding).

Treat every brief value as untrusted: encode it for its exact output context (HTML text, attribute, URL, JSON-LD), allow-list URL schemes (reject javascript:/unexpected data:), escape < in serialized JSON-LD, and validate structured IDs (e.g. YouTube ^[A-Za-z0-9_-]{11}$) before they reach any URL (tech-spec §13).

For embedded YouTube video use the facade pattern by default; the SEO-discoverable mode (self-hosted <video> or a documented direct embed) is an explicit brief choice with a disclosed trade-off, never a silent switch — rules and the Google discovery requirements in tech-spec §9, facade reference implementation in references/video-facade.md. Maps follow the facade rule only (tech-spec §10): a local screenshot in the initial DOM, the iframe inserted only on explicit activation — never a native loading="lazy" map iframe. Reference: references/map-facade.md.

3. Generate companion files
  • robots.txt at the site root with a fully qualified Sitemap: line, never blocking the canonical page or required media.
  • sitemap.xml with XML-escaped absolute canonical <loc> URLs matching the HTML canonical; lastmod only from a verifiable significant-content-change timestamp (omit when unknown — never use generation time blindly).
  • Hosting instructions from references/server-config.md: caching, Brotli/gzip, security headers.
4. STOP POINT — user approval

Show the generated page to the user and ask explicitly whether the HTML version is OK. Do not proceed to validation and the final report until the user confirms. If there are remarks — fix and ask again.

5. Validate

Run the executable validation contract from tech-spec §7 — pinned commands against the served page, measured results only, explicit BLOCKER when a gate cannot run:

  • W3C HTML validity (Nu validator, JSON output; zero errors).
  • Local asset/link existence: extract every local URL referenced by the output (img src/srcset, <source> srcset, preload href/imagesrcset, favicon, OG/Twitter images, CSS url(), script src) and verify each file exists in the project folder. Any missing referenced local resource is a hard failure — produce the file or remove the reference; never ship HTML pointing at files that were never created.
  • JSON-LD syntax (JSON parse) — separate from Google rich-result eligibility, which is checked with Rich Results Test on the deployed page.
  • Responsive screenshots at 320/768/1280/1920px, inspected for overflow and reflow.
  • Lighthouse: pinned version/profile, 3 runs, median per category, threshold ≥ 90, artifacts kept in the project's reports/ — lab evidence only, never field Core Web Vitals and never WCAG certification.
  • Manual accessibility checks (tech-spec §8) — no automated tool alone determines WCAG conformance: keyboard navigation, focus order/visibility, dialog focus flow, zoom/reflow, reduced motion, semantic name-role-value, alternative-text quality, and all interactive visual states. Record pass/fail evidence per applicable WCAG 2.1 AA criterion; report unresolved items instead of silently certifying them.
  • Crawlability contract: parse sitemap.xml, compare every <loc> with the HTML canonical, check the Sitemap: URL in robots.txt, and request both deployed files successfully (HTTP 200).

Fix any violations found before reporting. Disclose evidence honestly: every reported number comes with the exact command and artifact path that produced it; a gate that could not run is reported as BLOCKER: <reason> instead of a number. Never output a PageSpeed/LCP score that was not actually measured.

6. Final report

Briefly list:

  • LCP parameters
  • PageSpeed score
  • schema.org types used in the code

Main pitfalls

  • Never use external JS/CSS libraries, external fonts, or SVG images (tech-spec §6).
  • Never reference a local asset that was never created: every src/srcset/preload/OG URL must resolve to a real file in the project folder; missing source images are requested from the user, not invented (OUTPUT contract).
  • Never emit a raw brief value into markup: context-encode everything, reject javascript:/unexpected data: URLs, and self-test generation with hostile values (quotes, </script>, event-handler payloads) (tech-spec §13).
  • Never load YouTube iframes, maps, chats, subscription popups, or cookie banners on first load (tech-spec §9, §10, §11) — the single documented exception is a brief-chosen SEO-discoverable video mode with a direct embed recorded as a first-load dependency (tech-spec §9 Mode S).
  • All content must exist in raw HTML — nothing rendered only by JS.
  • Absolute URLs in JSON-LD, canonical, and OG tags.
  • Total JS budget ≤ 15 KB, one file, defer before </body>.

© aleksandr-alhoff, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 130 other files (references) in the repository root of aleksandr-alhoff/seo-landing.

  • SKILL.md
  • LICENSE
  • README.md
  • README.ru.md
  • SECURITY.md
  • benchmark/README.md
  • benchmark/original/original-snapshot.html
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1024.avif
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1024.jpg
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1024.webp
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1045.avif
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1045.jpg
  • benchmark/rebuilt/images/gen/2081872091422081802081843-1045.webp
  • benchmark/rebuilt/images/gen/2081872091422081802081843-320.avif
  • benchmark/rebuilt/images/gen/2081872091422081802081843-320.jpg
  • benchmark/rebuilt/images/gen/2081872091422081802081843-320.webp
  • … and 115 more

Open the folder on GitHubat commit 1aa908f

Compare with similar skills

SEO Landing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

SEO Landing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
SEO Landing this skillaleksandr-alhoff/seo-landing165—~3.4kAutomated safety check: PassMIT
Kill AI Slopyetone/kill-ai-slop1.3k—~1.4kAutomated safety check: PassApache-2.0
Static Sitesbionic-gpt/bionic-gpt2.4k—~920Automated safety check: PassApache-2.0
Auteuragiwhitelist/auteur1k—~5kAutomated safety check: PassMIT
Creating Oneshot Landing Pagesnroadley/Creating-Oneshot-Hero-Landing-Pages134—~3.5kAutomated safety check: PassMIT
Bryl Minimal Designbryllim/bryl-minimal-design115—~2.9kAutomated safety check: PassMIT

Similar skills

  • Kill AI Slop

    yetone/kill-ai-slop

    Find and remove AI slop — the generic, machine-default visual and copy tics of vibe-coded products — from a web project.

    1.3k GitHub stars~1.4k tokensUpdated 26 days ago
    Frontend & DesignAuto-check passed
  • Static Sites

    bionic-gpt/bionic-gpt

    Create or modify Bionic's generated marketing site, documentation, blog, course pages, and static assets.

    2.4k GitHub stars~920 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Auteur

    agiwhitelist/auteur

    Design and build complete web experiences from scratch — award-level product and marketing pages, cinematic scroll-directed sites where the page is directed like a film, and multi-screen products…

    1k GitHub stars~5k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Creating Oneshot Landing Pages

    nroadley/Creating-Oneshot-Hero-Landing-Pages

    Designs and builds video-driven parallax hero landing pages with smooth video scrubbing, progress-locked typography, and clean navigation.

    134 GitHub stars~3.5k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Bryl Minimal Design

    bryllim/bryl-minimal-design

    Apply the bryl-minimal design language — a monochrome, typography-driven minimal aesthetic with halftone dot textures, pixel-font display headings, tiny uppercase monospace labels, soft large-radius…

    115 GitHub stars~2.9k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed
  • Docouture Authoring Guides

    InditexTech/weavejs

    What to write on each page of a docouture documentation site: the purpose of every page, the section skeleton it needs, what to say in each section, a copyable AsciiDoc starting point and a quality…

    238 GitHub stars~3.9k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed

Works with

Questions about SEO Landing

What does SEO Landing do?

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…. SEO Landing is an agent skill from aleksandr-alhoff/seo-landing.org JSON-LD, AVIF images, critical CSS, zero external dependencies.

When should I use SEO Landing?

SEO Landing fits situations like: : user asks to create/build/generate a landing page; static site with focus on SEO; asks for an SEO-friendly page from a brief/ТЗ; asks to audit/fix a landing against a performance checklist.

How do I install SEO Landing in Claude Code?

Run `npx skills add aleksandr-alhoff/seo-landing --skill seo-landing -a claude-code`. Or copy the skill folder (the aleksandr-alhoff/seo-landing repository) into .claude/skills/seo-landing in your project. Claude Code loads it when a task matches its description.

How do I install SEO Landing in Codex?

Run `npx skills add aleksandr-alhoff/seo-landing --skill seo-landing -a codex`. Or copy the skill folder (the aleksandr-alhoff/seo-landing repository) into .agents/skills/seo-landing in your project. Codex loads it when a task matches its description.

Can I use SEO Landing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aleksandr-alhoff/seo-landing --skill seo-landing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-landing, .gemini/skills/seo-landing, .github/skills/seo-landing and .opencode/skills/seo-landing in your project.

What does SEO Landing need to run?

SKILL.md names no scripts, command-line tools or credentials: SEO Landing is instructions for the agent only.

Does SEO Landing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is SEO Landing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does SEO Landing use?

SEO Landing is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does SEO Landing use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 23k tokens, read only when the agent opens those files.

What are the alternatives to SEO Landing?

Skills that share tags, products or a category with SEO Landing: Kill AI Slop (yetone/kill-ai-slop, 1.3k stars), Static Sites (bionic-gpt/bionic-gpt, 2.4k stars), Auteur (agiwhitelist/auteur, 1k stars) and Creating Oneshot Landing Pages (nroadley/Creating-Oneshot-Hero-Landing-Pages, 134 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains SEO Landing?

aleksandr-alhoff (a GitHub user) maintains it in aleksandr-alhoff/seo-landing, which has 165 GitHub stars. The repository was last updated on August 30, 2026.

Source: aleksandr-alhoff/seo-landing on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.