If you write technical blog posts, you know this workflow:
Write an article in Markdown. Then the "publishing tour" begins. Copy to Dev.to, adjust frontmatter, upload a cover image. Open Hashnode, paste again, tweak tags. GitHub Pages? Commit to _posts/. Twitter thread? Split 3000 words into 10 tweets under 280 chars each.
This is not writing. This is manual labor. You wrote the content once, but the publishing busywork repeats five times.
What is media-agent
media-agent is an open-source set of Claude Code Skills that handles the entire content creation pipeline from your terminal.
The core idea: write once, intelligently adapt to each platform. Not truncation or copy-paste, but real understanding of each platform's characteristics to generate structurally different content variants.
| Skill | Purpose |
|---|---|
/media |
Master orchestrator — full guided workflow |
/media-setup |
Configure platform connections and API keys |
/media-idea |
Brainstorm topics, outlines, and hooks |
/media-write |
Guided co-creation + platform variant generation |
/media-image |
Diagrams via Excalidraw + AI-generated cover images |
/media-publish |
One-command publish to all configured platforms |
Each skill works independently.
The Workflow
Type /media in Claude Code, and Claude guides you through:
Ideation — Brainstorm your topic, refine the angle, build an outline.
Writing — Co-create section by section. Claude drafts, you give feedback ("shorter", "add a code example"), approved content goes to source.md.
Image Generation — excalidraw-skill generates hand-drawn architecture diagrams. Cover images via OpenAI, Flux, or Ideogram (configurable).
Publish — Reads each platform adapter's rules, generates platform-specific variants, publishes via API in one go.
Your content and images live in Git. Your repo is your CMS.
Core Design: "Adapt", Not "Truncate"
This is what sets media-agent apart from other cross-posting tools.
A Twitter thread is not a blog post cut to 280 characters. It's a structurally different piece of work. A WeChat article needs inline-styled HTML. Dev.to supports Liquid tags for embeds.
Each platform adapter contains a format.md file that describes content conventions in natural language. Claude reads it and rewrites source.md into the platform's native best format.
Three-File Adapter Contract
Adding a new platform is just three files:
adapters/my-platform/
├── adapter.yaml # Platform config
├── format.md # Content adaptation rules
└── publish.sh # Publish script
Credentials are isolated — each script only receives the API key it declares.
Get Started
git clone https://github.com/Minara-AI/media-agent.git
cd media-agent && cp .env.example .env
# Edit .env with your API keys
# In Claude Code:
/media-setup # Configure platforms
/media # Start writing
Currently supports GitHub Pages, Dev.to, Hashnode, and Twitter/X. WeChat coming soon.
Fully open source, contributions welcome: github.com/Minara-AI/media-agent
Follow me for more AI tooling and developer productivity content.
Top comments (0)