Recommendation (one-sentence)
Use Zapier to move ChatGPT drafts into WordPress as HTML or parsed block content, create the post in “pending” status, and use a second Zap (or an editor-driven webhook/button) to publish once approved.
Why this approach
- Keeps editorial control (post_status = pending) so editors can review in WP.
- Keeps automation simple (HTML or parsed JSON) so you don’t need fragile Gutenberg block markup.
Decision criteria (pick which fits you)
- Use Google Docs trigger if editors and writers already use Docs. Cheap and simple.
- Use Airtable/Notion if you need structured metadata (tags, categories, frontmatter). Easier to parse in Zapier.
- Use a Webhook trigger if drafts originate directly from the ChatGPT API or a custom app (most flexible, needs dev skill).
- If you must preserve complex Gutenberg blocks, use the WP REST API and send block-content JSON (higher complexity, needs dev support).
Trigger / action setup (practical example)
Zap A — Draft to pending post
1) Trigger: New Row in Airtable (or New Document in Google Docs or Webhook Catch).
2) Action: Formatter / Utilities or Code by Zapier — parse frontmatter JSON from the ChatGPT output (title, excerpt, tags, categories, featured_image_url, seo_title, seo_description, body_html or markdown).
3) Action (optional): For each image URL, Upload Media (WordPress) to create attachment IDs.
4) Action: Create Post (WordPress) — set post_content = parsed HTML (or markdown converted to HTML), post_status = pending, set featured_media = attachment ID, set categories/tags.
5) Action: Notify editor (Slack, Email, or Zapier Approvals) with a link to the post and two actions: approve (webhook) / request changes.
Zap B — Publish after approval
1) Trigger: Webhook catch (from editor Approve button) or Trigger: Post updated in WordPress (status changed to publish).
2) Action: Update Post (WordPress) to set post_status = publish (or use REST API to publish and set SEO meta).
Formatting tips
- Ask ChatGPT to emit a small, strict frontmatter JSON block plus the content in either HTML or Markdown. Example: {"title":"...","tags":[...],"featured_image":"https://..."}
- If ChatGPT returns Markdown, use a Markdown-to-HTML action in Zapier before creating the post.
- For block-level control, have ChatGPT output simple HTML sections (h2, p, img) rather than raw Gutenberg comment markup.
Images & metatags
- Prefer hosted image URLs in the draft. Upload each URL to WP via “Upload Media” to get attachment IDs and set featured_media.
- For SEO meta (Yoast/AIO), push meta fields after post creation via REST API or via the Create Post action’s custom fields (e.g., _yoast_wpseo_title/_yoast_wpseo_metadesc), depending on your SEO plugin.
Checklist to implement
- Decide trigger source (Docs / Airtable / Webhook).
- Standardize ChatGPT output: frontmatter + markdown/html body.
- Build Zap A: parse -> upload images -> create pending post -> notify editor.
- Build Zap B: approval webhook -> update post_status to publish -> set SEO meta if needed.
- Test with edge cases: large images, multiple images, special characters.
Best-for / Avoid-if
- Best for: small-to-midsize teams that want editorial review and fast publication, or single-author blogs.
- Avoid if: you need pixel-perfect Gutenberg block encoding or enterprise-level multi-stage editorial workflows — consider a custom integration or editorial plugin.
Notes about budget & skill
- Budget: Zapier tasks multiply with steps (image uploads + parsing adds cost). Webhooks + REST calls are cheaper but require dev skills.
- Skill: non-dev teams should stick to HTML/Markdown + WP “Create Post”; dev teams can push block JSON via WP REST API for exact block preservation.
If you want, I can draft the ChatGPT prompt that outputs a ready-to-parse frontmatter + markdown body, or a sample Zapier Formatter sequence for parsing that JSON.
Compare ChatGPT and Gemini