@respira/wordpress-mcp-server 8.0.3 → 8.0.5
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/dist/__tests__/redeem-merge.test.d.ts +2 -0
- package/dist/__tests__/redeem-merge.test.d.ts.map +1 -0
- package/dist/__tests__/redeem-merge.test.js +60 -0
- package/dist/__tests__/redeem-merge.test.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +43 -7
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/content-portability/SKILL.md +402 -0
- package/skills/site-onboarding/SKILL.md +163 -0
- package/skills/woo-agent-storefront/SKILL.md +102 -0
- package/skills/woo-catalog-perfection/SKILL.md +78 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@respira/wordpress-mcp-server",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.5",
|
|
4
4
|
"mcpName": "io.github.webmyc/respira-wordpress",
|
|
5
5
|
"description": "197 MCP tools for WordPress, 302 with the WooCommerce add-on, across 16 page builders and the native Site Editor. Verified writes, snapshots, approvals, and context-aware tool filtering.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-portability
|
|
3
|
+
description: "Use when the user says 'export my site', 'backup my pages before editing', 'download my content locally', or 'migrate content to my other site'. Exports pages, posts, and custom posts to portable local packages with builder data, media, and markdown, then imports elsewhere with ID remapping."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: Respira for WordPress
|
|
7
|
+
author_url: https://respira.press
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
mcp-server: respira-wordpress
|
|
10
|
+
category: migration
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Content Portability
|
|
14
|
+
|
|
15
|
+
Export WordPress content to portable local packages. Import to another site with smart ID remapping. Auto-backup before AI edits. Full builder data preservation, human-readable markdown previews, and optional media download.
|
|
16
|
+
|
|
17
|
+
## What This Skill Does
|
|
18
|
+
|
|
19
|
+
**Exports:**
|
|
20
|
+
- Pages, posts, and custom post types — individually or in bulk
|
|
21
|
+
- Full builder data (Elementor, Bricks, Divi, etc.) alongside standard content
|
|
22
|
+
- Allowlisted post meta (SEO fields, featured images, builder config)
|
|
23
|
+
- Human-readable markdown preview of every page/post
|
|
24
|
+
- Optional media binary download for fully offline packages
|
|
25
|
+
- Manifest with hashes, stats, and export metadata
|
|
26
|
+
|
|
27
|
+
**Imports:**
|
|
28
|
+
- Reads a local Respira Content Package and pushes to a target WordPress site
|
|
29
|
+
- Smart ID remapping — media IDs, post IDs, and internal links rewritten for the target site
|
|
30
|
+
- Bulk conflict resolution — detects slug collisions upfront, one decision for all
|
|
31
|
+
- Mandatory server-side snapshots before any overwrites (safety net)
|
|
32
|
+
- Builder JSON rewriting with full ID mapping tables
|
|
33
|
+
- Fidelity verification — re-reads imported content and compares hashes
|
|
34
|
+
|
|
35
|
+
**Auto-Backup:**
|
|
36
|
+
- Quick-backup mode before any AI edit — saves a local snapshot to `./respira-backups/`
|
|
37
|
+
- Timestamped, human-readable, zero-friction insurance
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
- Respira for WordPress plugin installed and activated
|
|
42
|
+
- MCP connection configured (site URL + API key)
|
|
43
|
+
- For import: write access on the target site
|
|
44
|
+
- For media download: sufficient local disk space
|
|
45
|
+
|
|
46
|
+
## How to Use
|
|
47
|
+
|
|
48
|
+
### Trigger Phrases
|
|
49
|
+
- "export my site"
|
|
50
|
+
- "export the homepage"
|
|
51
|
+
- "backup my pages before editing"
|
|
52
|
+
- "download my content locally"
|
|
53
|
+
- "migrate content to my other site"
|
|
54
|
+
- "content portability"
|
|
55
|
+
- "create a local backup"
|
|
56
|
+
- "export with media"
|
|
57
|
+
|
|
58
|
+
### Export Workflow
|
|
59
|
+
|
|
60
|
+
**Phase 1: Scope Selection**
|
|
61
|
+
1. Ask the user what to export:
|
|
62
|
+
- **Single page/post**: "export the homepage", "backup the about page"
|
|
63
|
+
- **Full site**: "export everything", "download all my content"
|
|
64
|
+
- **By type**: "export all blog posts", "export portfolio items"
|
|
65
|
+
2. Ask whether to include media downloads:
|
|
66
|
+
- **Without media** (default): Fast, small packages with URL references
|
|
67
|
+
- **With media**: Downloads all referenced images/files locally for full offline portability
|
|
68
|
+
|
|
69
|
+
**Phase 2: Content Enumeration**
|
|
70
|
+
3. Call `wordpress_list_pages`, `wordpress_list_posts`, and/or `wordpress_list_custom_posts` to enumerate content in scope
|
|
71
|
+
4. For each item, call `wordpress_read_page` or `wordpress_read_post` with `include=builder.extracted,meta.allowlisted` to get full content with builder data
|
|
72
|
+
5. Report progress every 10 items: "Exported 30/120 pages..."
|
|
73
|
+
|
|
74
|
+
**Phase 3: Write Local Package**
|
|
75
|
+
6. Create the export directory structure:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
respira-export/
|
|
79
|
+
├── manifest.json # Package metadata, source site, export date, hashes
|
|
80
|
+
├── README.md # One-line import prompt for zero-friction migration
|
|
81
|
+
├── pages/
|
|
82
|
+
│ ├── home/
|
|
83
|
+
│ │ ├── content.json # Full machine-readable export
|
|
84
|
+
│ │ └── content.md # Human-readable markdown preview
|
|
85
|
+
│ ├── about/
|
|
86
|
+
│ │ ├── content.json
|
|
87
|
+
│ │ └── content.md
|
|
88
|
+
│ └── ...
|
|
89
|
+
├── posts/
|
|
90
|
+
│ ├── 2024-hello-world/
|
|
91
|
+
│ │ ├── content.json
|
|
92
|
+
│ │ └── content.md
|
|
93
|
+
│ └── ...
|
|
94
|
+
├── cpt/ # Custom post types
|
|
95
|
+
│ └── {post_type}/
|
|
96
|
+
│ └── {slug}/
|
|
97
|
+
│ ├── content.json
|
|
98
|
+
│ └── content.md
|
|
99
|
+
└── media/ # Only if --with-media
|
|
100
|
+
├── media-index.json # URL→local-path mapping with old media IDs
|
|
101
|
+
└── uploads/
|
|
102
|
+
├── hero-image.webp
|
|
103
|
+
└── ...
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
7. For each page/post, write two files:
|
|
107
|
+
|
|
108
|
+
**content.json** — machine-readable, contains:
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"export_version": "1.0",
|
|
112
|
+
"source_site": "https://example.com",
|
|
113
|
+
"exported_at": "2026-03-16T14:30:00Z",
|
|
114
|
+
"post": {
|
|
115
|
+
"id": 42,
|
|
116
|
+
"post_type": "page",
|
|
117
|
+
"title": "About Us",
|
|
118
|
+
"slug": "about",
|
|
119
|
+
"status": "publish",
|
|
120
|
+
"content": "<full HTML content>",
|
|
121
|
+
"excerpt": "...",
|
|
122
|
+
"modified": "2026-03-10T09:00:00Z"
|
|
123
|
+
},
|
|
124
|
+
"builder": {
|
|
125
|
+
"name": "bricks",
|
|
126
|
+
"payload": {},
|
|
127
|
+
"extracted": {}
|
|
128
|
+
},
|
|
129
|
+
"meta": {
|
|
130
|
+
"_thumbnail_id": 108,
|
|
131
|
+
"_yoast_wpseo_title": "About Us | Example"
|
|
132
|
+
},
|
|
133
|
+
"hashes": {
|
|
134
|
+
"content_hash": "sha256:abc123...",
|
|
135
|
+
"builder_hash": "sha256:def456...",
|
|
136
|
+
"meta_hash": "sha256:ghi789..."
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**content.md** — human-readable markdown preview:
|
|
142
|
+
```markdown
|
|
143
|
+
# About Us
|
|
144
|
+
|
|
145
|
+
**Source:** https://example.com/about/
|
|
146
|
+
**Type:** page | **Status:** publish | **Builder:** Bricks
|
|
147
|
+
**Exported:** 2026-03-16
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
[Rendered text content extracted from HTML, preserving headings and structure]
|
|
152
|
+
|
|
153
|
+
## Section: Hero
|
|
154
|
+
- Heading: "Welcome to Our Company"
|
|
155
|
+
- Text: "We've been helping businesses..."
|
|
156
|
+
- Image: hero-team-photo.webp (Media ID: 108)
|
|
157
|
+
|
|
158
|
+
## Section: Team
|
|
159
|
+
- Heading: "Meet the Team"
|
|
160
|
+
...
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
8. If media download is enabled:
|
|
164
|
+
- Call `wordpress_list_media` to get all media items
|
|
165
|
+
- Filter to only media referenced by exported content
|
|
166
|
+
- Download each file and save to `media/uploads/`
|
|
167
|
+
- Write `media/media-index.json` mapping old URLs and IDs to local paths
|
|
168
|
+
|
|
169
|
+
**Phase 4: Manifest & Stats**
|
|
170
|
+
9. Write `manifest.json`:
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"export_version": "1.0",
|
|
174
|
+
"source_site": "https://example.com",
|
|
175
|
+
"source_wordpress_version": "6.7.1",
|
|
176
|
+
"source_respira_version": "4.3.1",
|
|
177
|
+
"exported_at": "2026-03-16T14:30:00Z",
|
|
178
|
+
"scope": "full_site",
|
|
179
|
+
"content": {
|
|
180
|
+
"pages": 23,
|
|
181
|
+
"posts": 8,
|
|
182
|
+
"custom_post_types": { "portfolio": 12, "testimonial": 5 }
|
|
183
|
+
},
|
|
184
|
+
"media": {
|
|
185
|
+
"included": true,
|
|
186
|
+
"files": 156,
|
|
187
|
+
"total_bytes": 52428800
|
|
188
|
+
},
|
|
189
|
+
"warnings": [],
|
|
190
|
+
"skipped": [],
|
|
191
|
+
"hashes": {
|
|
192
|
+
"manifest_hash": "sha256:..."
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
10. Write `README.md`:
|
|
198
|
+
```markdown
|
|
199
|
+
# Respira Content Package
|
|
200
|
+
|
|
201
|
+
Exported from: https://example.com
|
|
202
|
+
Date: 2026-03-16
|
|
203
|
+
Contents: 23 pages, 8 posts, 17 custom posts, 156 media files
|
|
204
|
+
|
|
205
|
+
## To import this content to another site
|
|
206
|
+
|
|
207
|
+
Tell your AI agent:
|
|
208
|
+
> Import the content package from ./respira-export/
|
|
209
|
+
|
|
210
|
+
## Package format
|
|
211
|
+
- content.json files contain full machine-readable content with builder data
|
|
212
|
+
- content.md files are human-readable previews
|
|
213
|
+
- media/ contains downloaded media files (if included)
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
11. Show export stats summary:
|
|
217
|
+
```
|
|
218
|
+
Export Complete
|
|
219
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
220
|
+
Pages exported: 23
|
|
221
|
+
Posts exported: 8
|
|
222
|
+
Custom posts: 17
|
|
223
|
+
Media files: 156
|
|
224
|
+
Package size: 52.4 MB
|
|
225
|
+
Warnings: 0
|
|
226
|
+
Skipped: 0
|
|
227
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
228
|
+
Saved to: ./respira-export/
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Import Workflow
|
|
232
|
+
|
|
233
|
+
**Phase 1: Read & Validate Package**
|
|
234
|
+
1. Read `manifest.json` from the local package
|
|
235
|
+
2. Validate export version compatibility
|
|
236
|
+
3. Report what will be imported: "Found 23 pages, 8 posts, 156 media files from example.com"
|
|
237
|
+
|
|
238
|
+
**Phase 2: Upload Media (if included)**
|
|
239
|
+
4. If `media/` directory exists with files:
|
|
240
|
+
- For each media file, call `wordpress_upload_media` on the target site
|
|
241
|
+
- Build the **media ID mapping table**: `{ old_id: 108, new_id: 342 }`
|
|
242
|
+
- Log each upload; skip failures with warning
|
|
243
|
+
5. If media was not included in the package:
|
|
244
|
+
- Media references will point to original URLs (cross-site references)
|
|
245
|
+
- Warn the user about this
|
|
246
|
+
|
|
247
|
+
**Phase 3: Detect Conflicts**
|
|
248
|
+
6. For each content item in the package, check if a page/post with the same slug already exists on the target site
|
|
249
|
+
7. Present all conflicts upfront in a single table:
|
|
250
|
+
```
|
|
251
|
+
Slug Conflicts Detected (5 of 23 pages)
|
|
252
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
253
|
+
Slug Source Title Target Title
|
|
254
|
+
about About Us About Our Company
|
|
255
|
+
contact Contact Contact Us
|
|
256
|
+
team Our Team The Team
|
|
257
|
+
services Services Our Services
|
|
258
|
+
faq FAQ FAQ
|
|
259
|
+
```
|
|
260
|
+
8. Ask the user for a bulk resolution strategy:
|
|
261
|
+
- **Overwrite all**: Replace target content with package content
|
|
262
|
+
- **Skip conflicts**: Only import non-conflicting content
|
|
263
|
+
- **Rename imports**: Add suffix to conflicting slugs (e.g., `about-imported`)
|
|
264
|
+
|
|
265
|
+
**Phase 4: Snapshot Existing Content**
|
|
266
|
+
9. **MANDATORY**: Before overwriting any existing content, take a server-side snapshot of each target page/post using the existing snapshot system
|
|
267
|
+
- This uses the `before_edit` snapshot kind automatically via MCP write operations
|
|
268
|
+
- Ensures rollback is always possible
|
|
269
|
+
|
|
270
|
+
**Phase 5: Create/Update Content**
|
|
271
|
+
10. For each content item:
|
|
272
|
+
- If no conflict or overwrite strategy: call `wordpress_update_page` or `wordpress_update_post`
|
|
273
|
+
- Set title, content, excerpt, status, and allowlisted meta
|
|
274
|
+
- Build the **post ID mapping table**: `{ old_id: 42, new_id: 187 }`
|
|
275
|
+
11. Report progress every 10 items
|
|
276
|
+
|
|
277
|
+
**Phase 6: Rewrite & Inject Builder Data**
|
|
278
|
+
12. For each imported page/post that has builder data:
|
|
279
|
+
- Take the builder JSON from `content.json`
|
|
280
|
+
- Rewrite all media IDs using the media ID mapping table
|
|
281
|
+
- Rewrite all internal post/page IDs using the post ID mapping table
|
|
282
|
+
- Rewrite all internal URLs from source domain to target domain
|
|
283
|
+
- Call `wordpress_inject_builder_content` to apply the rewritten builder data
|
|
284
|
+
|
|
285
|
+
**Phase 7: Verify & Report**
|
|
286
|
+
13. For each imported page/post:
|
|
287
|
+
- Re-read via `wordpress_read_page`/`wordpress_read_post`
|
|
288
|
+
- Compare content hashes to source hashes
|
|
289
|
+
- Flag any mismatches
|
|
290
|
+
14. Show import report:
|
|
291
|
+
```
|
|
292
|
+
Import Complete
|
|
293
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
294
|
+
Pages imported: 23 (5 overwrites, 18 new)
|
|
295
|
+
Posts imported: 8 (0 overwrites, 8 new)
|
|
296
|
+
Media uploaded: 156 (2 skipped — too large)
|
|
297
|
+
Builder data: 19 pages with builder content rewritten
|
|
298
|
+
ID remappings: 187 references updated
|
|
299
|
+
Hash verification: 46/48 match (2 minor diffs flagged)
|
|
300
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
301
|
+
Server-side snapshots taken for all overwrites.
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Auto-Backup Workflow
|
|
305
|
+
|
|
306
|
+
A lightweight mode for quick local backups before AI editing:
|
|
307
|
+
|
|
308
|
+
1. User says "backup the homepage before editing" or "save a local copy first"
|
|
309
|
+
2. Call `wordpress_read_page` with full includes
|
|
310
|
+
3. Write a single timestamped file: `./respira-backups/home-2026-03-16-1430.json`
|
|
311
|
+
4. Also write the markdown preview: `./respira-backups/home-2026-03-16-1430.md`
|
|
312
|
+
5. Confirm: "Backed up homepage to ./respira-backups/home-2026-03-16-1430.json"
|
|
313
|
+
6. Proceed with the requested edit
|
|
314
|
+
|
|
315
|
+
### Diff Workflow
|
|
316
|
+
|
|
317
|
+
Compare local export against current site state:
|
|
318
|
+
|
|
319
|
+
1. User says "what changed since my last export?" or "diff my backup"
|
|
320
|
+
2. Read the local `manifest.json` to identify exported content
|
|
321
|
+
3. For each exported page/post, call `wordpress_read_page`/`wordpress_read_post`
|
|
322
|
+
4. Compare content hashes from local `content.json` against current site hashes
|
|
323
|
+
5. Report differences:
|
|
324
|
+
```
|
|
325
|
+
Content Changes Since Export (2026-03-16)
|
|
326
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
327
|
+
Changed:
|
|
328
|
+
about Content updated (builder + text)
|
|
329
|
+
homepage Builder layout changed
|
|
330
|
+
pricing Text content changed
|
|
331
|
+
|
|
332
|
+
Unchanged: 21 pages, 8 posts
|
|
333
|
+
New on site: 2 pages (not in export)
|
|
334
|
+
Deleted: 0 pages
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Error Handling
|
|
338
|
+
|
|
339
|
+
The skill must handle these scenarios gracefully:
|
|
340
|
+
|
|
341
|
+
| Error | Action | User Sees |
|
|
342
|
+
|-------|--------|-----------|
|
|
343
|
+
| Site disconnected | Stop, report what was saved | "Site unreachable — 45/120 pages saved" |
|
|
344
|
+
| Page not found mid-export | Skip, log in manifest warnings | "Skipped: About (deleted)" |
|
|
345
|
+
| Malformed builder data | Export raw content without builder | Warning in manifest |
|
|
346
|
+
| Disk full | Stop, report progress | "Disk full after 45 pages" |
|
|
347
|
+
| Media download 404/403 | Skip file, log in media-index | "Skipped 3 media files" |
|
|
348
|
+
| Slug conflict on import | Bulk resolution (see Phase 3) | Conflict table |
|
|
349
|
+
| Media upload too large | Skip, log | "Skipped: hero.webp (too large)" |
|
|
350
|
+
| Builder version mismatch | Warn, import anyway | Warning in report |
|
|
351
|
+
|
|
352
|
+
**Key rule**: Always continue on non-fatal errors (skip the item, log it). Never silently drop content. Always produce a summary of warnings/skips at the end.
|
|
353
|
+
|
|
354
|
+
## Safety Model
|
|
355
|
+
|
|
356
|
+
- **Read-only export**: No changes to the source site during export
|
|
357
|
+
- **Mandatory snapshots**: Server-side snapshot taken before every import overwrite
|
|
358
|
+
- **Non-destructive import**: Creates new content or overwrites with snapshot safety net
|
|
359
|
+
- **Rollback ready**: Server-side snapshots enable one-click restoration via `wordpress_restore_snapshot`
|
|
360
|
+
- **No credential exposure**: Only allowlisted meta is exported — no API keys, passwords, or sensitive plugin settings
|
|
361
|
+
|
|
362
|
+
## Honest Disclaimer
|
|
363
|
+
|
|
364
|
+
**What this skill CANNOT do:**
|
|
365
|
+
- Export/import WordPress settings, options, or configuration
|
|
366
|
+
- Export/import user accounts or roles
|
|
367
|
+
- Export/import plugin or theme files
|
|
368
|
+
- Handle taxonomy/term migration (categories, tags) — future enhancement
|
|
369
|
+
- Guarantee pixel-perfect builder rendering across different builder versions
|
|
370
|
+
- Process sites with more than ~500 pages in a single session (token/context limits)
|
|
371
|
+
|
|
372
|
+
**What this skill CAN do:**
|
|
373
|
+
- Create complete local backups of pages, posts, and custom post types
|
|
374
|
+
- Preserve full builder data (Elementor, Bricks, Divi) across migrations
|
|
375
|
+
- Download media for fully offline packages
|
|
376
|
+
- Generate human-readable markdown previews of all content
|
|
377
|
+
- Migrate content between sites with smart ID remapping
|
|
378
|
+
- Auto-backup before AI edits for peace of mind
|
|
379
|
+
- Compare local backups against current site state
|
|
380
|
+
|
|
381
|
+
## Respira MCP Tools Used
|
|
382
|
+
|
|
383
|
+
- `wordpress_list_pages` / `wordpress_list_posts` / `wordpress_list_custom_posts` — enumerate content
|
|
384
|
+
- `wordpress_read_page` / `wordpress_read_post` / `wordpress_get_custom_post` — read full content with builder data
|
|
385
|
+
- `wordpress_list_media` / `wordpress_get_media` — media enumeration and metadata
|
|
386
|
+
- `wordpress_upload_media` — upload media during import
|
|
387
|
+
- `wordpress_update_page` / `wordpress_update_post` / `wordpress_update_custom_post` — create/update content during import
|
|
388
|
+
- `wordpress_inject_builder_content` — apply rewritten builder data during import
|
|
389
|
+
- `wordpress_get_active_site` / `wordpress_get_site_context` — verify connection and site details
|
|
390
|
+
- `wordpress_list_snapshots` / `wordpress_restore_snapshot` — safety net for imports
|
|
391
|
+
|
|
392
|
+
## Related Skills
|
|
393
|
+
|
|
394
|
+
- Site Onboarding — first-run primer, discovers site capabilities
|
|
395
|
+
- WordPress Site DNA — deep site archaeology and health scoring
|
|
396
|
+
- Technical Debt Audit — find orphaned content and unused plugins before migration
|
|
397
|
+
- WordPress AI Image Optimizer — optimize images before or after migration
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
Built by Respira for WordPress
|
|
402
|
+
https://respira.press
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: site-onboarding
|
|
3
|
+
description: "Use when the user says 'get started with my site', 'connect to my wordpress site', 'what can you do on my site', or 'onboard'. Verifies connectivity, discovers the site architecture, maps the available MCP tools, and produces a site briefing."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: Respira for WordPress
|
|
7
|
+
author_url: https://respira.press
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
mcp-server: respira-wordpress
|
|
10
|
+
category: onboarding
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Site Onboarding
|
|
14
|
+
|
|
15
|
+
First-run primer for AI coding tools connected to WordPress via Respira MCP. Verifies the connection, discovers everything about the site, and produces a briefing so you know exactly what you can do.
|
|
16
|
+
|
|
17
|
+
## What This Skill Does
|
|
18
|
+
|
|
19
|
+
Runs a structured onboarding sequence that:
|
|
20
|
+
- Verifies the MCP connection is live and authenticated
|
|
21
|
+
- Discovers site architecture (theme, plugins, builders, post types)
|
|
22
|
+
- Maps all available MCP tools and what they control
|
|
23
|
+
- Identifies which add-ons are active (WooCommerce, etc.)
|
|
24
|
+
- Produces a concise site briefing you can refer back to
|
|
25
|
+
- Introduces the Skills Marketplace and recommends skills based on the site
|
|
26
|
+
|
|
27
|
+
## Requirements
|
|
28
|
+
|
|
29
|
+
- Respira for WordPress plugin installed and activated
|
|
30
|
+
- MCP connection configured (site URL + API key)
|
|
31
|
+
- Read-only access (no changes made during onboarding)
|
|
32
|
+
|
|
33
|
+
## How to Use
|
|
34
|
+
|
|
35
|
+
### Trigger Phrases
|
|
36
|
+
- "get started with my site"
|
|
37
|
+
- "connect to my wordpress site"
|
|
38
|
+
- "what can you do on my site"
|
|
39
|
+
- "onboard"
|
|
40
|
+
- "site onboarding"
|
|
41
|
+
- "check the connection"
|
|
42
|
+
- "introduce yourself to my site"
|
|
43
|
+
|
|
44
|
+
### What Happens
|
|
45
|
+
|
|
46
|
+
1. **Verify connection:**
|
|
47
|
+
- Call `wordpress_get_active_site` to confirm which site is connected
|
|
48
|
+
- Call `wordpress_get_site_context` to pull full site details
|
|
49
|
+
- Report connection status, WordPress version, PHP version, site URL
|
|
50
|
+
|
|
51
|
+
2. **Discover site architecture:**
|
|
52
|
+
- Call `wordpress_list_plugins` to see all installed plugins (active and inactive)
|
|
53
|
+
- Call `wordpress_get_builder_info` to detect page builders (Elementor, Bricks, Divi, etc.)
|
|
54
|
+
- Call `wordpress_list_post_types` to map all content types
|
|
55
|
+
- Call `wordpress_list_taxonomies` to map all taxonomies
|
|
56
|
+
- Call `wordpress_list_pages` to understand content structure
|
|
57
|
+
- Call `wordpress_list_menus` to see navigation setup
|
|
58
|
+
|
|
59
|
+
3. **Map capabilities:**
|
|
60
|
+
- Based on active plugins and add-ons, list what you can do:
|
|
61
|
+
- Content management (pages, posts, custom post types)
|
|
62
|
+
- Builder editing (if Elementor/Bricks/Divi detected)
|
|
63
|
+
- Media management (upload, optimize, replace)
|
|
64
|
+
- SEO tools (if SEO plugin detected)
|
|
65
|
+
- WooCommerce management (if WooCommerce active)
|
|
66
|
+
- Menu and navigation management
|
|
67
|
+
- User management
|
|
68
|
+
- Plugin management
|
|
69
|
+
- Snapshot and approval workflows
|
|
70
|
+
|
|
71
|
+
4. **Generate site briefing:**
|
|
72
|
+
- Produce a structured summary the AI can reference throughout the session
|
|
73
|
+
- Highlight any issues detected (outdated plugins, security concerns)
|
|
74
|
+
- Recommend next steps based on what was discovered
|
|
75
|
+
|
|
76
|
+
5. **Introduce the Skills Marketplace:**
|
|
77
|
+
- Tell the user about the Respira Skills Marketplace — a collection of ready-to-run AI skills for WordPress
|
|
78
|
+
- List skills that are relevant to their site based on what was discovered:
|
|
79
|
+
- **WordPress Site DNA** — deep site archaeology and health scoring (recommend for all sites)
|
|
80
|
+
- **Technical Debt Audit** — find orphaned content, unused plugins, database bloat
|
|
81
|
+
- **WooCommerce Health Check** — store diagnostics (only recommend if WooCommerce is active)
|
|
82
|
+
- **Mobile Experience Report** — responsive layout and touch target analysis
|
|
83
|
+
- **SEO & AEO Amplifier** — on-page SEO and Answer Engine Optimization with schema markup
|
|
84
|
+
- **WordPress AI Image Optimizer** — compress, resize, convert to WebP, and update references
|
|
85
|
+
- **Internal Link Builder** — scan content relationships and build strategic internal links
|
|
86
|
+
- **Content Portability** — export, backup, migrate content with builder data and smart ID remapping
|
|
87
|
+
- Explain that skills can be installed from the Skills page in the WordPress admin (Respira → Skills) or by visiting https://www.respira.press/skills
|
|
88
|
+
- Let the user know they can install any skill with one click from the WordPress admin, or copy the install prompt
|
|
89
|
+
|
|
90
|
+
## Output Format
|
|
91
|
+
|
|
92
|
+
Produces a site briefing with these sections:
|
|
93
|
+
|
|
94
|
+
### Connection Status
|
|
95
|
+
- Site URL, WordPress version, PHP version, theme
|
|
96
|
+
- MCP server version, API version (v1/v2)
|
|
97
|
+
- Authentication status
|
|
98
|
+
|
|
99
|
+
### Site Architecture
|
|
100
|
+
- Active theme (parent + child if applicable)
|
|
101
|
+
- Page builder(s) in use
|
|
102
|
+
- Active plugins count and key plugins
|
|
103
|
+
- Content overview (pages, posts, CPTs with counts)
|
|
104
|
+
- Taxonomy overview
|
|
105
|
+
|
|
106
|
+
### What I Can Do
|
|
107
|
+
- Categorized list of available actions based on the site's setup
|
|
108
|
+
- Builder-specific capabilities (e.g. "Edit Elementor widgets", "Modify Bricks elements")
|
|
109
|
+
- Add-on capabilities (e.g. "Manage WooCommerce products")
|
|
110
|
+
|
|
111
|
+
### Skills Marketplace
|
|
112
|
+
- List of available skills with brief descriptions
|
|
113
|
+
- Highlight which skills are most relevant based on the site's architecture
|
|
114
|
+
- How to install: WordPress admin (Respira → Skills) or https://www.respira.press/skills
|
|
115
|
+
|
|
116
|
+
### Suggested Next Steps
|
|
117
|
+
- Recommend installing relevant skills
|
|
118
|
+
- Quick wins based on site state (e.g. "3 plugins have updates available")
|
|
119
|
+
- Suggest a first task to try (e.g. "try asking me to edit a page")
|
|
120
|
+
|
|
121
|
+
## Example Output
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
## Site Briefing: example.com
|
|
125
|
+
|
|
126
|
+
### Connection
|
|
127
|
+
- Connected to https://example.com (WordPress 6.7.1, PHP 8.2)
|
|
128
|
+
- Respira v4.3.1, MCP v2 active
|
|
129
|
+
- Authenticated as: admin
|
|
130
|
+
|
|
131
|
+
### Architecture
|
|
132
|
+
- Theme: flavor starter (flavor starter child)
|
|
133
|
+
- Builder: Bricks Builder v1.12.2
|
|
134
|
+
- 14 active plugins | 2 inactive
|
|
135
|
+
- 23 pages | 8 posts | 3 custom post types (portfolio, testimonial, team)
|
|
136
|
+
|
|
137
|
+
### What I Can Do
|
|
138
|
+
**Content:** Create, edit, duplicate, and delete pages, posts, and custom posts
|
|
139
|
+
**Builder:** Read and edit Bricks Builder elements on any page
|
|
140
|
+
**Media:** Upload, replace, and optimize images
|
|
141
|
+
**SEO:** Analyze SEO, readability, and structured data (Yoast detected)
|
|
142
|
+
**Navigation:** Create and manage menus and menu items
|
|
143
|
+
**Snapshots:** Take before/after snapshots for safe editing with approval workflows
|
|
144
|
+
|
|
145
|
+
### Skills Marketplace
|
|
146
|
+
Your site can benefit from these AI skills — install them from **Respira → Skills** in your WordPress admin or visit https://www.respira.press/skills:
|
|
147
|
+
|
|
148
|
+
| Skill | What it does | Relevant? |
|
|
149
|
+
|-------|-------------|-----------|
|
|
150
|
+
| WordPress Site DNA | Deep site archaeology and health score | Yes — recommended for all sites |
|
|
151
|
+
| Technical Debt Audit | Find orphaned content, unused plugins, bloat | Yes |
|
|
152
|
+
| WooCommerce Health Check | Store diagnostics and checkout analysis | No — WooCommerce not detected |
|
|
153
|
+
| Mobile Experience Report | Responsive layout and touch target analysis | Yes |
|
|
154
|
+
| SEO & AEO Amplifier | On-page SEO audit with schema markup | Yes — Yoast detected |
|
|
155
|
+
| AI Image Optimizer | Compress, resize, WebP conversion | Yes — 156 media items found |
|
|
156
|
+
| Internal Link Builder | Strategic internal linking across content | Yes — 31 pages + posts |
|
|
157
|
+
| Content Portability | Export, backup, migrate content with builder data | Yes — recommended for all sites |
|
|
158
|
+
|
|
159
|
+
### Suggested Next Steps
|
|
160
|
+
1. Install the **WordPress Site DNA** skill for a full site health audit
|
|
161
|
+
2. Install the **SEO & AEO Amplifier** skill to optimize your top pages
|
|
162
|
+
3. Try asking me to edit a page: "Update the hero heading on the homepage"
|
|
163
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: woo-agent-storefront
|
|
3
|
+
description: "Use when the user says 'make my store visible to chatgpt', 'set up product feeds', or 'make my store agent-ready', or asks about Google Merchant Center, a store llms.txt, or cart links for AI agents. Sets up product feeds in six formats and registers the catalog with the major platforms."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: "Respira for WordPress"
|
|
7
|
+
author_url: https://respira.press
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
mcp-server: respira-wordpress
|
|
10
|
+
category: commerce
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Woo Agent Storefront
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Description
|
|
17
|
+
|
|
18
|
+
Turn a WooCommerce store into an agent-ready storefront: always-fresh product feeds, a store llms.txt, program enrollment, and attributed cart links.
|
|
19
|
+
|
|
20
|
+
AI assistants recommend products to millions of shoppers, and they can only sell what they can read. This skill walks the whole path: configure and generate feeds in the formats the platforms actually ingest (Google Shopping XML, OpenAI/ChatGPT JSONL, Meta CSV, Pinterest CSV, TikTok CSV, generic CSV), validate them against each spec before registering anything, serve a store llms.txt at the site root, guide the merchant through each platform's enrollment (including the gated ones), and finish with signed cart links whose orders are attributed back to their agent source.
|
|
21
|
+
|
|
22
|
+
Requires the Respira WooCommerce Add-on v3.1+.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Trigger Phrases
|
|
27
|
+
|
|
28
|
+
This skill activates when the user says any of the following:
|
|
29
|
+
|
|
30
|
+
- "make my store visible to chatgpt"
|
|
31
|
+
- "set up product feeds"
|
|
32
|
+
- "google shopping feed woocommerce"
|
|
33
|
+
- "agentic shopping for my store"
|
|
34
|
+
- "make my store agent-ready"
|
|
35
|
+
- "sell through ai assistants"
|
|
36
|
+
- "openai product feed"
|
|
37
|
+
- "submit products to google merchant center"
|
|
38
|
+
- "llms.txt for my store"
|
|
39
|
+
- "tiktok catalog feed" / "pinterest catalog feed" / "meta product feed"
|
|
40
|
+
- "cart links for ai agents"
|
|
41
|
+
- "agent storefront"
|
|
42
|
+
|
|
43
|
+
**Do NOT trigger for:** catalog content fixes without a discovery/feeds context (that is woo-catalog-perfection), general SEO requests, or stores without WooCommerce.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Execution Workflow
|
|
48
|
+
|
|
49
|
+
### Step 1: Verify the surface
|
|
50
|
+
|
|
51
|
+
Call `respira_get_site_context` to confirm the connection, then `woocommerce_get_feed_status`. If the feed tools are missing, the store runs an add-on older than 3.1: stop and tell the user to update the Respira WooCommerce Add-on first.
|
|
52
|
+
|
|
53
|
+
### Step 2: Baseline the catalog
|
|
54
|
+
|
|
55
|
+
Run `woocommerce_validate_feed` for `google` (the strictest spec). Report the score and the failing checks in plain language. If the score is under 70, recommend running the **woo-catalog-perfection** skill first, and offer to continue anyway: platforms reject individual rows, not whole feeds.
|
|
56
|
+
|
|
57
|
+
### Step 3: Configure
|
|
58
|
+
|
|
59
|
+
Ask which surfaces matter (default: Google + OpenAI + generic CSV; offer Meta, Pinterest, TikTok). Then `woocommerce_configure_feed` with:
|
|
60
|
+
|
|
61
|
+
- `enabled_formats` per the answer
|
|
62
|
+
- `llms_txt: true` unless the site already serves one
|
|
63
|
+
- `cadence`: `daily` for most stores, `hourly` for stores with frequent price/stock changes (note: OpenAI recommends frequent refresh, which needs a real server cron, not wp-cron)
|
|
64
|
+
- `include_out_of_stock`: keep the default `true` (platforms prefer marked rows over vanishing rows)
|
|
65
|
+
|
|
66
|
+
Map categories with `woocommerce_set_feed_category_mapping` for the store's top-level product categories to Google's taxonomy. The tool lists unmapped terms; map the biggest ones first.
|
|
67
|
+
|
|
68
|
+
### Step 4: Generate and verify
|
|
69
|
+
|
|
70
|
+
`woocommerce_generate_feed`, then `woocommerce_get_feed_status` until every enabled format reports rows and a fresh timestamp. Fetch each public URL once and confirm it returns content (the pretty URL first, the /wp-json fallback if the host intercepts unknown paths). Confirm `/llms.txt` resolves at the site root. Surface any `cron_warning` from the status verbatim, with the fix (a real cron hitting wp-cron.php).
|
|
71
|
+
|
|
72
|
+
### Step 5: Register with each platform
|
|
73
|
+
|
|
74
|
+
Hand the user the exact feed URL for each platform with a short enrollment walkthrough:
|
|
75
|
+
|
|
76
|
+
- **Google Merchant Center**: Products → Data sources → Add product source → scheduled fetch with the `google.xml` URL. Bing Merchant Center accepts the same file.
|
|
77
|
+
- **OpenAI / ChatGPT**: apply for product discovery at chatgpt.com/merchants; the `openai.jsonl` URL is the feed they ingest. Instant Checkout is per-merchant approval; discovery is the open lane.
|
|
78
|
+
- **Meta Commerce Manager**: Catalog → Data sources → Data feed → scheduled fetch with the `meta.csv` URL.
|
|
79
|
+
- **Pinterest**: Business hub → Catalogs → Add data source with the `pinterest.csv` URL.
|
|
80
|
+
- **TikTok**: Seller Center → Products → Catalog upload with the `tiktok.csv` URL. TikTok requires a brand per product; the feed falls back to the store name where brand is missing, but real brands match better.
|
|
81
|
+
|
|
82
|
+
Do this as a checklist the merchant can complete asynchronously; none of these dashboards are reachable through MCP.
|
|
83
|
+
|
|
84
|
+
### Step 6: AI crawler access
|
|
85
|
+
|
|
86
|
+
Run `woocommerce_catalog_ai_readiness` and check the robots/AI-crawler section. If GPTBot, OAI-SearchBot, Google-Extended or PerplexityBot are blocked in robots.txt, tell the user exactly which line blocks which assistant and what removing it does. Do not edit robots.txt without explicit approval.
|
|
87
|
+
|
|
88
|
+
### Step 7: Attributed cart links
|
|
89
|
+
|
|
90
|
+
Demonstrate the loop end to end: create one cart link with `woocommerce_create_cart_link` (two real products, a source label like `chatgpt`), explain that the link fills the cart server-side and lands on the store's own checkout, and show where the numbers land with `woocommerce_agent_orders_report`. Checkout, payments and customer data stay on the store.
|
|
91
|
+
|
|
92
|
+
### Step 8: Report
|
|
93
|
+
|
|
94
|
+
Close with: enabled formats and their URLs, catalog score, categories mapped/unmapped, llms.txt status, the per-platform registration checklist with what is done vs pending, and the example cart link.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Safety
|
|
99
|
+
|
|
100
|
+
- Feed generation is read-only over the catalog; it writes only its own option rows and feed files.
|
|
101
|
+
- Never edit robots.txt, prices, or products in this skill without explicit user approval; content fixes belong to woo-catalog-perfection.
|
|
102
|
+
- Feed URLs contain an unguessable token. Treat them like capability URLs: share with platforms, not in public posts.
|