Blog Publish Automation
Automation Levels
Section titled “Automation Levels”| Level | Description | Status |
|---|---|---|
| Level 1: Manual | Writer → commit MDX → push → Vercel deploys | Current default |
| Level 2: Semi-automated | AI drafts (mos-seo-content) → human reviews → manual commit | Current for AI-written posts |
| Level 3: Git-triggered | Boxi CRM → GitHub API → auto-commit → Vercel deploys | Roadmap: Sprint 1 |
| Level 4: Fully automated | CRM scheduled → GitHub API → deploy → Postiz social queue | Roadmap: Sprint 2 |
Agencies using advanced automation report 29% higher revenue impact (Averi AI, 2026). Building Level 3+4 puts Boxi in the top 1–2% of agencies by automation capability.
Level 1 — Current (Manual)
Section titled “Level 1 — Current (Manual)”mos-seo-content → MDX file written + reviewed │ └── Manual: commit to client repo → push → Vercel deploys (~60 sec) │ └── Manual: create social posts in PostizTrack each delivery as a Task in Boxi CRM.
Level 3 — GitHub API Publisher (to build)
Section titled “Level 3 — GitHub API Publisher (to build)”Boxi CRM creates the MDX file directly in the client’s GitHub repo via the GitHub API. Vercel picks it up and deploys automatically.
// In Boxi CRM — publish blog post to client's Astro siteawait fetch( `https://api.github.com/repos/Traderfuz/${clientRepo}/contents/src/content/blog/${slug}.mdx`, { method: 'PUT', headers: { 'Authorization': `Bearer ${GITHUB_TOKEN}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ message: `Add blog post: ${title}`, content: btoa(mdxContent), // base64 encoded branch: 'main', }), })Store in Boxi provider config: GITHUB_TOKEN per client in lib/settings/provider-config-loader.ts (encryption infrastructure already built).
Level 4 — Full Pipeline (to build)
Section titled “Level 4 — Full Pipeline (to build)”1. mos-seo-content → MDX written + reviewed │ ↓2. Stored in Boxi CRM (draft, with publishAt timestamp) │ ↓3. Boxi cron fires at publishAt: ├── GitHub API → commit MDX → Vercel deploys └── Postiz API → schedule social posts: publish day + day 3 + day 7Postiz API (social scheduling)
Section titled “Postiz API (social scheduling)”// Schedule a social post via Postiz APIawait fetch('https://postiz.yourdomain.com/api/posts', { method: 'POST', headers: { 'Authorization': `Bearer ${POSTIZ_API_KEY}` }, body: JSON.stringify({ integration: clientIntegrationId, // client's connected social account content: 'Check out our latest guide...', date: publishDate.toISOString(), settings: { link: `https://clientsite.com/blog/${slug}` }, }),})Store in Boxi provider config: POSTIZ_API_KEY + per-client integration IDs.
Content-Only Clients (Existing Sites)
Section titled “Content-Only Clients (Existing Sites)”WordPress (WP REST API)
Section titled “WordPress (WP REST API)”await fetch(`https://clientsite.com/wp-json/wp/v2/posts`, { method: 'POST', headers: { 'Authorization': `Basic ${btoa(`${wpUser}:${wpAppPassword}`)}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ title, content, status: 'publish', slug }),})Webflow (CMS API)
Section titled “Webflow (CMS API)”Same pattern — POST /collections/{collectionId}/items with Webflow API key.
No API / locked CMS
Section titled “No API / locked CMS”Write in Google Docs → track delivery as a Boxi Task → client pastes into CMS.
Implementation Priority
Section titled “Implementation Priority”- Now: Manual publish + Postiz manual scheduling. Track in Boxi Tasks.
- At >10 posts/week across clients: Build GitHub API publisher (Level 3). ~1–2 day sprint.
- Social automation first win: Boxi Workflow → Postiz API. One workflow template that auto-queues 3 social posts on every blog publish. Highest client-visible value.