@awesomate/hosting-mcp 0.18.0 → 0.19.1
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/README.md +72 -45
- package/dist/index.js +473 -31
- package/package.json +3 -3
- package/skill/CHANGELOG.json +35 -0
- package/skill/awesomate-app-builder/SKILL.md +6 -3
- package/skill/awesomate-app-builder/references/node-recipes.md +3 -2
- package/skill/awesomate-app-builder/references/stack-decision.md +1 -1
- package/skill/awesomate-hosting/SKILL.md +84 -18
- package/skill/awesomate-hosting/scripts/bootstrap.mjs +11 -4
- package/skill/awesomate-knowledge/SKILL.md +12 -0
- package/skill/awesomate-n8n/SKILL.md +28 -2
- package/skill/awesomate-n8n/references/error-handling.md +91 -0
- package/skill/awesomate-n8n/references/possibilities.md +32 -0
- package/skill/awesomate-n8n/references/recurring-reports.md +82 -0
- package/skill/awesomate-n8n/references/troubleshooting.md +28 -0
- package/skill/awesomate-seo/SKILL.md +38 -3
|
@@ -3,6 +3,34 @@
|
|
|
3
3
|
Diagnosis playbook. Work the flow top-to-bottom; do not jump to fixes before
|
|
4
4
|
you have the failing execution's detail.
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
## "Could not create the draft" / writes fail while reads work
|
|
8
|
+
|
|
9
|
+
If reads, `awesomate_n8n_context` and `validate` all succeed but every WRITE
|
|
10
|
+
(create draft, activate, promote, test-fire) fails, the cause is almost always
|
|
11
|
+
the account's stored n8n API key — not the hub, not Cloudflare, not the
|
|
12
|
+
workflow JSON. Validation runs on Awesomate's side and never touches the
|
|
13
|
+
instance, which is exactly why it keeps passing.
|
|
14
|
+
|
|
15
|
+
The server says so explicitly: HTTP **409** with `code: n8n_credential_invalid`.
|
|
16
|
+
Older builds reported this as a 502, which reads like an outage — if you see a
|
|
17
|
+
bare 502 on writes only, suspect the key before you suspect the platform.
|
|
18
|
+
|
|
19
|
+
**Tell the user to do this, in this order:**
|
|
20
|
+
|
|
21
|
+
1. Open their n8n (the response's `instanceUrl`, e.g. `https://<slug>.awesomate.io`)
|
|
22
|
+
→ **Settings → n8n API** → **Create an API key**. Copy it.
|
|
23
|
+
2. Open **https://hub.awesomate.ai/n8n/settings** → paste it into
|
|
24
|
+
**"New n8n API Key"** → save. The status chip should go from
|
|
25
|
+
*Key rejected* to *Connected*.
|
|
26
|
+
3. Retry the action.
|
|
27
|
+
|
|
28
|
+
Do not retry before they confirm the new key is saved, and do not go probing
|
|
29
|
+
hub or Cloudflare status — a genuine hub problem breaks reads too.
|
|
30
|
+
|
|
31
|
+
Common causes: the key was revoked or regenerated in n8n, or the instance was
|
|
32
|
+
rebuilt (a rebuilt instance shows 0 workflows and invalidates every old key).
|
|
33
|
+
|
|
6
34
|
## Diagnosis flow
|
|
7
35
|
|
|
8
36
|
1. `awesomate_n8n_context` — confirm consent flags, capabilities, and the
|
|
@@ -20,9 +20,10 @@ Be honest about limits: these are the signals that *let* you rank and be cited
|
|
|
20
20
|
- **WordPress** → drive it through WP-CLI via the awesomate-hosting skill
|
|
21
21
|
(`wp` passthrough). Install a free SEO plugin + let it generate the sitemap
|
|
22
22
|
rather than hand-writing files (see §WordPress).
|
|
23
|
-
- **A shop (WooCommerce)** →
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- **A shop (WooCommerce)** → same WordPress path, plus `Product` JSON-LD on
|
|
24
|
+
product pages and product-data quality (real titles, descriptions, images,
|
|
25
|
+
prices) — drive it through WP-CLI like any WordPress site. This skill
|
|
26
|
+
covers the site-level SEO around the shop.
|
|
26
27
|
|
|
27
28
|
## 1. Static / Node — write these
|
|
28
29
|
|
|
@@ -56,6 +57,10 @@ Through the awesomate-hosting skill's `wp` passthrough:
|
|
|
56
57
|
- Confirm the sitemap is live (`/sitemap_index.xml` or `/sitemap.xml`) and
|
|
57
58
|
`robots.txt` references it.
|
|
58
59
|
- Add an `llms.txt` at the site root for AI discoverability (the plugin won't).
|
|
60
|
+
- Posts and pages can be created/updated directly via `awesomate_wp_post`
|
|
61
|
+
(drafts first — the user approves publishing). Useful for adding the content
|
|
62
|
+
pages that back up `llms.txt` — a services overview, an FAQ, an about page —
|
|
63
|
+
when the site is thin on machine-readable substance.
|
|
59
64
|
- WordPress is the recommended stack precisely when SEO/organic reach matters —
|
|
60
65
|
lean into it here.
|
|
61
66
|
|
|
@@ -74,6 +79,36 @@ Through the awesomate-hosting skill's `wp` passthrough:
|
|
|
74
79
|
Tell the user the next step is submitting the sitemap in Google Search Console
|
|
75
80
|
(you can't do that for them) — offer a one-paragraph how-to if they want it.
|
|
76
81
|
|
|
82
|
+
## 4. Ongoing upkeep — the seo-healthcheck
|
|
83
|
+
|
|
84
|
+
SEO decays quietly: a plugin update flips an option, an edge rule starts
|
|
85
|
+
challenging crawlers, a sitemap stops regenerating. Run this routine whenever
|
|
86
|
+
the user asks to "check SEO", and after any content change:
|
|
87
|
+
|
|
88
|
+
1. **Content in the raw HTML** — `curl -s https://DOMAIN/page` and confirm the
|
|
89
|
+
key content is actually in the response, not rendered later by JavaScript.
|
|
90
|
+
2. **Sitemap** — `/sitemap.xml` (WP: `/sitemap_index.xml`) returns 200 and
|
|
91
|
+
`<lastmod>` is fresh. A months-old lastmod on a site that changed last week
|
|
92
|
+
means generation is broken, not that nothing changed.
|
|
93
|
+
3. **robots.txt + llms.txt** — both exist, and `llms.txt` still mentions the
|
|
94
|
+
current offerings. A stale llms.txt misdescribes the business to every AI
|
|
95
|
+
assistant that reads it.
|
|
96
|
+
4. **AI crawlers not blocked at the edge** —
|
|
97
|
+
`curl -A "GPTBot" -s -o /dev/null -w "%{http_code}" https://DOMAIN/`
|
|
98
|
+
(repeat with `ClaudeBot`) returns 200, not 403 or a challenge page.
|
|
99
|
+
Where to fix each case: [references/ai-discoverability.md](references/ai-discoverability.md).
|
|
100
|
+
5. **WordPress only: `blog_public` must be 1** — one checkbox ("Discourage
|
|
101
|
+
search engines") silently de-indexes the whole site. Read it via
|
|
102
|
+
`awesomate_run_wp_cli` with args `['option','get','blog_public']`; if it's
|
|
103
|
+
0, fix with `['option','update','blog_public','1']` (allowlisted).
|
|
104
|
+
|
|
105
|
+
Report pass/fail per check, with the fix for each failure.
|
|
106
|
+
|
|
107
|
+
**Make it automatic:** offer — once — to build a scheduled n8n workflow (via
|
|
108
|
+
the awesomate-n8n skill) that runs these checks weekly and emails the user the
|
|
109
|
+
result. A weekly email is what turns "SEO as ongoing" from a good intention
|
|
110
|
+
into a mechanism.
|
|
111
|
+
|
|
77
112
|
## Hard rules
|
|
78
113
|
- Never fabricate content, reviews, or business facts to "help SEO".
|
|
79
114
|
- Never claim these guarantee a ranking — they make the site *eligible* and
|