Add an AI API key to enable automation
Editorial story commissioning and marketing post generation are paused until you add a Claude, OpenAI, or Gemini key. Onboarding + weekly analytics still work on the platform's key.
This project is deleted
Deleted on . All data — stories, posts, reporters, sources, schedules, briefings, images — is scheduled to be permanently removed on ( days from now).
We built an export zip at deletion time. It contains every story (with body markdown + hero images), reporter (with portraits), posts, sources, seeds, schedules, and trendline briefings. Credentials are not included — re-enter API keys if you restore or rebuild elsewhere.
Export size:
Restoring brings everything back exactly as it was. If you let the grace period expire, the data is gone — we don't keep backups beyond the export zip.
Analysis of last 7 days of search + traffic data, distilled into pitches the editor reviews before reporters see it. Generated weekly on Sundays — or manually here. Only the active briefing is fed into reporter pitching prompts.
No briefing yet for this project.
Click Generate new briefing above to pull last 7 days of search + traffic data, filter noise, and surface what readers are actually looking for. Takes ~60-90 seconds.
Draft briefing
DRAFT — needs approvalWindow: → · Generated
Active briefing
ACTIVE — in useWindow: → · Approved
▸ History ( prior briefing(s))
Daily trend
Top countries
Devices
By source
By campaign × source
Recurring schedules
Social Platforms
Sign in to each platform once and Omniposter handles the API keys for you. Recommended — replaces the hand-typed key flow below.
Analytics & Search
Connect this project's Google account once, then pick the GA4 property and Search Console site to read below.
Choose what to read
No GA4 properties found — enable the Google Analytics Admin API in your Cloud project, or enter the ID manually in Settings.
No verified Search Console sites found for this account.
▸ Or paste API keys manually (legacy)
Credentials saved for . Values are hidden for security.
Re-enter every value to overwrite. Fields left blank keep their saved value.
Credentials are encrypted and stored on your server.
Project Settings
📈 What your data is telling us this week
Week of → · approved
Reporters
Cap reached. Email dev@omniposter.ai if your publication needs more.
Editor's feedback on rejected stories — fed into this reporter's next pitch + write prompts so they can self-correct:
Commissioning runs the full pipeline: reporter pitches 4 ideas → editor picks one → reporter writes the article → Pexels finds a hero image. Takes ~30-60s. Story lands in Story Queue awaiting your approval.
AI editor's notes
▸ Editor's pitch selection
▸ Full body (Markdown)
▸ Revision history ()
Seeds
In auto mode, every minute the editor evaluates submitted stories against the standards above. Clear violations get rejected (with notes); everything else gets published. Reporters with daily/weekly/monthly cadence will also auto-commission new stories when their window elapses.
Leave blank to use the default shown in the placeholder. Markdown is supported.
Content Don'ts
These rules are injected into every reporter's prompt for this site — pitching, writing, and revising. Uncheck any that don't fit your publication's style.
Public articles API (used by the Marketing → "Use editorial feed" schedule toggle)
Danger zone
Delete this project. We'll bundle every story, post, reporter, source, schedule, briefing, and image into a downloadable export zip. The project stays visible (grayed out in your nav) for 30 days so you can download the zip, email yourself a link, or restore. After 30 days everything is permanently deleted.
Pick where Omniposter pushes approved stories. Only one destination fires at a time.
Publish destination
📨 Custom webhook
When a story is approved (manually or by the auto-editor), Omniposter POSTs the article JSON to this URL with Authorization: Bearer <secret>.
What you need to build on your side ↓
Your server needs an HTTP endpoint that:
- Accepts
POSTwith JSON body - Verifies the
Authorization: Bearer <secret>header matches the secret you set below - Reads fields:
external_id,title,body(markdown),summary,hero_image_url,hero_image_attribution,reporter_display_name,reporter_beat,reporter_persona,reporter_avatar_url,published_at,topic_seed - Creates a post on your site and returns
200 OK(any 2xx counts as success)
If your site runs WordPress, switch to the WordPress option above — no custom code needed.
🌐 WordPress publishing
Push approved stories directly to your WordPress blog with title, body, hero image, SEO meta, and per-reporter author bylines. Uses WordPress's built-in Application Passwords (no plugin required). For per-reporter authors, use an Administrator-level account.
How to create an Application Password →
- Sign into WP admin (
https://yourblog.com/wp-admin/) - Go to Users → Profile in the left sidebar
- Scroll to the bottom — last section is "Application Passwords"
- Name it
Omniposter, click Add New Application Password - Copy the full generated string (shown only once) and paste it below
Section not visible? Check that the site is on HTTPS (required), WordPress is 5.6+, and no security plugin (Wordfence / iThemes / Solid Security) is blocking it.
Open your WP profile page directly ↗Generated in WordPress under Users → Profile → Application Passwords. Spaces are stripped on save.
- reporter #:
Sources
External JSON endpoints polled for raw material. New items become seeds — reporters pitch story angles from the oldest unused seed.
The endpoint must return a JSON array (or {data: [...]}) of objects with at least a title field.
Last polled: