> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kolaria.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Social Media Posts

> Generate LinkedIn and X posts from your development activity, connect your accounts, and publish straight from the editor

Kolaria generates LinkedIn and X posts from your GitHub and Linear activity, lets you edit them with the content agent, and publishes them to your connected accounts from the editor.

## Supported Platforms

**LinkedIn** (`linkedin_post`)\
Posts of around 800 characters for professional networking and thought leadership.

**X** (`twitter_post`)\
Posts of 280 characters or fewer. If the connected account is verified (Premium or Business), the editor allows up to 25,000 characters.

Both count as **social posts** in billing. Social posts are unlimited on every paid plan.

## Generating Social Posts

<Steps>
  <Step title="Open the create dialog">
    Switch the sidebar to **Studio**, open **Content**, and click **New post**.
  </Step>

  <Step title="Formats">
    Select **LinkedIn post**, **Tweet**, or both. You can combine them with a changelog or blog post in the same run. Pick a lookback window and toggle **Pull Requests**, **Commits**, and **Releases**.
  </Step>

  <Step title="Activity">
    Choose repositories and Linear integrations, then deselect anything you do not want mentioned. Social posts work best when the selection is narrowed to one meaningful change.
  </Step>

  <Step title="Identity">
    Choose the brand identity that should write the post. The writer reads that identity's reference posts first to match your voice.
  </Step>
</Steps>

Social posts can also be generated by schedules and event triggers with `outputType` set to `linkedin_post` or `twitter_post`. They are always saved as drafts; auto-publish is only available for changelogs and blog posts. See [Scheduled Automation](/automation/scheduled).

<Warning>
  If there is no meaningful activity in the lookback window, the writer skips the run instead of forcing a post. Scheduled runs report this as skipped.
</Warning>

## LinkedIn Posts

### Structure

Every LinkedIn post follows this flow:

<Steps>
  <Step title="Hook (2 lines)">
    **Line 1**: a bold statement that earns attention without overpromising\
    **Line 2**: a rehook that challenges, twists, or sharpens line 1
  </Step>

  <Step title="Insight or story">
    What you built, discovered, or learned
  </Step>

  <Step title="Lesson">
    Why it matters and what changed
  </Step>

  <Step title="Takeaway">
    A clear ending that prompts reflection or a reply
  </Step>
</Steps>

### Content Rules

* Around 800 characters
* One core idea, at most two supporting updates
* No hashtags and no emojis
* No PR numbers and no GitHub links
* Only line breaks and simple bullets for formatting
* Meaningful bug fixes can carry a post when they clearly improve user experience, reliability, security, or performance

### Example

```text theme={null}
Shipped something I've been thinking about for months.

We just released cache component support with actionable error
guidance for our developer tools.

The problem we kept hearing: developers were hitting cryptic errors
when using auth calls in cached contexts, with no clear path forward.

Now the runtime catches these issues early and provides:
- Clear migration guidance
- The exact usage pattern needed
- Zero guesswork

Small change. Big impact on developer experience.

What's the most frustrating error message you've encountered recently?
```

## X Posts

### Content Rules

* 280 characters or fewer, aiming for 100 to 250
* No hashtags and no emojis
* No PR numbers and no GitHub links
* One idea per post

The editor shows a live character count against the limit of the account you are posting from.

## Tone

Posts are written in the tone profile of the selected brand identity: **Conversational**, **Professional**, **Casual**, or **Formal**. Configure it under **Studio > Brand Identity**. See [Brand Voice](/concepts/brand-voice).

<Tip>
  Add real posts you have written as **References** on the brand identity. The social writer reads them before drafting, and they are the most effective way to make posts sound like you.
</Tip>

## Connecting Your Accounts

Publishing from Kolaria requires a connected account.

<Steps>
  <Step title="Open Analytics">
    In **Studio**, open **Analytics**.
  </Step>

  <Step title="Connect">
    Click **Connect X** or **Connect LinkedIn**. You are sent to the platform to authorize Kolaria and then returned to the dashboard.
  </Step>

  <Step title="Pick a LinkedIn page (optional)">
    If your LinkedIn login manages several pages or organizations, Kolaria asks which one to connect.
  </Step>
</Steps>

Connected accounts belong to the organization, so any member can publish to them. You can reconnect an account from the same page if a token expires.

<Note>
  The connection link is only valid for 10 minutes and must be completed by the same user who started it.
</Note>

## Publishing

Open a LinkedIn or X post in the editor and click **Post to LinkedIn** or **Post to X**.

<Steps>
  <Step title="Preview">
    A dialog shows the post as it will appear, with the connected account's name and avatar. Make final edits here. If several accounts are connected, pick the one to publish from.
  </Step>

  <Step title="Publish">
    Click the publish button. Kolaria sends the post to the platform and waits for confirmation. On success it shows a link to the live post.
  </Step>

  <Step title="Save as a reference (optional)">
    After publishing you can add the post as a reference to one of your brand identities so future posts learn from it.
  </Step>
</Steps>

Publishing to a platform is separate from the post status in Kolaria. The **Publish** button in the editor toolbar only changes the status from `draft` to `published`; it does not post anything to X or LinkedIn.

If no account is connected, the button opens the platform's compose window in a new tab instead. For LinkedIn the post text is copied to your clipboard so you can paste it.

<Warning>
  X and LinkedIn reject posts that duplicate something the account recently published. Edit the text before publishing it a second time.
</Warning>

## Analytics

After you connect an account, **Studio > Analytics** shows engagement rate, followers, impressions, and interactions for the selected date range, a leaderboard of your posts, and a page per account. Posts published from Kolaria are matched to their analytics automatically.

## Editing Social Posts

Use the content agent in the editor to refine a draft:

**Adjust the hook**\
"Make the opening more surprising"\
"Start with a specific problem statement"

**Change the focus**\
"Focus more on the performance impact"\
"Highlight the technical challenge we solved"

**Refine the tone**\
"Make this more conversational"\
"Simplify the language"

**Improve engagement**\
"Add a question at the end"\
"Include a specific metric"

<Tip>
  Keep your edits concise. The best social posts are short, punchy, and easy to read on mobile.
</Tip>

## Best Practices

### One Core Idea Per Post

Pick the most interesting update and go deep on it.

**Good**: Focus on one feature with clear impact\
**Poor**: List 10 different updates from your changelog

### Lead with Impact, Not Implementation

**Good**: "We reduced API response time by 60%"\
**Poor**: "We implemented request coalescing and caching"

### Use Specific Numbers

**Good**: "Reduced build time from 8 minutes to 90 seconds"\
**Poor**: "Significantly improved build performance"

### End with Engagement

**Good**: "What's the most frustrating error message you've encountered?"\
**Poor**: "Check out our changelog for more details."

### Match Your Activity Level

If you ship weekly, post weekly. If you ship monthly, post monthly. Kolaria will not invent news when there is none.

## Common Pitfalls

### Changelog Dumps

**Poor**: "This week we shipped 15 PRs including cache support, email verification, state management, and scrollbar styling..."

**Good**: "We shipped cache component support with actionable error guidance."

### Over-Promotion

**Poor**: "Our amazing new feature is revolutionary and game-changing!"

**Good**: "Solved a problem that's frustrated developers for years."

### Corporate Speak

**Poor**: "We're excited to announce that we've leveraged cutting-edge technologies to deliver best-in-class solutions..."

**Good**: "We built a thing that makes auth calls in cached contexts actually work."

## Scheduling Social Posts

Create separate schedules for different cadences:

```json theme={null}
{
  "name": "Weekly LinkedIn update",
  "sourceType": "cron",
  "sourceConfig": {
    "cron": { "frequency": "weekly", "hour": 9, "minute": 0, "dayOfWeek": 1 }
  },
  "targets": { "repositoryIds": ["repo_123"] },
  "outputType": "linkedin_post",
  "outputConfig": { "brandVoiceId": "bv_123" },
  "lookbackWindow": "last_7_days",
  "enabled": true,
  "autoPublish": false
}
```

Generated posts land as drafts in **Content**. Open them, review, and publish to the connected account from the editor.

<Tip>
  Find repository IDs in **Integrations > GitHub**, or list them with `GET /v1/integrations`.
</Tip>
