@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@respira/wordpress-mcp-server",
3
- "version": "8.0.3",
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.