Migrate Elementor to Gutenberg
Converts Elementor-built WordPress pages to native Gutenberg blocks. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest core block equivalent, generates a migration plan for approval, and writes clean block markup to the target pages. Use this skill whenever someone wants to move from Elementor to Gutenberg, eliminate page builder dependencies, go back to native WordPress blocks, or simplify their tech stack by dropping Elementor.
What This Skill Does
Moving from Elementor to Gutenberg is one of the most common — and most complex — builder migrations. Elementor stores content as a deeply nested JSON tree in _elementor_data, while Gutenberg uses HTML comments (<!-- wp:block -->) inline with content in post_content. Every layout decision Elementor makes with JSON settings must be translated into block attributes, CSS classes, or Group/Columns block structures.
This skill handles that translation systematically: it reads every Elementor widget, finds the right Gutenberg block, maps settings as closely as possible, and flags anything that needs manual attention. The result is clean, dependency-free WordPress content.
Handles:
- Section/Column layouts → Group and Columns blocks with appropriate width settings
- Text Editor → Paragraph blocks (preserving inline formatting)
- Heading → Heading block (h1-h6 mapping)
- Image → Image block (with alt text, caption, link)
- Video → Video or Embed block (YouTube/Vimeo detected)
- Button → Buttons block (with link, style, colors)
- Icon List → List block
- Spacer → Spacer block
- Divider → Separator block
- Google Maps → Custom HTML block with embed
- Tabs, Accordion → Group blocks with Details block (WP 6.3+) or HTML fallback
- Image Gallery → Gallery block
- Counter, Progress Bar → HTML or Group block approximations
- Custom HTML → Custom HTML block (direct transfer)
- Responsive visibility → block-level responsive classes (theme-dependent)
Preserves:
- All text content, headings, and inline formatting (bold, italic, links)
- Image URLs, alt text, captions, and link targets
- Button labels, URLs, and target attributes
- Color values applied as block-level styles
- Basic spacing via Spacer blocks
- Heading hierarchy (h1-h6)
- List content and structure
- Embedded media URLs
What This Skill Does NOT Do
- Complex multi-column layouts — Elementor allows pixel-level column width control and nested sections. Gutenberg Columns blocks support percentage widths but with less precision. Complex grid layouts may need manual adjustment or a block-based layout plugin.
- Elementor Pro widgets — Posts grid, portfolio, price table, price list, flip box, call to action, and similar Pro widgets have no core Gutenberg equivalent. They are flagged for manual recreation.
- Third-party addon widgets — Essential Addons, JetElements, Crocoblock widgets cannot be auto-mapped.
- Dynamic content — ACF fields, custom loops, and dynamic tags require separate solutions (ACF blocks, custom block patterns, or Query Loop block).
- Theme Builder templates — Headers, footers, archive templates are outside page content scope.
- Advanced animations — Motion effects, parallax scrolling, entrance animations have no Gutenberg equivalent.
- Form widgets — Elementor forms need a forms plugin replacement (WPForms, Gravity Forms, etc.).
- Popup content — Elementor popups are not page content and are excluded.
- Design fidelity — Gutenberg is intentionally simpler. Expect a cleaner but less visually identical result. This is a feature, not a bug — you are trading design complexity for simplicity and performance.
Requirements
- Respira for WordPress plugin installed and connected
- MCP connection active (desktop or WebMCP)
- Elementor plugin active (to read source content)
- WordPress 6.0+ (for modern block features; 6.3+ recommended for Details block)
- A block-compatible theme (Twenty Twenty-Three, Astra, Kadence, GeneratePress, etc.)
- Read access to scan Elementor content
- Write access to create duplicates with Gutenberg content
Trigger Phrase
- "migrate elementor to gutenberg"
Alternative Triggers
- "convert elementor to blocks"
- "switch from elementor to gutenberg"
- "remove elementor dependency"
- "go back to native wordpress"
- "rebuild elementor pages with blocks"
- "elementor to block editor"
- "decommission elementor"
Source Builder: Elementor
Elementor stores page content in the _elementor_data post meta field as a JSON string. The structure is a nested tree:
Document
└─ Section (type: "section")
├─ settings: { structure, layout, content_width, ... }
└─ elements: [
Column (type: "column")
├─ settings: { _column_size, ... }
└─ elements: [
Widget (type: "widget", widgetType: "heading")
└─ settings: { title, size, header_size, ... }
]
]
Key Elementor specifics:
- Widget types are in the
widgetType field (e.g., heading, text-editor, image, button)
- Responsive settings use suffixes:
margin, margin_tablet, margin_mobile
- CSS is cached in
_elementor_css post meta — not needed for migration but useful for verification
- Page settings in
_elementor_page_settings (page layout, hide title, etc.)
- Global widgets reference a template via
templateID — must be resolved before mapping
- Nested sections (Inner Section widget) create sub-layouts within columns
Read Elementor content via wordpress_extract_builder_content with builder=elementor.
Target: Gutenberg (Block Editor)
Gutenberg stores content directly in post_content as HTML with block comment delimiters:
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Title Here</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Content here with <strong>formatting</strong>.</p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
Key Gutenberg specifics:
- Block attributes are JSON in the opening comment:
<!-- wp:image {"id":123,"sizeSlug":"large"} -->
- Layout blocks:
wp:group, wp:columns, wp:column
- Style attributes go in the block JSON:
{"style":{"color":{"background":"#fff"},"spacing":{"padding":{"top":"2rem"}}}}
- No separate meta storage — everything is in
post_content
- Columns use percentage widths:
<!-- wp:column {"width":"33.33%"} -->
Write Gutenberg content via wordpress_update_page or wordpress_update_post targeting the content field.
Execution Workflow
Phase 1: Pre-Migration Audit
- Verify Respira + MCP connection via
wordpress_get_site_context. If unavailable, stop and show setup guidance.
- Confirm Elementor is active via
wordpress_list_plugins.
- Check WordPress version (6.0+ required, 6.3+ ideal).
- Identify active theme — note if it is block-theme compatible.
- Scan all content for Elementor usage:
wordpress_list_pages and wordpress_list_posts
- For each, check builder via
wordpress_get_builder_info
- For each Elementor page, extract content via
wordpress_extract_builder_content with builder=elementor
- Build an inventory:
- Total pages/posts using Elementor
- Widget types used (frequency count)
- Pro-only widgets detected
- Third-party addon widgets detected
- Dynamic tags and global widgets
- Layout complexity score per page (nesting depth, column configurations)
- Estimated migration complexity (simple/moderate/complex)
Phase 2: Migration Plan
Present a detailed plan acknowledging that Gutenberg migration involves the most interpretation:
## Elementor → Gutenberg Migration Plan
### Important Context
Gutenberg is intentionally simpler than Elementor. This migration prioritizes
content preservation and clean markup over pixel-perfect layout recreation.
Some design adjustments will be needed post-migration.
### Site Inventory
- Total Elementor pages: X
- Total widgets to convert: X
- Direct block equivalents: X (Y%)
- Approximate equivalents (layout may differ): X (Y%)
- No equivalent — manual recreation needed: X (Y%)
### Widget Mapping Summary
| Elementor Widget | Gutenberg Block | Fidelity |
|-----------------|----------------|----------|
| heading | wp:heading | Exact |
| text-editor | wp:paragraph | Exact |
| image | wp:image | Exact |
| section+columns | wp:group+columns| Close |
| tabs | wp:details (6.3+)| Approx |
| form | — | Manual |
### Layout Simplification Notes
- [Specific notes about how complex Elementor layouts will be simplified]
- [Column configurations that will change]
- [Sections that will become Groups]
### Page-by-Page Plan
1. **[Page Title]** — X widgets, [simple/moderate/complex]
- Direct conversions: X
- Approximate conversions: X
- Manual items: X — [details]
2. ...
Ask for confirmation:
This migration will produce cleaner, faster-loading pages but with simpler layouts than Elementor.
- Migrate all pages
- Migrate specific pages
- Start with a test page (recommended for complex sites)
- Just keep this plan
Phase 3: Page-by-Page Migration
For each approved page:
- Read full Elementor content via
wordpress_extract_builder_content with builder=elementor
- Walk the Elementor JSON tree depth-first:
- Convert Section →
<!-- wp:group --> with constrained layout
- Convert Column structures →
<!-- wp:columns --> and <!-- wp:column {"width":"X%"} -->
- Convert each widget to appropriate block:
heading → <!-- wp:heading {"level":N} --><hN>text</hN><!-- /wp:heading -->
text-editor → <!-- wp:paragraph --><p>text</p><!-- /wp:paragraph -->
image → <!-- wp:image {"id":N,"sizeSlug":"large"} --><figure>...</figure><!-- /wp:image -->
button → <!-- wp:buttons --><div class="wp-block-buttons"><!-- wp:button -->...<!-- /wp:button --></div><!-- /wp:buttons -->
- Map colors and spacing to block-level
style attributes where possible
- Convert background images to Group block background or Cover block
- Flag unmappable widgets with
<!-- MIGRATION NOTE: [widget type] needs manual recreation -->
- Assemble complete block markup with proper nesting and closing tags
- Create a duplicate page via
wordpress_create_page_duplicate or wordpress_create_post_duplicate
- Write block content to the duplicate via
wordpress_update_page or wordpress_update_post
- Report: widgets converted, items flagged, known layout differences
Phase 4: Post-Migration Verification
- Summarize all migrations:
- Pages migrated
- Widgets converted to blocks
- Items needing manual attention
- Layout simplifications made
- For each migrated page, provide:
- Link to edit the duplicate in Gutenberg
- Flagged items requiring manual recreation
- Layout notes (where the Gutenberg version differs from Elementor)
- Post-migration checklist:
Safety Model
- Read-only analysis first — full content scan before any changes
- Explicit user confirmation required before creating any duplicates
- Original Elementor pages are never modified or deleted
- All migrated content goes to draft duplicates only
- Never auto-publishes migrated pages
- Creates a snapshot before migration begins (when available)
- Provides clear rollback path (delete duplicates)
- Warns about significant layout changes before proceeding
Honest Disclaimer
This skill converts Elementor page content to Gutenberg blocks and creates draft duplicates for review.
It cannot:
- Replicate Elementor's design precision in Gutenberg
- Auto-convert Pro widgets, addon widgets, or forms
- Migrate dynamic content or theme builder templates
- Replace the need for visual review and manual fine-tuning
- Make Gutenberg do things it was not designed for
It can:
- Convert 60-80% of standard Elementor content to clean blocks
- Eliminate your Elementor dependency for simpler pages
- Dramatically improve page load speed (no Elementor CSS/JS overhead)
- Produce clean, standards-compliant WordPress content
- Give you a clear roadmap for what needs manual attention
- Keep your original pages completely untouched
Tooling
Core WordPress tools
wordpress_get_site_context
wordpress_list_plugins
wordpress_list_pages
wordpress_list_posts
wordpress_read_page
wordpress_read_post
wordpress_get_builder_info
wordpress_extract_builder_content
wordpress_find_builder_targets
wordpress_create_page_duplicate
wordpress_create_post_duplicate
wordpress_update_page
wordpress_update_post
Telemetry
After run completion, send fire-and-forget usage tracking to:
POST https://www.respira.press/api/skills/track-usage
Include:
skill_slug = migrate-elementor-to-gutenberg
- site/version context
- duration and success
- pages migrated, blocks created, widgets flagged counts
- tools used
Never block user flow on telemetry failure.
Related Skills
- WordPress Site DNA (understand site structure before migrating)
- Internal Link Builder (verify internal links post-migration)
- SEO & AEO Amplifier (verify SEO preservation post-migration)
- Technical Debt Audit (clean up Elementor remnants after full migration)
Built by Respira Team
https://respira.press/skills/migrate-elementor-to-gutenberg
1---2name: migrate-elementor-to-gutenberg3description: Converts Elementor-built WordPress pages to native Gutenberg blocks. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest core block equivalent, generates a migration plan for approval, and writes clean block markup to the target pages. Use when user says "migrate Elementor to Gutenberg", "drop Elementor", "switch to native blocks", or "rebuild Elementor pages in the block editor".4license: MIT5---6
7# Migrate Elementor to Gutenberg
8
9Converts Elementor-built WordPress pages to native Gutenberg blocks. Reads Elementor's JSON widget tree from post meta, maps each widget to its closest core block equivalent, generates a migration plan for approval, and writes clean block markup to the target pages. Use this skill whenever someone wants to move from Elementor to Gutenberg, eliminate page builder dependencies, go back to native WordPress blocks, or simplify their tech stack by dropping Elementor.
10
11## What This Skill Does
12
13Moving from Elementor to Gutenberg is one of the most common — and most complex — builder migrations. Elementor stores content as a deeply nested JSON tree in `_elementor_data`, while Gutenberg uses HTML comments (`<!-- wp:block -->`) inline with content in `post_content`. Every layout decision Elementor makes with JSON settings must be translated into block attributes, CSS classes, or Group/Columns block structures.
14
15This skill handles that translation systematically: it reads every Elementor widget, finds the right Gutenberg block, maps settings as closely as possible, and flags anything that needs manual attention. The result is clean, dependency-free WordPress content.
16
17**Handles:**
18- Section/Column layouts → Group and Columns blocks with appropriate width settings
19- Text Editor → Paragraph blocks (preserving inline formatting)
20- Heading → Heading block (h1-h6 mapping)
21- Image → Image block (with alt text, caption, link)
22- Video → Video or Embed block (YouTube/Vimeo detected)
23- Button → Buttons block (with link, style, colors)
24- Icon List → List block
25- Spacer → Spacer block
26- Divider → Separator block
27- Google Maps → Custom HTML block with embed
28- Tabs, Accordion → Group blocks with Details block (WP 6.3+) or HTML fallback
29- Image Gallery → Gallery block
30- Counter, Progress Bar → HTML or Group block approximations
31- Custom HTML → Custom HTML block (direct transfer)
32- Responsive visibility → block-level responsive classes (theme-dependent)
33
34**Preserves:**
35- All text content, headings, and inline formatting (bold, italic, links)
36- Image URLs, alt text, captions, and link targets
37- Button labels, URLs, and target attributes
38- Color values applied as block-level styles
39- Basic spacing via Spacer blocks
40- Heading hierarchy (h1-h6)
41- List content and structure
42- Embedded media URLs
43
44## What This Skill Does NOT Do
45
46- **Complex multi-column layouts** — Elementor allows pixel-level column width control and nested sections. Gutenberg Columns blocks support percentage widths but with less precision. Complex grid layouts may need manual adjustment or a block-based layout plugin.
47- **Elementor Pro widgets** — Posts grid, portfolio, price table, price list, flip box, call to action, and similar Pro widgets have no core Gutenberg equivalent. They are flagged for manual recreation.
48- **Third-party addon widgets** — Essential Addons, JetElements, Crocoblock widgets cannot be auto-mapped.
49- **Dynamic content** — ACF fields, custom loops, and dynamic tags require separate solutions (ACF blocks, custom block patterns, or Query Loop block).
50- **Theme Builder templates** — Headers, footers, archive templates are outside page content scope.
51- **Advanced animations** — Motion effects, parallax scrolling, entrance animations have no Gutenberg equivalent.
52- **Form widgets** — Elementor forms need a forms plugin replacement (WPForms, Gravity Forms, etc.).
53- **Popup content** — Elementor popups are not page content and are excluded.
54- **Design fidelity** — Gutenberg is intentionally simpler. Expect a cleaner but less visually identical result. This is a feature, not a bug — you are trading design complexity for simplicity and performance.
55
56## Requirements
57
58- Respira for WordPress plugin installed and connected
59- MCP connection active (desktop or WebMCP)
60- Elementor plugin active (to read source content)
61- WordPress 6.0+ (for modern block features; 6.3+ recommended for Details block)
62- A block-compatible theme (Twenty Twenty-Three, Astra, Kadence, GeneratePress, etc.)
63- Read access to scan Elementor content
64- Write access to create duplicates with Gutenberg content
65
66## Trigger Phrase
67
68- "migrate elementor to gutenberg"
69
70## Alternative Triggers
71
72- "convert elementor to blocks"
73- "switch from elementor to gutenberg"
74- "remove elementor dependency"
75- "go back to native wordpress"
76- "rebuild elementor pages with blocks"
77- "elementor to block editor"
78- "decommission elementor"
79
80## Source Builder: Elementor
81
82Elementor stores page content in the `_elementor_data` post meta field as a JSON string. The structure is a nested tree:
83
84```
85Document
86 └─ Section (type: "section")
87 ├─ settings: { structure, layout, content_width, ... }
88 └─ elements: [
89 Column (type: "column")
90 ├─ settings: { _column_size, ... }
91 └─ elements: [
92 Widget (type: "widget", widgetType: "heading")
93 └─ settings: { title, size, header_size, ... }
94 ]
95 ]
96```
97
98Key Elementor specifics:
99- **Widget types** are in the `widgetType` field (e.g., `heading`, `text-editor`, `image`, `button`)
100- **Responsive settings** use suffixes: `margin`, `margin_tablet`, `margin_mobile`
101- **CSS** is cached in `_elementor_css` post meta — not needed for migration but useful for verification
102- **Page settings** in `_elementor_page_settings` (page layout, hide title, etc.)
103- **Global widgets** reference a template via `templateID` — must be resolved before mapping
104- **Nested sections** (Inner Section widget) create sub-layouts within columns
105
106Read Elementor content via `wordpress_extract_builder_content` with `builder=elementor`.
107
108## Target: Gutenberg (Block Editor)
109
110Gutenberg stores content directly in `post_content` as HTML with block comment delimiters:
111
112```html
113<!-- wp:group {"layout":{"type":"constrained"}} -->
114<div class="wp-block-group">
115 <!-- wp:heading {"level":2} -->
116 <h2 class="wp-block-heading">Title Here</h2>
117 <!-- /wp:heading -->
118
119 <!-- wp:paragraph -->
120 <p>Content here with <strong>formatting</strong>.</p>
121 <!-- /wp:paragraph -->
122</div>
123<!-- /wp:group -->
124```
125
126Key Gutenberg specifics:
127- Block attributes are JSON in the opening comment: `<!-- wp:image {"id":123,"sizeSlug":"large"} -->`
128- Layout blocks: `wp:group`, `wp:columns`, `wp:column`
129- Style attributes go in the block JSON: `{"style":{"color":{"background":"#fff"},"spacing":{"padding":{"top":"2rem"}}}}`
130- No separate meta storage — everything is in `post_content`
131- Columns use percentage widths: `<!-- wp:column {"width":"33.33%"} -->`
132
133Write Gutenberg content via `wordpress_update_page` or `wordpress_update_post` targeting the `content` field.
134
135## Execution Workflow
136
137### Phase 1: Pre-Migration Audit
138
1391. Verify Respira + MCP connection via `wordpress_get_site_context`. If unavailable, stop and show setup guidance.
1402. Confirm Elementor is active via `wordpress_list_plugins`.
1413. Check WordPress version (6.0+ required, 6.3+ ideal).
1424. Identify active theme — note if it is block-theme compatible.
1435. Scan all content for Elementor usage:
144 - `wordpress_list_pages` and `wordpress_list_posts`
145 - For each, check builder via `wordpress_get_builder_info`
1466. For each Elementor page, extract content via `wordpress_extract_builder_content` with `builder=elementor`
1477. Build an inventory:
148 - Total pages/posts using Elementor
149 - Widget types used (frequency count)
150 - Pro-only widgets detected
151 - Third-party addon widgets detected
152 - Dynamic tags and global widgets
153 - Layout complexity score per page (nesting depth, column configurations)
154 - Estimated migration complexity (simple/moderate/complex)
155
156### Phase 2: Migration Plan
157
158Present a detailed plan acknowledging that Gutenberg migration involves the most interpretation:
159
160```
161## Elementor → Gutenberg Migration Plan
162
163### Important Context
164Gutenberg is intentionally simpler than Elementor. This migration prioritizes
165content preservation and clean markup over pixel-perfect layout recreation.
166Some design adjustments will be needed post-migration.
167
168### Site Inventory
169- Total Elementor pages: X
170- Total widgets to convert: X
171- Direct block equivalents: X (Y%)
172- Approximate equivalents (layout may differ): X (Y%)
173- No equivalent — manual recreation needed: X (Y%)
174
175### Widget Mapping Summary
176| Elementor Widget | Gutenberg Block | Fidelity |
177|-----------------|----------------|----------|
178| heading | wp:heading | Exact |
179| text-editor | wp:paragraph | Exact |
180| image | wp:image | Exact |
181| section+columns | wp:group+columns| Close |
182| tabs | wp:details (6.3+)| Approx |
183| form | — | Manual |
184
185### Layout Simplification Notes
186- [Specific notes about how complex Elementor layouts will be simplified]
187- [Column configurations that will change]
188- [Sections that will become Groups]
189
190### Page-by-Page Plan
1911. **[Page Title]** — X widgets, [simple/moderate/complex]
192 - Direct conversions: X
193 - Approximate conversions: X
194 - Manual items: X — [details]
1952. ...
196```
197
198Ask for confirmation:
199> This migration will produce cleaner, faster-loading pages but with simpler layouts than Elementor.
200> 1. Migrate all pages
201> 2. Migrate specific pages
202> 3. Start with a test page (recommended for complex sites)
203> 4. Just keep this plan
204
205### Phase 3: Page-by-Page Migration
206
207For each approved page:
208
2091. Read full Elementor content via `wordpress_extract_builder_content` with `builder=elementor`
2102. Walk the Elementor JSON tree depth-first:
211 - Convert Section → `<!-- wp:group -->` with constrained layout
212 - Convert Column structures → `<!-- wp:columns -->` and `<!-- wp:column {"width":"X%"} -->`
213 - Convert each widget to appropriate block:
214 - `heading` → `<!-- wp:heading {"level":N} --><hN>text</hN><!-- /wp:heading -->`
215 - `text-editor` → `<!-- wp:paragraph --><p>text</p><!-- /wp:paragraph -->`
216 - `image` → `<!-- wp:image {"id":N,"sizeSlug":"large"} --><figure>...</figure><!-- /wp:image -->`
217 - `button` → `<!-- wp:buttons --><div class="wp-block-buttons"><!-- wp:button -->...<!-- /wp:button --></div><!-- /wp:buttons -->`
218 - Map colors and spacing to block-level `style` attributes where possible
219 - Convert background images to Group block background or Cover block
220 - Flag unmappable widgets with `<!-- MIGRATION NOTE: [widget type] needs manual recreation -->`
2213. Assemble complete block markup with proper nesting and closing tags
2224. Create a duplicate page via `wordpress_create_page_duplicate` or `wordpress_create_post_duplicate`
2235. Write block content to the duplicate via `wordpress_update_page` or `wordpress_update_post`
2246. Report: widgets converted, items flagged, known layout differences
225
226### Phase 4: Post-Migration Verification
227
2281. Summarize all migrations:
229 - Pages migrated
230 - Widgets converted to blocks
231 - Items needing manual attention
232 - Layout simplifications made
2332. For each migrated page, provide:
234 - Link to edit the duplicate in Gutenberg
235 - Flagged items requiring manual recreation
236 - Layout notes (where the Gutenberg version differs from Elementor)
2373. Post-migration checklist:
238 - [ ] Open each duplicate in block editor — verify blocks are valid
239 - [ ] Check responsive preview (tablet/mobile in block editor)
240 - [ ] Verify images, links, and media
241 - [ ] Recreate flagged widgets manually (forms, sliders, etc.)
242 - [ ] Add any needed block patterns or reusable blocks
243 - [ ] Consider a forms plugin replacement for Elementor forms
244 - [ ] Test interactive elements
245 - [ ] Review page speed improvement (should be noticeable)
246
247## Safety Model
248
249- Read-only analysis first — full content scan before any changes
250- Explicit user confirmation required before creating any duplicates
251- Original Elementor pages are never modified or deleted
252- All migrated content goes to draft duplicates only
253- Never auto-publishes migrated pages
254- Creates a snapshot before migration begins (when available)
255- Provides clear rollback path (delete duplicates)
256- Warns about significant layout changes before proceeding
257
258## Honest Disclaimer
259
260This skill converts Elementor page content to Gutenberg blocks and creates draft duplicates for review.
261
262It cannot:
263- Replicate Elementor's design precision in Gutenberg
264- Auto-convert Pro widgets, addon widgets, or forms
265- Migrate dynamic content or theme builder templates
266- Replace the need for visual review and manual fine-tuning
267- Make Gutenberg do things it was not designed for
268
269It can:
270- Convert 60-80% of standard Elementor content to clean blocks
271- Eliminate your Elementor dependency for simpler pages
272- Dramatically improve page load speed (no Elementor CSS/JS overhead)
273- Produce clean, standards-compliant WordPress content
274- Give you a clear roadmap for what needs manual attention
275- Keep your original pages completely untouched
276
277## Tooling
278
279**Core WordPress tools**
280- `wordpress_get_site_context`
281- `wordpress_list_plugins`
282- `wordpress_list_pages`
283- `wordpress_list_posts`
284- `wordpress_read_page`
285- `wordpress_read_post`
286- `wordpress_get_builder_info`
287- `wordpress_extract_builder_content`
288- `wordpress_find_builder_targets`
289- `wordpress_create_page_duplicate`
290- `wordpress_create_post_duplicate`
291- `wordpress_update_page`
292- `wordpress_update_post`
293
294## Telemetry
295
296After run completion, send fire-and-forget usage tracking to:
297
298- `POST https://www.respira.press/api/skills/track-usage`
299
300Include:
301- `skill_slug = migrate-elementor-to-gutenberg`
302- site/version context
303- duration and success
304- pages migrated, blocks created, widgets flagged counts
305- tools used
306
307Never block user flow on telemetry failure.
308
309## Related Skills
310
311- WordPress Site DNA (understand site structure before migrating)
312- Internal Link Builder (verify internal links post-migration)
313- SEO & AEO Amplifier (verify SEO preservation post-migration)
314- Technical Debt Audit (clean up Elementor remnants after full migration)
315
316---
317
318Built by Respira Team
319https://respira.press/skills/migrate-elementor-to-gutenberg