OmniPress MCP
Summary: This MCP server lets agents archive long-form articles, queue social posts/threads, scan text for sensitive data, and list recent articles.
Publish a complete Markdown article with title/content plus optional tags, author, category, and automatic legal/PII sanitization.
Queue a social post or thread to LinkedIn, X, Threads, Reddit subreddits, or all, with optional title, media URLs, scheduling, and sanitization.
Inspect arbitrary text for CNJ lawsuit numbers, CPF/CNPJ tax IDs, emails, or other PII without publishing.
List recently saved articles with a configurable limit.
Enables queuing and reviewing short-form post drafts for LinkedIn, X, and Meta Threads through Buffer.
Allows publishing long-form Markdown articles to Dev.to.
Allows sending content to Make webhooks for custom automation pipelines.
Allows publishing long-form articles to Medium.
Allows sending content to n8n webhooks for custom automation pipelines.
Allows generating and submitting Reddit posts formatted for specific subreddits.
Allows sending content to Slack via webhooks for custom pipelines.
Allows publishing long-form articles to Substack.
Allows sending content to Telegram via webhooks for custom pipelines.
Allows generating and queuing bite-sized posts for Meta Threads.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OmniPress MCPTurn my API docs into a LinkedIn article and a Twitter thread, sanitizing any secrets."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π OmniPress MCP
πΊπΈ English | π§π· PortuguΓͺs | π€ AI Agent Manual | π¬ Video Skills | ποΈ Remotion Reference | π Changelog
The Universal Agentic Publishing Protocol & Media Distribution Engine for AI Agents via Model Context Protocol (MCP)
OmniPress MCP is an open-source, domain-agnostic agentic publishing protocol. It empowers AI agents (like Google Antigravity, Claude, or ChatGPT) to ingest raw thoughts, codebases, research papers, court rulings, policy memos, or market data, and transform them into authoritative long-form publications, high-contrast visual social carousels, viral dark channel scripts, and multi-platform distribution campaigns.
OmniPress is designed to be truly "Omni":
Omni-Domain: Universal intake engine extensible via 31 modular skills (tech, tax-legal, govtech, darkchannel, YouTube long-form documentary, and vertical short-form suites).
Omni-Platform: Native distribution across Dev.to, Ghost CMS, LinkedIn, X (Twitter), Meta Threads, Instagram (Reels & Carousels), Reddit, Webhooks (n8n/Make), and Markdown archives.
Omni-Runtime: Unified Python MCP engine (supporting STDIO and HTTP/SSE ASGI) + Remotion React programmatic video engine (12 official skills) + Pillow high-contrast carousel builder.
Omni-Channel (Multi-Tenant): Isolated channel workspaces (
channels/<slug>/) enabling seamless management of multiple brands, publications, or dark channels without asset collisions.
π― The Vision & Publishing Pipeline
Modern knowledge workers, developers, researchers, and creators spend hours translating their work into different formats across fractured social platforms.
OmniPress solves this by providing a unified Agentic Publishing Pipeline:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. UNIVERSAL INTAKE β
β Raw Thoughts β’ Code Diffs β’ Whitepapers β’ Tax Rulings β’ Research Data β
ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 2. MODULAR SKILL RUNTIME β
β Each niche has a dedicated skill directing tone, style & jargon: β
β βββ Tech & Software Architecture βββ Tax, Law & Forensic Auditing β
β βββ Public Governance & GovTech βββ Finance, Crypto & Markets β
β βββ Viral Dark Channel Engine βββ Product & Founder Journey β
ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 3. PRIVACY & SANITIZATION SHIELD β
β Automated masking of API keys, client secrets, court case IDs, & PII β
ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 4. VISUAL RENDERING & MEDIA ENGINE β
β 3:4 Branded Portrait Carousels β’ TTS Voice Narration β’ Video Staging β
ββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 5. MULTI-PLATFORM SYNDICATION β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ ββββββββββββββββββ
β β LinkedIn β β X (Twitter) β β Meta Threads β β Instagram ββ
β β (Leadership) β β (Threads) β β (Bite-sized) β β (Carousels) ββ
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬βββββββββ
β β β β β β
β βββββββββββββββββ¬ββ΄ββββββββββββββββββ΄ββββββββββββββββββ β
β β β
β ββββββββββββββΌββββββββββββ ββββββββββββββββββββββββββ β
β β Reddit (r/subreddits) β β Long-form .md Archive β β
β β Webhooks (n8n / Make) β β (Substack/Medium/Blog) β β
β ββββββββββββββββββββββββββ ββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββRelated MCP server: byline
π Core Pillars
1. Multi-Channel & Agnostic Workspace Architecture
OmniPress supports multiple isolated channels (e.g., military history, tech architecture, tax law, viral dark channels) with zero asset overlap:
channels/
βββ dossie-historico/ # Active channel workspace
β βββ channel.json # Branding, palette, fonts, handles, Buffer IDs
β βββ articles/ # Long-form articles organized by YYYY/MM/
β βββ media/
β β βββ raw/ # Source & reference assets
β β βββ carousels/ # Rendered 3:4 portrait carousel decks
β β βββ stories/ # 9:16 vertical stories
β β βββ highlights/ # Highlight covers
β βββ scripts/ # Channel-specific pipelines
βββ _template/ # Boilerplate for instant channel scaffolding2. Social Carousel Rendering Engine (CarouselBuilder)
Fully decoupled, data-driven Python (Pillow) graphics engine parameterized via channel.json:
Hierarchical Parameter Resolution: Configurable margins (
margin_ratio), typography scales (headline_scale,body_scale,step_scale,footer_scale), line heights, card backdrop alphas, and border radiuses resolved per slide, per preset, or from channel-wide defaults.Agnostic Semantic Callouts: Decoupled category vocabularies (
semantic_categories:danger,success,warning,accent) and custom tags (semantic_tags), enabling any vertical (Software, Law, History) to define custom highlighted phrases without engine code modifications.4 Visual Presets:
classic_card(Rule 08 contrast cards over archival photos),tweet_card(social proof post cards with avatar & verified badge),minimal_dark(dark editorial with serif typography & UI search mockups), andsplit_editorial(corporate authority with top photo & circular avatar cutout).Pixel-perfect dynamic wrapping: Guarantees zero text truncation or clipping under any aspect ratio (3:4, 4:5, 1:1, 9:16).
3. Universal Privacy & Secrets Shield (LGPD, CNJ & Secrets)
Before anything is staged or published, OmniPress automatically runs security and privacy sanitization:
Technical Credentials: Masks API keys, JWT tokens, Bearer secrets, and private IPs.
Legal/PII: Masks judicial process numbers (CNJ standard
0000000-00.0000.0.00.0000), Brazilian tax IDs (CPF/CNPJ), phone numbers, and emails.
4. Publishing Shield & Anti-Duplicate Idempotency (Rule 09)
Guarantees zero accidental duplicates, prevents placeholder test text leaks, and enforces strict social platform constraints before touching external network APIs:
Gate 1 (Test Text Interceptor): Blocks dummy/test strings (
"teste","test",<12 chars) from broadcasting live on production feeds withshareNow.Gate 2 (Media Requirement Gate): Rejects text-only posts destined for Instagram before network dispatch.
Gate 3 (Platform Character Limits): Enforces hard limits (Instagram: 2,196 chars for Buffer GraphQL, X: 280, Threads: 500, LinkedIn: 3,000) and reports exact excess length.
Gate 4 (24h Idempotency Ledger): Stores deterministic SHA-256 fingerprints in
media/staging/publishing_ledger.jsonto block duplicate posts within a 24-hour window.Gate 5 (Native API Metadata & Clean Overwrites): Automatically injects
metadata.instagram.type = "post"andshouldShareToFeed = true, and purges obsolete drafts with atomicdelete_postGraphQL mutations.
5. Programmatic Video & Motion Design Engine (Remotion)
Full React & TypeScript video engine (src/video/) engineered for YouTube Documentaries (16:9) and Shorts/Reels/TikTok (9:16):
Universal Compositions: Render broadcast-grade MP4s in seconds using
npm run remotion:render.Vertical Duration Standard for Monetization: Standardized 62β68 second target (~65s / 1,950 frames @ 30fps) to qualify for the TikTok Creator Rewards Program (>60s requirement) without risking sub-minute rounding disqualifications, while fitting seamlessly within YouTube Shorts (up to 180s) and Instagram Reels (up to 90s).
Synchronized Whisper Subtitles: Word-by-word dynamic highlighting (
SynchronizedCaptions.tsx) powered by Whisper JSON timestamps over frosted dark backdrop cards.Cinematic Components: Built-in military cipher decryption (
ScrambledText), 3D floating dust motes (DustParticles), anamorphic golden flares (AnamorphicFlare), distressed official stamps with camera shake (ClassifiedStamp), tactical grids (TacticalGrid), film grain (FilmGrain), and Ken Burns camera movements (KenBurnsImage).Synchronized Broadcast Soundscape: Multi-layered 48kHz stereo audio embedded via
<Audio />with dynamic audio ducking (-18dB to -22dB under speech).Programmatic Thumbnail Generator (Rule 15): High-CTR 16:9 thumbnails rendered directly from React (
ThumbnailEpisode.tsx) complying with the Titanic Typography Scale (160pxβ220px, 3-word limit, zero micro-fonts < 50px, and YouTube duration badge clear zone).
6. Multi-Channel Syndication & YouTube Integration
YouTube Direct Integration: Connects seamlessly with YouTube via Buffer (
buffer_channel_idmapped inchannel.json).Multi-Brand Scalability: Easily expand across multiple verticals (History, Geopolitics, Software Architecture, and Tax Law / Public Governance) with zero code duplication.
7. OmniPress Content Factory β 12 Specialized Subagents & Production Modes (v0.5.0)
A modular, assembly-line content generation factory driven by 12 specialized subagents orchestrated by the Central Director (AG12). Operates across 4 execution modes configured via declarative recipes:
Express(~5 min): Rapid publishing (AG12 β AG01 β User Gate β AG04). Designed for Markdown articles, LinkedIn authority posts, and connected X threads.Standard(~20 min): High-retention vertical videos (Shorts / Reels / TikTok). Activates research, synchronized imagery curation (AG02), audio broadcast mastering (-14 LUFS, AG03), narration audit (AG10), timing verification (AG05), and editorial QA (AG04).Full Production(~75 min): Broadcast-grade 16:9 documentary production orchestrating all 12 subagents: Remotion visual effects (AG07), immersive sound design (AG08), user-sovereign soundtrack curation (AG09), and adversarial quality review (AG11).Remix(~30 min): Visual and acoustic modernizer reusing pre-mastered voice tracks to refresh B-roll, SFX, and Remotion motion dynamics.Strict Contract Handoffs: Standardized JSON schemas (
.agents/schemas/) guarantee seamless data flow across agents (roteiro.json,image_manifest.json,timing_report.json,audit_report.json,production_log.json).
8. Universal 3D Asset & Mockup Engine (Blender Headless / v0.6.0)
Declarative photorealistic 3D asset generation powered by headless Blender 4.2+ LTS with alpha transparency (PNG/WebM):
Dynamic Device Mockups: Smartphone in perspective with beveled dark titanium chassis and automatic UV screen mapping for carousel/article screenshots (
device_mockup.py).Rotating Metallic Badges & Coins: 3D beveled medallions with customizable metallic shaders (
gold,silver,chrome,obsidian,bronze) and optional front insignia (rotating_badge.py).3D Kinetic Typography: Extruded beveled 3D text with studio lighting and specular highlights (
kinetic_title.py).Waving Silk Flags & Banners: Photorealistic 3D waving flags and banners with harmonic cloth displacement, satin shaders, custom texture mapping, and polished golden pole (
waving_flag.py/brazil_flag.py).CLI & MCP Control: Render via
omnipress render-3dor canonical MCP toolomnipress_render_3d.
9. Universal Factory Architecture β Providers, Recipes & Schemas (v0.10.0)
src/ is a factory: universal engines and providers that know nothing about a specific channel. channels/<slug>/ is data: recipes, assets and channel templates. See docs/ARCHITECTURE.md and docs/PROVIDERS.md.
Layer | Responsibility |
| Channel discovery, credentials, cache, schema validation, capability registry |
|
|
| The only door to external runtimes: Blender, Remotion, FFmpeg, Edge-TTS, Whisper, AI image, prompt export, stock assets |
| Publishing providers (Buffer, Instagram, Dev.to, Ghost, Reddit, Webhook, Markdown) |
| Remotion compositions with a fully prop-driven theme ( |
Declarative recipes are validated against .agents/schemas/*.schema.json before any work:
omnipress carousel --recipe channels/<slug>/episodios/<ep>/carrossel/carousel_recipe.json --all
omnipress thumbnail --recipe channels/<slug>/media/thumbnails/<post>/thumbnail_recipe.json --preview 120 320
omnipress documentary --recipe channels/<slug>/episodios/<ep>/documentario/documentary_recipe.json
omnipress video --recipe channels/<slug>/recursos_globais/vinhetas/intro_recipe.json
omnipress master-audio voice.mp3 -o master.mp3 --mix-bed soundtrack.mp3 --bed-volume 0.18
omnipress align-captions whisper.json -o captions.json --verify
omnipress assets --recipe channels/<slug>/media/raw/assets/asset_recipe.json
omnipress render-3d --recipe channels/<slug>/media/visuals/3d/3d_recipe.json --validate-only
omnipress deploy public/episode.mp4 --target-dir public
omnipress doctor --jsonAdding a channel or a 3D template requires zero Python: only JSON and channel files. Adding a new external runtime requires one provider and one capability entry.
π Step-by-Step Hands-On Guide
Here is the complete walkthrough to install, configure, and use OmniPress from scratch to your first published piece.
Step 1: Installation & Environment Setup
Step 1: Quickstart & Installation
Option A: Zero-Clone Execution via uvx (Recommended)
You can run OmniPress immediately without cloning or setting up virtual environments:
# Run the MCP server directly
uvx omnipress-mcp
# Or run the environment diagnostic
uvx --from omnipress-mcp omnipress doctorOption B: Smithery 1-Click Install
If using Claude Desktop or Cursor, install directly via Smithery:
npx -y @smithery/cli install omnipress-mcp --client claudeOption C: Local Git Clone for Contributors
# 1. Clone repository
git clone https://github.com/ismaelsoilet/omnipress-mcp.git
cd omnipress-mcp
# 2. Install dependencies with uv
uv sync
# 3. Verify that all test suites pass (80 tests):
uv run pytest -v # Python test suite
npm run typecheck # Remotion TypeScript integrityStep 2: Configure Credentials & Environment
You can configure OmniPress interactively via the CLI or manually via .env:
# Run the interactive setup wizard:
omnipress setup
# Run environment and capability diagnostics:
omnipress doctor
# Automatically sync connected social profiles from Buffer into channel.json:
omnipress sync-buffer [channel-slug]Multi-Channel Environment Isolation (Rule 04)
OmniPress supports true multi-tenant workspace isolation:
Root
.env: Serves as the primary configuration for the flagship channel (DossiΓͺ HistΓ³rico viaOMNIPRESS_ACTIVE_CHANNEL=dossie-historico).Channel
.env(channels/<slug>/.env): Channels (e.g.channels/ismael-soilet/.env) maintain their own isolated API keys and profile IDs, completely decoupled from other brands.Precedence Order:
channels/<slug>/.envβ<SLUG>_BUFFER_API_KEYβ root.env.
π‘ Offline Mode: OmniPress works out-of-the-box without any API keys. In offline mode, articles are safely stored locally in Markdown and social copies are printed in chat ready for manual copying.
Key integrations:
Developer Thought Leadership (Dev.to):
Obtain your API Key at: dev.to/settings/extensions.
Set
DEVTO_API_KEY.
Independent Publications & Newsletters (Ghost CMS):
Create a Custom Integration in Ghost Admin (
Settings -> Integrations).Set
GHOST_API_URL(e.g.,https://myblog.ghost.io) andGHOST_ADMIN_API_KEY({id}:{secret}).
Multi-Network Social Syndication (Buffer - LinkedIn, X, Threads, Instagram):
Obtain your Personal API Key at: publish.buffer.com/settings/api.
Set
BUFFER_API_KEYand profile IDs (BUFFER_LINKEDIN_PROFILE_ID,BUFFER_X_PROFILE_ID, etc.).
Direct Meta Instagram Graph API:
Set
INSTAGRAM_ACCESS_TOKENandINSTAGRAM_ACCOUNT_IDfor direct Instagram publishing.
Reddit (Direct Subreddit Submissions):
Set
REDDIT_CLIENT_ID,REDDIT_CLIENT_SECRET,REDDIT_USERNAME, andREDDIT_PASSWORD.
Webhooks (n8n / Make / Slack / Telegram):
Set
OMNIPRESS_WEBHOOK_URLto receive full JSON payloads of generated posts and articles.
Step 3: Connect to Your AI Agent
Google Antigravity (Recommended)
Add the server to ~/.gemini/config/mcp_config.json (or the project root mcp_config.json):
{
"mcpServers": {
"omnipress": {
"command": "/path/to/omnipress-mcp/.venv/bin/python",
"args": ["-m", "src.server"],
"env": {
"OMNIPRESS_ACTIVE_CHANNEL": "dossie-historico"
}
}
}
}Claude Desktop
In your claude_desktop_config.json:
{
"mcpServers": {
"omnipress": {
"command": "python",
"args": ["/path/to/omnipress-mcp/src/server.py"],
"env": {
"ARTICLES_DIR": "/path/to/omnipress-mcp/articles"
}
}
}
}Step 4: Managing Channels (CLI or MCP)
Manage multiple publications via the built-in CLI or directly via AI chat prompts.
Via Terminal CLI:
# List all configured channels
python src/cli.py list-channels
# Create a new channel workspace
python src/cli.py create-channel tech-insights \
--name "Tech Insights" \
--handle "@techinsights.dev" \
--category "technology" \
--color "#00E5FF"
# View channel details and branding
python src/cli.py info-channel tech-insightsVia AI Chat Prompt:
"OmniPress: List all configured channels and show me the active channel configuration."
Step 5: Publishing Workflows in Practice
Workflow A: Author & Archive a Long-Form Article
When you ask the AI to draft an article:
The AI formats content in clean Markdown.
Attaches complete YAML frontmatter (
title,date,category,tags,author,status: draft).Runs the privacy and secrets scanner.
Invokes
omnipress_publish_article, saving tochannels/<slug>/articles/YYYY/MM/article-title.md.
Workflow B: Universal Carousel Engine, Multi-Presets & Archetypes (v0.4.0)
OmniPress v0.4.0 features native support for Channel Archetypes (personal_brand vs. media_channel) and 4 Modular Visual Presets:
tweet_card(Thiago Ramos style): Social-proof card with author avatar, Twitter blue verified badge,@handle, punchy headline, and single/dual comparison photo frames (radius=18).minimal_dark(Rhaj Teixeira style): Minimalist dark-mode editorial with pure dark canvas (#08080A), elegant serif typography (DejaVuSerif), step counter ("Passo 1."), and vector search bar mockup with magnifying glass and clear icons.split_editorial(Portal da Reforma TributΓ‘ria style): Corporate & GovTech authority layout with top contextual photo (45%), deep navy blue solid block (55%), circular author cutout overlapping the division line, opinion badge, square bullet markers (β), and watermark logo.classic_card(DossiΓͺ HistΓ³rico / Rule 08): Full-screen archival background photo, top badge pill, protective dark translucent backdrop card (rgba(8, 10, 14, 215)), and dark safety stroke on fonts.
Instead of writing repetitive Python scripts, create a declarative carousel_recipe.json:
{
"channel_slug": "tech-insights",
"post_slug": "death-of-monoliths",
"aspect_ratio": "4:5",
"preset": "tweet_card",
"slides": [
{
"headline": "The Death of Monoliths?",
"body": "Why poorly designed distributed systems cost 10x more to maintain.",
"images": ["architecture_diagram.jpg"],
"swipe_str": "Deslize β"
}
],
"publish": {
"caption": "Why distributed systems cost 10x more when done wrong...\n\n#architecture #microservices #devops",
"platforms": ["linkedin", "instagram"],
"mode": "shareNow"
}
}Run the complete pipeline (background prep + contrast rendering + CDN upload + Buffer scheduling):
omnipress carousel --recipe channels/tech-insights/campanhas/death-of-monoliths/carousel_recipe.json --allWorkflow C: Studio Broadcast Audio Mastering (Rule 10)
Masters raw human or AI voiceover through the 6-stage studio mastering chain (-14.0 LUFS EBU R128):
omnipress master-audio channels/tech-insights/media/voiceover/raw_voice.m4a -o channels/tech-insights/media/voiceover/master_voice.mp3Workflow D: Whisper Captions Alignment
Extracts word timestamps from Whisper JSON and chunks them into punchy 2-4 word captions for Remotion video:
omnipress align-captions channels/tech-insights/shorts/s01/whisper.json -o channels/tech-insights/shorts/s01/captions.jsonWorkflow E: Queue Social Posts with PublishingShield
omnipress publish --recipe channels/tech-insights/articles/post_01/post_recipe.jsonSanitized text is delivered into each platform's draft queue.
Workflow D: Produce Dark Channel Scripts (YouTube Shorts / Reels)
Use omnipress_prepare_dark_script:
Produces high-hook openings within the first 3 seconds.
Breaks down scenes with AI image generator prompts.
Specifies voice narration instructions and YouTube/Instagram SEO metadata.
Workflow E: Render Programmatic Videos & Intros with Remotion
Preview your compositions live in the interactive browser studio:
npm run remotion:previewRender broadcast-quality 1080p intro bumpers (4.0s) with multi-layered audio:
# 16:9 Landscape for Main YouTube Episodes
npm run remotion:render:intro
# 9:16 Vertical for YouTube Shorts, Reels, and TikTok
npm run remotion:render:intro:shortsRendered MP4s are saved to media/output/intro_dossie_16x9.mp4 and media/output/intro_dossie_9x16.mp4.
Workflow F: Human Voiceover + Dynamic Remotion Timing
Have OmniPress draft the teleprompter script broken down by scenes (
Scene 01,Scene 02...).Record your voice audio per scene using your phone or microphone (
01.mp3,02.mp3...).Remotion reads audio durations dynamically, adapting visual cuts to your natural speech pace with background music ducking (-20dB under voice).
Workflow G: Headless 3D Asset Rendering with Blender (Rule 12)
Renders photorealistic 3D mockups (smartphones, tablets), rotating metallic coins/badges, and 3D kinetic typography with transparent backgrounds for carousels and Remotion video layers:
# 3D Smartphone Mockup with Article/Carousel Screenshot
omnipress render-3d --template device_mockup --texture channels/tech-insights/media/carousels/slide_01.png -o channels/tech-insights/media/visuals/3d/hero_mockup.png
# 3D Metallic Badge / Coin
omnipress render-3d --template rotating_badge --material gold -o channels/tech-insights/media/visuals/3d/badge_gold.png
# 3D Kinetic Typography
omnipress render-3d --template kinetic_title --text "OMNIPRESS 3D" --material chrome -o channels/tech-insights/media/visuals/3d/title_chrome.png
# Via Declarative 3D Recipe
omnipress render-3d --recipe recipe_3d.jsonStep 6: Ready-to-Use Prompt Templates
Copy and paste these directly into Antigravity or Claude:
1. Software Engineering Tri-Format Campaign
OmniPress: Analyze the file src/core/channel_manager.py and create a full publishing package:
1. An in-depth technical article for Substack exploring the trade-offs of local multi-tenancy.
2. A thought-leadership LinkedIn post with key takeaways.
3. A 4-tweet narrative thread for X (Twitter).
Archive the article and queue the social posts as drafts for the active channel.2. Legal / Tax Analysis with Privacy Shield
OmniPress: Draft a compliance memo on municipal software tax rulings.
Ensure all court lawsuit numbers and client identifiers are masked, and queue the executive summary to LinkedIn and Reddit r/direito.3. High-Retention Dark Channel Script
OmniPress: Write a high-retention 50-second YouTube Short script about 'Operation Mincemeat: The Corpse That Fooled Hitler'.
Include scene-by-scene AI image prompts and TTS voice direction with a cinematic, suspenseful tone.π οΈ MCP Tools Exposed
Tool | Purpose | Key Arguments |
| Lists all configured channels, active channel, and workspace paths. |
|
| Retrieves full brand identity, color palette, and credentials for a channel. |
|
| Scaffolds a new isolated channel workspace with dedicated subdirectories. |
|
| Renders production-ready 3:4 portrait carousel slides with channel branding. |
|
| Archives long-form Markdown or syndicates to Dev.to and Ghost CMS with PublishingShield idempotency. |
|
| Queues short-form post/thread with PublishingShield safety checks & anti-duplicate ledger. |
|
| Queues rich media content (Instagram Carousels, YouTube Shorts, X media posts) with PublishingShield. |
|
| Generates high-retention viral dark channel script, scene image prompts, and TTS specs. |
|
| Ideates high-retention channel concepts, psychological CTR angles, and viral backlog topics. |
|
| Synthesizes natural, high-definition neural narration audio (Edge-TTS) for Dark Channels, Reels, Shorts. |
|
| Renders MP4 video (9:16 or 16:9) combining neural audio narration and scene images via ffmpeg. |
|
| Renders photorealistic 3D visual assets with transparent background via headless Blender 4.2+ LTS. |
|
| Standalone utility to scan text for credentials, PII, or lawsuit IDs without publishing. |
|
| Lists recently archived articles and metadata from the repository or channel. |
|
| Backward-compatible alias for |
|
π Documentation & Resources
Agent Manual (docs/AGENT_MANUAL.md): Complete operational manual, tool guides, execution playbooks, and preset recipes.
Agent Guidelines (AGENTS.md): Architectural, TDQS standards, and normative rules for AI assistants.
Rule 13 Policy (.agents/rules/13_continuous_documentation_versioning_and_release_policy.md): Mandatory documentation, changelog, and SemVer versioning synchronization gate.
Changelog (CHANGELOG.md): Complete release history and version notes.
Setup Guide (English) | Guia em PortuguΓͺs: Credentials setup for Buffer, Instagram, and Reddit.
GitHub Wiki: Architectural deep dives and operational runbooks.
Creating Niche Skills Guide: How to build custom skills for new industries.
π License
Distributed under the MIT License.
Available Tools
4 toolsomnipress_inspect_contentA
Scans text for sensitive judicial lawsuit numbers (CNJ), tax IDs (CPF/CNPJ), emails, or PII without publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to scan for PII |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that the operation does not publish. However, it does not state what happens to detected PII, whether data is stored or transmitted, or what the result format is, which matters for a sensitive-data scanner.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler, and the key behavioral constraint 'without publishing' is included without bloating the description. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool the description is fairly complete, but with no output schema it does not mention what the tool returns or how detections are reported. Since this is an inspection tool, the absence of result-format information is a notable gap, though not enough to make the tool unusable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single text parameter, so the baseline is 3. The description adds value by enumerating specific detection targets (CNJ, CPF/CNPJ, emails, PII), giving the parameter semantic grounding beyond 'Text to scan for PII'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'scans' with the target resource (text) and names the sensitive entities detected (CNJ, CPF/CNPJ, emails, PII). The phrase 'without publishing' clearly distinguishes it from sibling publishing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'without publishing' caveat and the inspect verb imply this is a pre-publication safety check, and the sibling list makes the contrast with publish/queue/list tools obvious. It does not explicitly state when-not-to-use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omnipress_list_recentA
Lists recently saved articles in the local archive.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of articles to return (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Lists' implies a read-only operation and 'local archive' scopes the data source, but the description does not clarify ordering, non-destructiveness, or the meaning of 'recently saved.' Adequate for a simple read tool, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One focused sentence with no filler. The action and resource are front-loaded, making the purpose immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, one documented optional parameter, and no annotations, the description is nearly complete. It could mention return format or ordering, but nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single optional parameter 'limit' is already described with its default value. The description adds no parameter meaning, but it does not need to because the schema fully documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Lists recently saved articles in the local archive.' This clearly distinguishes it from sibling tools like omnipress_publish_article and omnipress_queue_post, which imply write operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's purpose clear but does not explicitly say when to choose it over alternatives or when not to use it. Sibling names imply different operations, but the usage context is left to inference rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omnipress_publish_articleB
Saves a complete, publication-ready long-form article to the local archive with YAML frontmatter. Runs automatic legal/PII de-identification.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Array of keyword tags | |
| title | Yes | Article title | |
| author | No | Author name | |
| category | No | Topic category (technology, tributario, pericia, govtech) | |
| sanitize | No | Whether to sanitize court numbers and PII (default true) | |
| content_markdown | Yes | Complete article in GitHub-flavored Markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it runs automatic legal/PII de-identification, which is a meaningful behavioral trait. However, it does not mention side effects (e.g., overwriting existing articles), required permissions, or whether the operation is reversible. The absence of annotations makes this gap more significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary purpose and followed by a key behavior. No redundancy or filler. The structure is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations), the description covers the core function but omits important context: return values, error behavior, idempotency, and how it fits into the workflow with siblings. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already documented. The description does not add extra meaning to any parameter beyond what the schema provides, though it implicitly relates to the 'sanitize' parameter via the de-identification mention. Per the baseline rule, this scores 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Saves a complete, publication-ready long-form article') and the target ('to the local archive with YAML frontmatter'), and it notes the de-identification behavior. It is distinguishable from siblings (queue_post, inspect_content, list_recent) by its explicit 'save' verb, though it does not explicitly contrast with queue_post, which could be ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the siblings. It does not mention prerequisites, typical workflow (e.g., after queueing), or any conditions that would favor this tool over omnipress_queue_post or omnipress_inspect_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
omnipress_queue_postB
Queues a post or thread to social platforms (LinkedIn, X, Threads via Buffer, or Reddit) in Draft/Review mode.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Post text or thread segment | |
| title | No | Optional post title (used for Reddit or headline feeds) | |
| sanitize | No | Whether to sanitize sensitive IDs before queuing (default true) | |
| platforms | No | Target platforms: ["linkedin"], ["x"], ["threads"], ["reddit:subreddit_name"], or ["all"] | |
| media_urls | No | Optional media URLs or links | |
| schedule_time | No | Optional ISO timestamp or schedule format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add one meaningful behaviorβqueuing to Draft/Review modeβbut it omits other important traits such as whether the action is reversible, whether authentication or platform configuration is required, what happens after queueing, or what response the agent should expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core action, target platforms, and mode efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no output schema, yet the description gives no information about return values, scheduling semantics, platform-specific constraints, or when queueing should be preferred over publishing. The schema covers the parameters, but the description leaves too much operational context missing for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description does not add parameter-level detail beyond what the schema provides, which matches the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Queues') with a clear resource ('a post or thread') and names the target platforms. It also states that the post is placed in Draft/Review mode, which distinguishes it from a publishing action like the sibling omnipress_publish_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives such as omnipress_publish_article. The Draft/Review mode implies a pre-publication use case, but the description never states the conditions or exclusions that would steer an agent toward or away from this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
omnipress_inspect_content - First observed
omnipress_list_recent - First observed
omnipress_publish_article - First observed
omnipress_queue_post
TDQS
Scored across 4 tools
Each tool performs a clearly distinct operation: publishing an article, queueing a social post, scanning content for PII, and listing archived articles. There is no functional overlap between the tools.
All tools share the omnipress_ prefix and use snake_case action-first names. The only minor inconsistency is list_recent lacking a noun object compared to the verb_noun pattern of the other tools.
Four tools is well-scoped for a focused content workflow: inspect, publish, queue, and list. Each tool earns its place without unnecessary bloat.
The core workflow of scanning, publishing, queueing, and listing is covered. Minor lifecycle gaps exist, such as no article retrieval/editing or queue management, but agents can work around them for the apparent purpose.
Maintenance
Related MCP Connectors
Publish articles and notes under your own byline, to a readership of other AI agents.
The agentic social media scheduler. Write, schedule and publish to all top social platforms.
Draft, schedule and publish social posts to nine platforms from any AI agent.
Let your AI agent publish to your own YouTube, Instagram, X, LinkedIn and more, with a preview.
Related MCP Servers
- AlicenseAqualityFmaintenanceAI content generation, repurposing, and multi-platform publishing for 9+ social media platforms. Generate blog posts, discover trending topics, brainstorm titles, and publish to Twitter, LinkedIn, Bluesky, and more.869 npm7MIT
- AlicenseAqualityBmaintenanceEnables AI tools to research, write, and publish finished blog posts to Ghost and WordPress in the user's voice, supporting multiple author personas and destinations through natural language.142MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to automate social media content generation, approval, and publishing, along with blog management, SEO/GEO audits, and ad operations through natural language.3AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to publish articles and notes, read feeds, comment, follow, like, and message other agents on a human-vouched publishing network.2MIT