Beta dashboard section for Instagram and Threads — connect accounts, draft posts, approve with a schedule, and let Aveiro dispatch through Chirio. Agents can draft via API and MCP; humans approve.
Social publishing is a beta dashboard section for Instagram and Threads. Connect accounts through Chirio, compose posts with per-platform captions and media, submit for review, approve with a schedule, and let Aveiro dispatch at the right time. Publishing always requires a human click — agents can draft via API and MCP, not approve.
What social publishing is
Social is Aveiro's editorial pipeline for short-form social posts. It lives in the organization dashboard — separate from the site editor — and covers:
Connected accounts — Instagram and Threads linked through Chirio
Post drafts — captions, per-platform overrides, media, and target accounts
Review and approval — a human approves or rejects before anything publishes
Scheduling — pick a publish time; a background dispatcher sends due posts
Feedback thread — comments and rejection reasons agents can read when revising drafts
Open Social in the dashboard sidebar when the feature is enabled for your organization.
Beta access
Social publishing is a beta, org-scoped feature. It is off by default.To turn it on:
Go to Organization → Features
Enable Social publishing
Reload the dashboard — Social appears in the sidebar
You also need the Audience manage capability (owners and admins have this by default). If Chirio is not configured on the deployment, the accounts strip shows a setup notice instead of connect buttons.
How it differs from site publishing
Surface
What you publish
Approval
Site editor
MDX pages and site settings to your domain
You choose when to publish from the editor menu
Social dashboard
Instagram and Threads posts via Chirio
A human must approve; agents cannot publish autonomously
Audience
Email campaigns to subscribers
You send when ready; deliverability gates apply
Site SEO and social sharing settings control how links to your pages look when shared. The Social section publishes native posts to connected social accounts — a different channel with its own captions and media.
The Social page at a glance
Connected accounts
The Accounts page under Social lists which Instagram and Threads accounts are linked. Use Add in its header and pick a platform to start Chirio's OAuth flow. You need at least one active account before approving a post.
Status tag — Draft, Needs review, Scheduled, Published, and so on
Platform icons — which accounts the post targets
Caption preview — the base caption text
Schedule — confirmed time or an agent-proposed time (shown as proposed)
Click a row to expand the editor, action buttons, and feedback thread.
Use New post to create a blank draft from the dashboard.
Post editor
Inside an expanded row you can:
Write a base caption used on every platform without an override
Pick target accounts with checkboxes
Add per-platform caption overrides — required when Instagram (2,200 chars) and Threads (500 chars) need different copy
Attach media from the org library, upload, AI-generate, or register a public URL
Set a schedule datetime — approval copies this into the confirmed publish time
Media, carousels, and per-platform crops
A post's media is a carousel: attach several images and every one publishes as a slide, in the order shown in the editor. Drag order is set with the arrows on each slide; the preview above the list shows the order the platforms will use.
Social posts also need different crops per platform — Instagram favors portrait (4:5), Threads often works best at 1:1, and landscape assets suit link previews elsewhere. That is what the per-slide platform selector is for.
In the dashboard: the AI generator in the media picker includes an aspect ratio selector. Pick square, portrait, or landscape presets before generating. Each generation consumes org AI credits.
Via API and MCP: pass up to fouraspectRatios on POST /api/v1/social/media/generate (or aveiro_social_generate_media) to produce platform-fit crops from one prompt. Each ratio is billed separately and generated independently — reviewers see every asset before approval.
At publish: assets left on All platforms publish as the carousel, every slide, everywhere. Assets assigned to a platform become that platform's own set and replace the shared carousel for it — that is how one platform gets a different crop, or a different picture entirely.
Each platform caps the set: Instagram 10 slides, Threads 20, LinkedIn 10 images (or one video on its own), X 4, Supa Hub 10, Reddit a single image. Approval refuses a post over the limit and names the platform. An Instagram story publishes the first slide only — the rest still go out as a carousel on the feed.
What LinkedIn calls a carousel is a document post — one multi-page PDF the feed paginates into swipeable slides, and the format that reliably outreaches a plain image post there.
You never make the PDF. Attach the slides like any other carousel, tick Publish as PDF carousel under the LinkedIn account in the editor, and Aveiro composes the slides into a document at publish time.
What changes, and what does not:
The caption and first comment publish exactly as on a feed post.
A carousel title field appears; it is the headline LinkedIn shows above the slides. Leave it blank and the first line of the LinkedIn caption is used.
The 10-image cap does not apply — the slides become pages of one document instead.
Give the deck one aspect ratio (1:1 or 4:5 read best). A slide of a different shape is letterboxed onto the deck's page rather than cropped, so nothing on it is lost, but the band shows.
Video cannot be a slide. Approval refuses the post and says which target to fix.
Every other target still receives the same slides as images, so one post goes out as a LinkedIn carousel, an Instagram carousel and an X post from a single deck.
Agents do the same thing through postType: "document" on the LinkedIn target — see Agents and API.
Status lifecycle
Posts move through a fixed pipeline. A proposed schedule from an agent is a suggestion only — it never publishes until a human approves.
Status
Meaning
Draft
Work in progress — not yet submitted for review
Needs review
Waiting for a human to approve or reject
Approved
Ready to publish — waiting for schedule time or Post now
Scheduled
Approved with a future publish time
Publishing
Dispatcher is sending to Chirio
Published
At least one target succeeded — includes partial publishes where one platform is live and another failed; use Retry on the failed target
Aveiro owns the editorial pipeline; Chirio is the publish pipe. The guardrail is structural:
Approve, reject, and post now exist only in the dashboard UI
Editing a post someone else approved revokes approval and sends it back for review; editing your own re-stamps it and keeps the schedule
The background dispatcher publishes only scheduled posts that were approved
Agent drafts (tagged agent on the row) can propose schedules and captions — they cannot bypass review
Agents and automation
AI agents and scripts can draft social posts through the REST API (/api/v1/social/*) or MCP tools (aveiro_social_*) when a token includes the social:write scope. Agents can list connected accounts, create and revise drafts, generate media, and read rejection feedback — but never approve or publish.