Project: WordPress Post Orchestrator
1. High-Level Vision
A desktop-based "Post Orchestrator" that bridges the gap between content creation (Google Docs/Markdown) and WordPress publishing. The goal is to automate the manual work of creating pages/posts while allowing the user to finish the "last mile" (internal links/SEO) in a draft state.
2. Technical Stack
- Language: Python
- API: WordPress REST API (using Application Passwords)
- Environment: .env for sensitive credentials (WP_URL, WP_USER, WP_APP_PASS)
- Editor Logic: Support for both 'Classic Editor' and 'Gutenberg (Block) Editor'
3. The Modular Workflow
Component A: Source Connector (The Input)
- Reads metadata (YAML Front Matter) from Markdown files.
- Fetches content from Google Docs (future goal).
- Template Mapping: Logic to map source fields (e.g.,
author_name) to WP fields (e.g.,author).
Component B: UI Controller (The Brain)
- Handles the selection of sites and sources.
- Previews the content before sending.
- Provides a "Deep Link" to the WordPress draft after a successful post.
Component C: WP-Publisher (The Output)
- Handles Media Uploads first to get
attachment_id. - Formats content:
- Classic Mode: Clean HTML strings.
- Gutenberg Mode: HTML wrapped in `` comments.
- Sends POST request to
/wp-json/wp/v2/pagesor/posts.
4. Current Progress
- ✅ Environment variables configured in
.env. - ✅ Initial Python script can read
titles.txtand post basic pages. - ⬜ (Next) Implement
python-frontmatterto read full.mdfiles. - ⬜ (Next) Add logic to wrap HTML in Gutenberg comments if the site is not in "Classic" mode.
5. Coding Principles for AI Assist
- Modular Code: Keep API logic separate from File-Reading logic.
- Error Handling: Always check for
201 Createdand print clear error messages. - Scannable UI: Use clear variable names like
is_classic_modeto toggle formatting logic.