@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.
Files changed (36) hide show
  1. package/bin/maggie.js +152 -0
  2. package/bundled-references/ai-native-blog-contract.md +310 -0
  3. package/bundled-references/blog-data-contract.md +146 -0
  4. package/bundled-references/blog-implementation.md +46 -0
  5. package/bundled-references/blog-operations-contract.md +68 -0
  6. package/bundled-references/browser-inspection.md +39 -0
  7. package/bundled-references/provider-adapter-contract.md +68 -0
  8. package/bundled-references/seo-technical-contract.md +75 -0
  9. package/bundled-skills/README.md +16 -0
  10. package/bundled-skills/maggie-blog-bootstrap/SKILL.md +243 -0
  11. package/bundled-skills/maggie-clone/SKILL.md +213 -0
  12. package/bundled-skills/maggie-deployment/SKILL.md +61 -0
  13. package/bundled-skills/maggie-deployment/agents/openai.yaml +4 -0
  14. package/bundled-skills/maggie-deployment/references/cloudflare.md +76 -0
  15. package/bundled-skills/maggie-deployment/references/provider-contract.md +32 -0
  16. package/bundled-skills/maggie-project-context/SKILL.md +38 -0
  17. package/bundled-skills/maggie-seo-geo/SKILL.md +53 -0
  18. package/bundled-skills/maggie-social-share/SKILL.md +48 -0
  19. package/bundled-tools/clis/maggie.py +748 -0
  20. package/bundled-tools/clis/maggie_clone.py +82 -0
  21. package/bundled-tools/clis/site_audit.py +99 -0
  22. package/bundled-tools/integrations/analytics.md +34 -0
  23. package/bundled-tools/integrations/maggie-api-pull.md +72 -0
  24. package/bundled-tools/integrations/maggie-project-context.md +62 -0
  25. package/bundled-tools/integrations/maggie-seo-audit.md +16 -0
  26. package/bundled-tools/integrations/maggie-skills-api.md +76 -0
  27. package/bundled-tools/integrations/maggie-social-share.md +23 -0
  28. package/bundled-tools/integrations/maggie-visibility.md +22 -0
  29. package/package.json +29 -0
  30. package/references/ai-native-blog-contract.md +310 -0
  31. package/references/blog-data-contract.md +146 -0
  32. package/references/blog-implementation.md +46 -0
  33. package/references/blog-operations-contract.md +68 -0
  34. package/references/browser-inspection.md +39 -0
  35. package/references/provider-adapter-contract.md +68 -0
  36. 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.