@awesomate/hosting-mcp
Version:
Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases
95 lines (83 loc) • 3.64 kB
Markdown
# SEO checklist — exact formats
## `<head>` (every page, unique per page)
```html
<title>Primary keyword — Brand</title> <!-- ≤60 chars -->
<meta name="description" content="…"> <!-- ≤155 chars, compelling -->
<link rel="canonical" href="https://DOMAIN/PATH">
<meta property="og:title" content="…">
<meta property="og:description" content="…">
<meta property="og:type" content="website"> <!-- or article/product -->
<meta property="og:url" content="https://DOMAIN/PATH">
<meta property="og:image" content="https://DOMAIN/og.png"> <!-- 1200×630 ideally -->
<meta name="twitter:card" content="summary_large_image">
```
## `robots.txt` (site root)
```
User-agent: *
Allow: /
Sitemap: https://DOMAIN/sitemap.xml
```
Only `Disallow:` paths that genuinely shouldn't be indexed (admin, cart,
thank-you). Don't block CSS/JS.
## `sitemap.xml` (site root)
```xml
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://DOMAIN/</loc><lastmod>YYYY-MM-DD</lastmod></url>
<url><loc>https://DOMAIN/about</loc><lastmod>YYYY-MM-DD</lastmod></url>
</urlset>
```
List only real, canonical, indexable URLs (no dupes, no query-string variants).
## JSON-LD (in `<head>` or end of `<body>`)
Pick the type that fits; validate before shipping.
```html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Brand",
"url": "https://DOMAIN/",
"logo": "https://DOMAIN/logo.png"
}
</script>
```
Common types: `WebSite` (+ `SearchAction`), `Organization` / `LocalBusiness`
(add `address`, `telephone`, `openingHours`), `Product` (`offers`, `brand`,
`gtin`), `Article` (`headline`, `datePublished`, `author`).
**Don't add `FAQPage` or `HowTo` expecting search features** — Google retired
FAQ rich results for all sites on 2026-05-07 and HowTo earlier. Both remain
valid schema.org markup, but they earn nothing; only add them if the visible
FAQ itself is useful.
Multiple entities on one page: combine them in ONE script tag using `@graph`,
with stable `@id` fragments cross-referencing instead of duplicating:
```json
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://DOMAIN/#organization", "name": "Brand", "url": "https://DOMAIN/", "logo": "https://DOMAIN/logo.png" },
{ "@type": "Article", "@id": "https://DOMAIN/PATH#article", "headline": "…", "datePublished": "YYYY-MM-DD", "publisher": { "@id": "https://DOMAIN/#organization" } }
]
}
```
Keep `@id` values stable across rebuilds (URL + `#fragment`, never random).
Validate at https://validator.schema.org (schema validity); use Google's Rich
Results Test only for types Google actually supports as rich results.
## `llms.txt` (site root — AI discoverability)
Plain markdown so assistants can read + cite the site. Keep it current and
under 10KB. Honest framing: **Google ignores llms.txt** — it serves the other
AI assistants (see [ai-discoverability.md](ai-discoverability.md)).
```
# Brand — what we do
One-paragraph plain-English description of the business/product and who it's for.
## Key pages
- [Home](https://DOMAIN/): …
- [Pricing](https://DOMAIN/pricing): …
- [Contact](https://DOMAIN/contact): …
## Facts
- Location, hours, contact — only true, verifiable facts.
```
## Length + quality rules
- Titles ≤60, descriptions ≤155 chars, each unique across the site.
- One `<h1>` per page; descriptive; not keyword-stuffed.
- Alt text on meaningful images.
- Every claim in `llms.txt`/JSON-LD must be true — never invent facts or reviews.