Social Media Generation

Claude drafts the text, but the content manager owns it.

Status In Production · 2025
Role Design + EngineeringSolo, end to end
Context San Antonio ReviewA component of the SAR system
Stack
WordPress PHP Claude API Render Meta Graph API Bluesky

A social post is the organization speaking in public, about its own work and in its own voice. The easy version generates a single caption and blasts it across every platform on a schedule. In SAR’s system, the AI drafts platform-specific copy, while the editor edits and approves before anything posts.

The Trust Question

When AI drafts the organization’s public voice, whose voice is it?

Followers encounter a social post as the organization speaking: what it chooses to say about itself and how it sounds. The easy automation generates a caption, posts it everywhere on a schedule, and never involves a human. It scales infinitely. It’s what a lot of social tools do.

But a public voice that’s just unreviewed AI output isn’t the organizations’s voice; it’s an inference wearing the organization’s name. When it says something slightly off, or tone-deaf, or generic, the followers who came for a specific sensibility get an algorithm instead. And one caption doesn’t fit every platform: Bluesky, Instagram, and Facebook differ in length, tone, and how links and tags work. A single cross-post reads as lazy on all three.

The plugin’s design principle splits drafting from authorship. The AI can create a draft that removes the blank-page labor of writing three platform-specific captions. But the content manager reviews, edits, and approves every word because the public voice has to stay the organization’s, not the model’s.

What followers encounter
“This is the organization speaking. I recognize its taste, its voice, and how it talks about its work.”
What unchecked automation delivers
“An inference masquerading as the organization, blasted identically to every platform, on a schedule.”
What I Designed

AI drafts each platform’s copy, while the editor edits and approves before anything posts.

The system is a WordPress plugin that runs from the draft post. The content manager is here at the point of publication, so context-switching friction is eliminated. One click sends the content and author info to a Render service, which calls Claude to produce copy tailored to each platform’s conventions.

The three social media post drafts are reviewed side by side, edits made inline, optional regeneration, and approved. Approved copy attaches to the draft and goes out when the content goes live. Nothing posts without human approval.

Draft content human clicks generate Generate drafts Claude · Render Platform drafts · Bluesky · Instagram · Facebook Human review edit · approve Publish with the piece regenerate any single platform HUMAN STEP AUTOMATED PUBLISHED
One click drafts copy for three platforms; the content manager edits and approves; approved social media posts publish with the piece.
What I Deliberately Did Not Build

Everything that would have taken the public voice out of human hands.

A lot of “social automation” is built to remove the human entirely. This system is built to keep the human as the author. Each rejection below is a place where convenience would have meant ceding the organization’s voice.

Scheduled auto-posting without review
The central decision. The plugin could have posted on a schedule with no human in the loop, providing maximum scale and zero oversight. SAR posts nothing without a human approving it. A public voice on autopilot is an inference wearing the organization’s name, and the cost of one bad post is borne by the organization, not the tool.
One caption blasted to every platform
Each platform gets its own draft, because the conventions genuinely differ in length, tone and how links and tags are presented. Identical cross-posting is both lazy-looking and worse-performing.
AI replies and engagement automation
The system drafts outbound posts about new work. It does not auto-reply, auto-DM, or run engagement on the organization’s behalf. Conversation with the audience is a relationship, and relationships stay human.
LinkedIn
Attempted and scoped out. LinkedIn’s platform review process timed out during approval, so it was dropped rather than shipped half-integrated. Bluesky, Instagram, and Facebook are live.
How It Works

A plugin where the content manager is working.

Draft-screen plugin

WordPress plugin · PHP
No separate tool, no context switch

The plugin runs from the post editor, the screen where the content manager is already working on the piece. Generating social copy is one click away. The earlier version of this system was a standalone Flask app with its own review UI. Moving it into the post screen removed the context switch entirely. The editor never leaves the work to promote the work.

Platform-specific generation

Claude API · Render
Three drafts, tailored per platform

The plugin sends the post content and author info to a Render service — the same service the image agent uses — which calls Claude to return copy tailored to each platform’s conventions. The content manager sees all three drafts side by side and edits them in line.

Review + publish

PHP · Meta Graph API · Bluesky
Human-gated, tied to the piece

Approved copy attaches to the draft and the content image, posting when the piece itself goes live. The tie between publishing the work and promoting it is enforced in code.

// Social posts go out with the piece — never on a disconnected schedule add_action(‘transition_post_status’, function($new, $old, $post) { if ($new !== ‘publish’ || $old === ‘publish’) return; $approved = get_post_meta($post->ID, ‘_sar_social_approved’, true); if ($approved) { publish_social_posts($post->ID); // editor-approved copy only } }, 10, 3);
Result

Platform-specific reach with organization voice intact.

3
Platforms automated
1
Click to draft all three
0
Posts without editor approval
0
Disconnected schedules

Preserved

  • The organization’s public voice stays the content manager’s.
  • Every word posted is human-reviewed.
  • Posts go out with the work, not on a disconnected schedule.
  • Audience conversation stays human.

Now possible

  • Platform-specific copy without writing three captions from scratch.
  • Social distribution that keeps pace with publishing.
  • A consistent public voice across platforms, still human-owned.
  • The pattern ports to any team distributing to multiple channels with a brand voice to protect, like marketing, comms, and multi-channel content operations