Content Management
Create, edit, and organize your social media content with a flexible parent-variant model.
Content Items & Variants
Viraly uses a two-level content model to keep your ideas organized across networks:
Content Item (Parent)
Variant (Network Version)
Why this model?
Creating Content
There are several ways to create content in Viraly:
- AI Agent — Ask the agent to create a post in the chat. It will create the content item and variants automatically.
- Content Editor — Navigate to the Content Library and create a new post manually. Write the main body, then customize each network variant.
- Generate with AI— In the content editor, click "Generate with AI" to have the AI create a post for you. You can optionally provide guidance for what kind of post you want.
The Content Editor
The content editor is split into two sections:
- Main Content— The canonical body text, title, and status. This is the "source of truth" for the idea.
- Variant Cards — One card per network (X, LinkedIn, Instagram). Each shows the current text, character count, and scheduling status.
Adapting for Networks
Each network has different requirements:
| Network | Max Length | Style |
|---|---|---|
| X (Twitter) | 280 characters | Concise, punchy, hashtags welcome |
| 3,000 characters | Professional, longer form, thought leadership | |
| 2,200 characters | Visual-focused, storytelling, hashtag-heavy |
You can click "Adapt for [Network]" on any variant card to have the AI automatically rewrite the main content for that specific network.
Preview
Each variant card has a "Preview" button that opens a modal showing how the post will look on that network. The preview uses your connected account's name, handle, and avatar for a realistic representation.
Status Workflow
Content items move through these statuses:
- Draft — Created but not yet scheduled or published.
- Scheduled — At least one variant has a scheduled publishing job.
- Published — Successfully posted to the social network.
- Failed — Publishing was attempted but failed (e.g., token expired).