Install
$ agentstack add skill-taltal190002-mov-seo-launchpad-seo-launchpad ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
SEO Launchpad
> Built by LogicFlow — bootstrap SEO that actually ranks, in a single session.
The job of this skill is to take any web project from "Google barely sees it" to "every page is crawl-ready, schema-complete, AI-Overview-eligible" — and to leave the owner with a maintenance playbook they can actually run.
Two outputs at the end of every run:
- Code in their repo — committed files. Not advice. Not pseudo-code.
- A 1-page summary in their language — what changed, why, what to do this month, what to do every month.
When this skill triggers
Run it when the user says any of:
- "build SEO from scratch / set up SEO"
- "improve SEO / SEO audit / SEO sweep"
- "I want to rank for X" / "make me rank #1"
- "תקן SEO" / "תשתית SEO" / "שיפור SEO" / "להופיע בגוגל" / "אין לי favicon בגוגל"
- pastes a Google Search Console screenshot
- mentions AI Overviews / ChatGPT / Perplexity citations / GEO / llms.txt
Do NOT run it for:
- "rewrite my homepage" (content task, not SEO)
- "fix this metadata bug" (single-file fix, not infrastructure)
- "redirect from X to Y" (routing task)
Phase 0 — Read before you build (5 minutes, not skippable)
Skip this and you'll write the wrong schema for the wrong business. Pull, in order:
README.md,package.json,pyproject.toml— what stacknext.config.*,astro.config.*,nuxt.config.*— framework specificsapp/layout.*,pages/_app.*,index.html— current head/metadataapp/sitemap.*,public/sitemap.xml,public/robots.txt— what exists- Any obvious page (
app/page.tsx,pages/index.tsx,index.html) — current H1, copy, intent
Then write a 3-line summary at the top of your output:
Stack: Next.js 16 App Router + Tailwind / Astro 5 / WordPress / static HTML
Audience: he-IL / en-US / multilingual / global
Business: local service (clinic) / e-commerce / SaaS / portfolio / blog / marketplace
That triple drives every decision below. A SaaS doesn't need LocalBusiness schema. A clinic doesn't need Product schema. A blog needs Article. Don't generic-blast.
Phase 1 — Foundation (always)
These four files exist on every site, regardless of stack. If any is missing, generate it. If present, audit and patch.
1.1 robots.txt
Block private routes (admin, api/admin), allow image bots explicitly, point to the sitemap. One line per directive, no wildcards in the wrong place (this is where 50% of robots.txt are broken).
Template: see templates/robots.txt. Adapt the Disallow: paths to the actual project.
Common mistakes to fix on first encounter:
Disallow: /left over from staging — nukes the entire site from Google- Missing
Sitemap:line — Google can find it but indirectly - Blocking CSS/JS folders — Google needs them to render the page
1.2 sitemap (XML)
For Next.js App Router: src/app/sitemap.ts returning MetadataRoute.Sitemap. For Astro: @astrojs/sitemap plugin. For static HTML: hand-written XML committed to public/sitemap.xml.
Rules:
- One entry per public, indexable URL. No noindex pages.
lastModifiedis a date that means something — bump it only when content changes. Daily auto-bumps train Google to ignore it.priorityis a relative hint, not a vote. Homepage 1.0, hub pages 0.8-0.9, leaf pages 0.6-0.7.changeFrequencyis a hint. Honest: weekly for homepage, monthly for content, yearly for legal pages.
Template: see templates/sitemap.ts (Next.js).
1.3 Metadata strategy (per-page)
Every public page needs unique `, `, canonical, OG, Twitter. The default-fallback-via-template pattern in Next.js 15+ is the right shape:
// layout.tsx
title: { default: "...", template: "%s | Brand" }
Per page:
export const metadata: Metadata = {
title: "Specific keyword-led title",
description: "120-155 chars with action + value",
alternates: { canonical: "https://canonical/page" },
};
Title formula (this matters — it's the #1 CTR lever):
- Local:
[Service] [in City] — [Differentiator] | [Brand]→ "מיקרובליידינג בנתניה — מומחית מוסמכת | M.L Beautique" - E-commerce:
[Product] — [Key Feature] | [Brand] - SaaS:
[Job to be done] — [Brand](verb-led) - Article:
[Headline](let the article title speak)
Length: titles ≤ 60 chars (or they truncate in SERP), descriptions 120-155 chars.
Template: see templates/nextjs-metadata-helpers.ts.
1.4 Canonical URLs (often forgotten)
Every page has exactly one canonical URL. Including:
- pagination —
?page=2should canonical to itself if content differs, or to/productsif it's a thin slice - query strings —
?utm_source=...canonical to base URL - protocol — always https
- trailing slash — pick one (most modern sites: no trailing slash) and stick with it across the site
In Next.js metadata API, alternates: { canonical: "..." } handles this. Don't rely on next.config.js redirects alone — they don't fix the canonical inside HTML.
Phase 2 — Schema.org (JSON-LD) — the biggest leverage point
In 2026, structured data drives:
- Rich results in regular Google search
- Eligibility for AI Overviews (Position Zero)
- Citation in ChatGPT/Perplexity/Claude AI answers
- Knowledge panel formation for the brand
Pick the schemas that match the business type, not the ones that look impressive. A wrong schema (claiming Product on a service page) is a trust hit.
Pick by business type
| Business | Required | Recommended | Optional | |---|---|---|---| | Local service (clinic, salon, gym, restaurant) | LocalBusiness (specific subtype: BeautySalon, Restaurant, etc), Organization, WebSite | Service per offering, BreadcrumbList, FAQPage | Review, AggregateRating (only if real reviews) | | E-commerce | Organization, Product, Offer, BreadcrumbList | Review, AggregateRating, FAQPage per product | VideoObject for product videos | | SaaS | Organization, WebSite, SoftwareApplication, FAQPage | BreadcrumbList, HowTo for tutorials | VideoObject for demos | | Blog / publication | Organization, WebSite, Article (or BlogPosting), Person (author) | BreadcrumbList, FAQPage per post | VideoObject, Recipe, HowTo | | Portfolio / agency | Organization, WebSite, Person | Project/CreativeWork, BreadcrumbList | VideoObject | | Marketplace | Organization, WebSite, BreadcrumbList, per-listing Product or Service | FAQPage, Review | |
Templates for each: templates/schemas.ts.
Critical implementation rules
- One JSON-LD per type, per page. Multiple
Organizationblocks on the same page split the signal. - Use
@idto connect. SitewideOrganizationgets@id: "https://site/#organization". Articles reference it viapublisher: { "@id": "..." }. This makes Google build a real entity graph. - Test every schema at https://search.google.com/test/rich-results before commit.
- Don't fake data. No
aggregateRatingwithout real reviews on the page. Google detects this and penalizes. - Hebrew/RTL tip: all schema string values can be Hebrew, but URLs in
url/@idmust be ASCII-clean.
The "boring schemas that quietly help"
Always-include trio for any site:
[
{"@type": "Organization", "name": "...", "url": "...", "logo": "..."},
{"@type": "WebSite", "name": "...", "url": "...", "publisher": {"@id": "...#organization"}},
{"@type": "BreadcrumbList", "itemListElement": [...]}
]
These three give Google the entity, the site, and the navigation context. They're not dramatic, but they're the foundation everything else builds on.
Phase 3 — Content SEO
Schema gets you in the door. Content keeps you on page 1.
Headings
- One `` per page. Includes the target keyword and location (for local) or target keyword and modifier (for everything else).
- `` headings often phrased as questions — this is the #1 trick for AI Overview eligibility. "מה ההבדל בין X ל-Y?" beats "השוואה בין X ו-Y" for AI citation.
- `` for sub-points. Don't go to h4 unless it's a long article.
Body copy
The first 50-70 words after the H1 are critical for AI Overviews. Lead with a direct, citable answer to the implied query. Example for "מיקרובליידינג נתניה":
> Bad H1 + intro: "מיקרובליידינג. הטיפול שכולן מדברות עליו. זה מהפכני." > Good: "מיקרובליידינג בנתניה הוא טכניקת איפור קבוע אומנותית שיוצרת משיכות שיער דקות בגבות. התוצאה נשמרת 1-3 שנים. ב-M.L Beautique המחיר 1,400 ₪ כולל תיקון."
The good version answers price + duration + brand + location in 30 words. AI engines love this; humans skim it; Google's snippet selector picks it up verbatim.
Word count
There's no magic number. Pages that rank #1 for competitive queries average 800-1500 words, but only because that's how long it takes to actually answer the question. Pad to hit a number = anti-pattern.
Internal linking
- Anchor text matters more than people remember. Don't write "click here". Write "מיקרובליידינג בנתניה" as the link text — that's a vote for that keyword.
- Aim for 3-5 internal links per content page, pointing to related deep pages.
- Hub-and-spoke: every leaf page links back to its hub; hub links to all leaves.
Images
- Filenames matter —
microblading-natanya-after.jpgbeatsIMG_2034.jpg. - Alt text in the language of the audience, descriptive (not keyword-stuffed):
"גבות אחרי טיפול מיקרובליידינג ב-M.L Beautique נתניה". - WebP or AVIF, lazy-loaded outside the fold.
- Width/height attributes set to prevent CLS.
Phase 4 — AI search & GEO (the new layer)
GEO = Generative Engine Optimization. Optimizing not for "rank #1 in Google search" but for "be cited in ChatGPT / Perplexity / Google AI Overview answers". Roughly 40% of the work overlaps with traditional SEO; 60% is new.
llms.txt — give AI crawlers a map
A markdown file at /llms.txt that summarizes the site for LLM crawlers. Proposed by Jeremy Howard (fast.ai) Sept 2024, now widely supported.
Format (strict):
# Brand Name
> One-paragraph summary of what the brand/site is about. 1-3 sentences.
## Key pages
- [Homepage](https://site.com/): What the brand offers
- [Services](https://site.com/services): All services with prices
- [Contact](https://site.com/contact): Address, phone, hours
## Articles
- [Article 1](https://site.com/blog/x): What it covers
## Optional
(Section with `Optional` heading marks links AI can SKIP if context is short.)
- [Privacy Policy](https://site.com/privacy)
Template: templates/llms.txt.
For Next.js, place app/llms.txt/route.ts to serve it. For static, drop in /public.
There's also llms-full.txt — same idea but with the full body content of key pages inlined. Useful for documentation sites where you want the AI to read the actual text without crawling page-by-page.
FAQ + HowTo schema for AI Overviews
FAQPage schema is the single highest-leverage thing for AI Overview eligibility. Every content page should have 3-7 FAQs, each phrased as a real question users ask, with clear 1-3 sentence answers.
Mining sources for real questions:
- Google "People also ask"
- Google Search Console — Performance → Queries (real questions your audience already searches)
- Reddit / community forums in the niche
- Customer support inbox
Don't invent FAQs. Mine them.
Question-led H2 / Listicle structure
AI engines extract from listicles and Q&A formats more reliably than from prose. When the content allows, structure as:
H1: How to do X
H2: What you need
H2: Step 1 — ...
H2: Step 2 — ...
H2: Common mistakes
This is also the structure for HowTo schema. Use both together.
Phase 5 — Local SEO (only if applicable)
Skip this section if the project isn't a local business.
LocalBusiness schema (the right subtype)
Generic LocalBusiness is fine but a specific subtype is better. Pick from:
BeautySalon(clinic, hair, nails, makeup)MedicalClinic/Dentist/PhysicianRestaurant/Cafe/BakeryLegalServiceAutoRepair/Plumber/Electrician- See https://schema.org/LocalBusiness for full list
Required fields: name, address (with streetAddress, addressLocality, addressCountry), telephone, url, openingHoursSpecification. Add geo (lat/long), priceRange, image, hasMap, areaServed for max signal.
Google Business Profile (the off-site half)
The site can be perfect and still not rank in the Map Pack without GBP. The owner needs to:
- Claim/verify https://business.google.com listing
- Match NAP (Name/Address/Phone) exactly to the site (whitespace, punctuation, parens — all of it)
- Add categories (primary + 2-3 secondary)
- Add 10+ photos
- Solicit reviews (this is the dominant ranking factor for Map Pack)
The skill should not try to do GBP setup itself — it's manual. But it should generate a GBP setup checklist (see guides/google-business-profile.md) and emphasize that without GBP, local SEO is half-built.
Reviews
If real reviews exist (on GBP, on the site, on Trustpilot, etc.), reflect them with Review and AggregateRating schema on the site. Not just GBP. This adds star ratings to organic SERP listings.
If no real reviews — DON'T fake aggregateRating. Google detects this. Skip the schema until reviews exist.
Phase 6 — Performance (Core Web Vitals)
Targets:
- LCP (Largest Contentful Paint) ≤ 2.5s
- CLS (Cumulative Layout Shift) ≤ 0.1
- INP (Interaction to Next Paint) ≤ 200ms
These are ranking factors. They're also what Google AI Overview selectors use to decide which pages to summarize.
Quick wins to apply on first audit:
next/imagefor all images (auto-converts to WebP/AVIF, lazy loads, sets dimensions)next/fontfor all custom fonts (no FOIT, no FOUT, no CLS)- Remove render-blocking third-party scripts; defer or load async
- Preconnect to fonts.googleapis.com if using
- Set explicit width/height on every `
and` - Use
Suspenseboundaries around heavy below-the-fold components
Measure with PageSpeed Insights (https://pagespeed.web.dev/) — desktop AND mobile. Mobile is the one that matters for ranking.
Phase 7 — Monitoring (set this up; don't skip)
Google Search Console (mandatory)
Walk the user through:
- Add property → URL prefix → enter
https://domain.com - Verify (HTML tag is easiest — give them the snippet to add)
- Submit sitemap (
sitemap.xml) - Use URL Inspection tool to request indexing for top 5 pages
See guides/google-search-console-setup.md for the full walkthrough.
Google Business Profile (if local)
See above.
Optional but valuable
- Plausible / Umami / Fathom — privacy-friendly traffic analytics (GDPR-clean, no cookie banner needed)
- Microsoft Clarity — free heatmaps + session recordings
- Ahrefs Webmaster Tools — free, gives backlink data GSC doesn't
Don't recommend Google Analytics 4 unless asked. It triggers cookie consent obligations and most small sites don't need its complexity.
Phase 8 — The 12-week growth playbook
This is what you give the owner at the end. A printable plan they can run without hiring an SEO agency.
Week 1-2 — Foundation
☐ All Phase 1-7 deployed
☐ GSC verified, sitemap submitted
☐ GBP claimed (if local)
☐ Top 5 pages: indexing requested
Week 3-4 — First measurement
☐ Open GSC Performance, set last 28 days
☐ Note top 10 queries that get impressions but few clicks → write down
☐ Run PageSpeed on top 3 pages → fix any red metric
Week 5-8 — Content depth
☐ For each impression-getting query without a dedicated page → create one
☐ For each existing page ranking #6-15 → expand body to 800+ words
☐ Add FAQ schema to top 5 pages (mine real questions)
☐ Add 1 internal link from homepage to a struggling deep page
Week 9-12 — Authority
☐ List the brand on 5 industry-relevant directories (with NAP match)
☐ Reach out to 3 partners/suppliers for backlinks (link from thei
…
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [Taltal190002-mov](https://github.com/Taltal190002-mov)
- **Source:** [Taltal190002-mov/seo-launchpad](https://github.com/Taltal190002-mov/seo-launchpad)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.