Skip to content
Content
Skill

/content-portability

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

From plugin
respira-wordpress-skills
5155 skills

Claude Code

$ npx -y skills add respira-press/agent-skills-wordpress --skill content-portability --agent claude-code

SKILL.md

content-portability.SKILL.md
name: content-portability
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."
license: MIT
metadata:
  author: Respira for WordPress
  author_url: https://respira.press
  version: 1.0.0
  mcp-server: respira-wordpress
  category: migration

Content Portability

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.

What This Skill Does

**Exports:**

  • Pages, posts, and custom post types — individually or in bulk
  • Full builder data (Elementor, Bricks, Divi, etc.) alongside standard content
  • Allowlisted post meta (SEO fields, featured images, builder config)
  • Human-readable markdown preview of every page/post
  • Optional media binary download for fully offline packages
  • Manifest with hashes, stats, and export metadata

**Imports:**

  • Reads a local Respira Content Package and pushes to a target WordPress site
  • Smart ID remapping — media IDs, post IDs, and internal links rewritten for the target site
  • Bulk conflict resolution — detects slug collisions upfront, one decision for all
  • Mandatory server-side snapshots before any overwrites (safety net)
  • Builder JSON rewriting with full ID mapping tables
  • Fidelity verification — re-reads imported content and compares hashes

**Auto-Backup:**

  • Quick-backup mode before any AI edit — saves a local snapshot to `./respira-backups/`
  • Timestamped, human-readable, zero-friction insurance

Requirements

  • Respira for WordPress plugin installed and activated
  • MCP connection configured (site URL + API key)
  • For import: write access on the target site
  • For media download: sufficient local disk space

How to Use

Trigger Phrases

  • "export my site"
  • "export the homepage"
  • "backup my pages before editing"
  • "download my content locally"
  • "migrate content to my other site"
  • "content portability"
  • "create a local backup"
  • "export with media"

Export Workflow

**Phase 1: Scope Selection** 1. Ask the user what to export:

  • **Single page/post**: "export the homepage", "backup the about page"
  • **Full site**: "export everything", "download all my content"
  • **By type**: "export all blog posts", "export portfolio items"

2. Ask whether to include media downloads:

  • **Without media** (default): Fast, small packages with URL references
  • **With media**: Downloads all referenced images/files locally for full offline portability

**Phase 2: Content Enumeration** 3. Call `wordpress_list_pages`, `wordpress_list_posts`, and/or `wordpress_list_custom_posts` to enumerate content in scope 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 5. Report progress every 10 items: "Exported 30/120 pages..."

**Phase 3: Write Local Package** 6. Create the export directory structure:

respira-export/
├── manifest.json              # Package metadata, source site, export date, hashes
├── README.md                  # One-line import prompt for zero-friction migration
├── pages/
│   ├── home/
│   │   ├── content.json       # Full machine-readable export
│   │   └── content.md         # Human-readable markdown preview
│   ├── about/
│   │   ├── content.json
│   │   └── content.md
│   └── ...
├── posts/
│   ├── 2024-hello-world/
│   │   ├── content.json
│   │   └── content.md
│   └── ...
├── cpt/                       # Custom post types
│   └── {post_type}/
│       └── {slug}/
│           ├── content.json
│           └── content.md
└── media/                     # Only if --with-media
    ├── media-index.json       # URL→local-path mapping with old media IDs
    └── uploads/
        ├── hero-image.webp
        └── ...

7. For each page/post, write two files:

**content.json** — machine-readable, contains:

{
  "export_version": "1.0",
  "source_site": "https://example.com",
  "exported_at": "2026-03-16T14:30:00Z",
  "post": {
    "id": 42,
    "post_type": "page",
    "title": "About Us",
    "slug": "about",
    "status": "publish",
    "content": "<full HTML content>",
    "excerpt": "...",
    "modified": "2026-03-10T09:00:00Z"
  },
  "builder": {
    "name": "bricks",
    "payload": {},
    "extracted": {}
  },
  "meta": {
    "_thumbnail_id": 108,
    "_yoast_wpseo_title": "About Us | Example"
  },
  "hashes": {
    "content_hash": "sha256:abc123...",
    "builder_hash": "sha256:def456...",
    "meta_hash": "sha256:ghi789..."
  }
}

**content.md** — human-readable markdown preview:

# About Us

**Source:** https://example.com/about/
**Type:** page | **Status:** publish | **Builder:** Bricks
**Exported:** 2026-03-16

---

[Rendered text content extracted from HTML, preserving headings and structure]

## Section: Hero
- Heading: "Welcome to Our Company"
- Text: "We've been helping businesses..."
- Image: hero-team-photo.webp (Media ID: 108)

## Section: Team
- Heading: "Meet the Team"
...

8. If media download is enabled:

  • Call `wordpress_list_media` to get all media items
  • Filter to only media referenced by exported content
  • Download each file and save to `media/uploads/`
  • Write `media/media-index.json` mapping old URLs and IDs to local paths

**Phase 4: Manifest & Stats** 9. Write `manifest.json`:

{
  "export_version": "1.0",
  "source_site": "https://example.com",
  "source_wordpress_version": "6.7.1",
  "source_respira_version": "4.3.1",
  "exported_at": "2026-03-16T14:30:00Z",
  "scope": "full_site",
  "content": {
    "pages": 23,
    "posts": 8,
    "custom_post_types": { "portfolio": 12, "testimonial": 5 }
  },
  "media": {
    "included": tr
Read more
@respira-press
Ships withrespira-wordpress-skills

The community hub for WordPress AI workflows. Skills that run inside Claude Code, Codex, Antigravity, Cursor, and any AI agent that supports Skills + MCP to analyze, audit, optimize, and fix WordPress sites. Built by the community. Curated by Respira.

Stars on GitHub

Momentum

stars in total
51
Star history of respira-press/agent-skills-wordpress on GitHub, a chart by star-history.com

Other skills on respira-wordpress-skills.

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

officecli12d33k
@iofficeai@iofficeaiInstall Skill

Questions about content-portability.

Which coding agents can use content-portability?
content-portability installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.