@topy-ai/maggie 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/maggie.js +152 -0
- package/bundled-references/ai-native-blog-contract.md +310 -0
- package/bundled-references/blog-data-contract.md +146 -0
- package/bundled-references/blog-implementation.md +46 -0
- package/bundled-references/blog-operations-contract.md +68 -0
- package/bundled-references/browser-inspection.md +39 -0
- package/bundled-references/provider-adapter-contract.md +68 -0
- package/bundled-references/seo-technical-contract.md +75 -0
- package/bundled-skills/README.md +16 -0
- package/bundled-skills/maggie-blog-bootstrap/SKILL.md +243 -0
- package/bundled-skills/maggie-clone/SKILL.md +213 -0
- package/bundled-skills/maggie-deployment/SKILL.md +61 -0
- package/bundled-skills/maggie-deployment/agents/openai.yaml +4 -0
- package/bundled-skills/maggie-deployment/references/cloudflare.md +76 -0
- package/bundled-skills/maggie-deployment/references/provider-contract.md +32 -0
- package/bundled-skills/maggie-project-context/SKILL.md +38 -0
- package/bundled-skills/maggie-seo-geo/SKILL.md +53 -0
- package/bundled-skills/maggie-social-share/SKILL.md +48 -0
- package/bundled-tools/clis/maggie.py +748 -0
- package/bundled-tools/clis/maggie_clone.py +82 -0
- package/bundled-tools/clis/site_audit.py +99 -0
- package/bundled-tools/integrations/analytics.md +34 -0
- package/bundled-tools/integrations/maggie-api-pull.md +72 -0
- package/bundled-tools/integrations/maggie-project-context.md +62 -0
- package/bundled-tools/integrations/maggie-seo-audit.md +16 -0
- package/bundled-tools/integrations/maggie-skills-api.md +76 -0
- package/bundled-tools/integrations/maggie-social-share.md +23 -0
- package/bundled-tools/integrations/maggie-visibility.md +22 -0
- package/package.json +29 -0
- package/references/ai-native-blog-contract.md +310 -0
- package/references/blog-data-contract.md +146 -0
- package/references/blog-implementation.md +46 -0
- package/references/blog-operations-contract.md +68 -0
- package/references/browser-inspection.md +39 -0
- package/references/provider-adapter-contract.md +68 -0
- package/references/seo-technical-contract.md +75 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Maggie SEO Technical Contract
|
|
2
|
+
|
|
3
|
+
This contract fixes the SEO output that agents should generate. Layout and
|
|
4
|
+
visual design remain flexible; these page-level signals are not optional.
|
|
5
|
+
|
|
6
|
+
## Required post metadata
|
|
7
|
+
|
|
8
|
+
Every published post response should contain exactly one of each where
|
|
9
|
+
applicable:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
<title>{title} | {site name}</title>
|
|
13
|
+
<meta name="description" content="{excerpt}">
|
|
14
|
+
<link rel="canonical" href="{absolute canonical URL}">
|
|
15
|
+
<meta property="og:type" content="article">
|
|
16
|
+
<meta property="og:title" content="{title}">
|
|
17
|
+
<meta property="og:description" content="{excerpt}">
|
|
18
|
+
<meta property="og:url" content="{absolute canonical URL}">
|
|
19
|
+
<meta property="og:image" content="{absolute image URL}">
|
|
20
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
21
|
+
<meta name="twitter:title" content="{title}">
|
|
22
|
+
<meta name="twitter:description" content="{excerpt}">
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Rules:
|
|
26
|
+
|
|
27
|
+
- Escape all values for HTML attributes and JSON-LD.
|
|
28
|
+
- Use the configured site origin; never derive canonical URLs from an
|
|
29
|
+
untrusted `Host` header.
|
|
30
|
+
- Do not index preview, query-string, draft, login, or error URLs.
|
|
31
|
+
- Do not emit empty descriptions, relative canonical URLs, or placeholder image
|
|
32
|
+
URLs.
|
|
33
|
+
- A post page has one visible `h1`; headings in body content start at `h2`.
|
|
34
|
+
|
|
35
|
+
## Article JSON-LD
|
|
36
|
+
|
|
37
|
+
Emit one `Article` or `BlogPosting` object that agrees with visible content:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"@context": "https://schema.org",
|
|
42
|
+
"@type": "Article",
|
|
43
|
+
"headline": "Post title",
|
|
44
|
+
"description": "Post excerpt",
|
|
45
|
+
"mainEntityOfPage": { "@type": "WebPage", "@id": "https://example.com/posts/post-title" },
|
|
46
|
+
"url": "https://example.com/posts/post-title",
|
|
47
|
+
"datePublished": "2026-08-28T00:00:00Z",
|
|
48
|
+
"dateModified": "2026-08-28T00:00:00Z",
|
|
49
|
+
"author": { "@type": "Person", "name": "Author" },
|
|
50
|
+
"publisher": { "@type": "Organization", "name": "Site name" },
|
|
51
|
+
"image": ["https://example.com/images/post-title.jpg"]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Never invent an author, date, publisher, review, rating, or image. Omit an
|
|
56
|
+
optional property when the source does not provide it. JSON-LD must not claim
|
|
57
|
+
facts that are absent from the rendered page.
|
|
58
|
+
|
|
59
|
+
## Crawl surfaces
|
|
60
|
+
|
|
61
|
+
`robots.txt` must be a successful plain-text response and reference the
|
|
62
|
+
absolute sitemap URL. The sitemap must:
|
|
63
|
+
|
|
64
|
+
- contain only canonical, published post URLs;
|
|
65
|
+
- use valid XML and an absolute `<loc>`;
|
|
66
|
+
- include `<lastmod>` only when it is a trustworthy ISO date;
|
|
67
|
+
- exclude drafts, redirects, duplicates, unmatched records, and query URLs;
|
|
68
|
+
- use a sitemap index when the output exceeds the chosen URL limit.
|
|
69
|
+
|
|
70
|
+
## Acceptance checks
|
|
71
|
+
|
|
72
|
+
The adapter or CLI should fail the build or preview check when a published
|
|
73
|
+
post has a missing title, slug, canonical URL, publication date, metadata,
|
|
74
|
+
JSON-LD, or sitemap eligibility decision. Also test a draft, an unpublished
|
|
75
|
+
post, a missing slug, a changed slug with redirect, and a failed content sync.
|