> ## 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.

# Blog Posts

> Generate blog posts from your development activity or from a GEO content brief, refine them with the content agent, and publish

Kolaria writes blog posts in two ways:

* **From your activity (Studio)**: turn pull requests, commits, releases, and Linear issues into a narrative post about what you shipped.
* **From a prompt (GEO Write)**: write an article that targets a prompt AI answer engines are asked about, using your brand identity, sitemap, and competitor data as context.

Both produce a post with the content type `blog_post` that you review and publish from **Content**.

## Content Types

Posts in Kolaria have one of these content types:

| Type | What it is |
| - | - |
| `changelog` | Categorised list of what changed |
| `blog_post` | Long-form article |
| `linkedin_post` | LinkedIn post |
| `twitter_post` | Post for X |
| `image` | Generated social image (1200 x 630) |

Every post has a status of `draft` or `published`. The API also accepts `investor_update` as a filter value for older posts, but the dashboard no longer generates that type.

Blog posts can additionally carry a subtype: `guide`, `comparison`, `listicle`, `how-to`, `faq`, or `alternatives`. Posts written through GEO Write get one of these; posts generated from repository activity do not.

## How Blog Posts Differ from Changelogs

| Aspect | Changelog | Blog Post |
| - | - | - |
| **Purpose** | Comprehensive list of changes | Narrative around specific features |
| **Scope** | All changes in a timeframe | Selected highlights worth exploring |
| **Structure** | Summary + categorised lists | Introduction + deep dive + conclusion |
| **Length** | Fixed structure | Around 400 to 800 words in the body |
| **Quota** | Long-form post | Long-form post |

<Info>
  Both count against the long-form posts quota of your plan. See [Billing & Plans](/organization/billing).
</Info>

## Writing from Repository Activity

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

  <Step title="Formats">
    Select **Blog post**. You can combine it with other formats in the same run. Pick the 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 in the post. Keeping the selection focused on one feature produces a much better article.
  </Step>

  <Step title="Identity">
    Choose the brand identity that should write the post. Kolaria creates a collection and generates the draft.
  </Step>
</Steps>

The blog agent targets 400 to 800 words for the body, goes shorter when there is less to say, and includes code snippets, API examples, or before-and-after comparisons where they make the post more concrete.

### Automating Blog Posts

Blog posts can also be generated by schedules and event triggers. A release trigger is the most common setup:

```json theme={null}
{
  "sourceType": "github_webhook",
  "sourceConfig": { "eventTypes": ["release"], "includePreReleases": false },
  "targets": { "repositoryIds": ["repo_123"] },
  "outputType": "blog_post",
  "outputConfig": { "brandVoiceId": "bv_123" },
  "enabled": true,
  "autoPublish": false
}
```

Blog posts support **Auto-publish**: when it is on, generated posts are saved as `published` instead of `draft`. See [Event-Based Automation](/automation/event-based) and [Scheduled Automation](/automation/scheduled).

## Writing from a Prompt (GEO Write)

When you want an article that improves how AI answer engines describe your brand, use **Write** in the GEO sidebar.

<Steps>
  <Step title="Prompt">
    Enter the prompt you want the article to answer, or start from a content gap.
  </Step>

  <Step title="Format">
    Choose **Guide** (a long article that answers the prompt directly), **Listicle** (a numbered list buyers can scan and cite), or **Comparison** (compares your brand with its alternatives).
  </Step>

  <Step title="Context">
    Optionally attach a brand identity, a sitemap so the writer can link to your existing pages, and competitors to position against.
  </Step>

  <Step title="Brief and draft">
    Kolaria first writes a content brief, then drafts the article from it. The finished post opens in the editor with the brief available alongside it.
  </Step>
</Steps>

## Editing with the Content Agent

Open any post and use the content agent in the right-hand panel. Select a passage to give it context, then ask for changes:

**Expand on technical details**

* "Explain the implementation in more detail"
* "Add a code example for this feature"

**Adjust tone and audience**

* "Make this section more accessible for non-technical readers"
* "Rewrite this in a more conversational tone"

**Improve structure**

* "Add a section about migration steps"
* "Add a conclusion with next steps"

The agent edits the document directly. You can also edit the Markdown yourself at any time.

## Publishing

Clicking **Publish** sets the post status to `published`. Kolaria does not push the post to a site by itself. Published posts are picked up by:

* **Framer**: the Kolaria plugin imports posts into a Framer site. See [Framer](/integrations/framer).
* **Your own site or CMS**: fetch posts with `GET /v1/posts?status=published&contentType=blog_post` and render them. See [API Getting Started](/api/getting-started).
* **Manual**: copy the Markdown from the editor.

**Move to draft** takes a post back to `draft`.

## Best Practices

### Focus on One Main Topic

Blog posts should have a clear narrative thread. Deselect unrelated activity in the Activity step instead of asking the writer to cover everything.

**Good**: "How We Reduced API Response Time by 60%"\
**Poor**: "March 2026 Product Updates"

### Include Context and Motivation

Good posts explain the problem, the solution, the impact for users, and what you learned. The writer can only include what your PRs, commits, issues, and brand identity contain, so descriptive PR bodies matter.

### Keep Your Brand Identity Current

The writer reads your company description, tone, target audience, custom instructions, and reference posts. See [Brand Voice](/concepts/brand-voice).

### Review Before Publishing

Check technical accuracy, add screenshots or diagrams on your site, and get a teammate to read it. Posts stay in `draft` until you publish them.

## Example Blog Post Structure

````markdown theme={null}
# Introducing Email Link Verification: Secure, Seamless User Onboarding

## The Challenge

User registration flows have always presented a tension between
security and user experience...

## Our Solution

We built a passwordless email verification system that balances
security with convenience...

### How It Works

1. User enters their email address
2. System generates a secure, time-limited verification token
3. Email is sent with a magic link
4. User clicks the link and is authenticated

### Security Considerations

- **Time-limited tokens**: Links expire after 15 minutes
- **Single-use tokens**: Each link can only be used once
- **Rate limiting**: Prevents enumeration attacks

## Implementation Details

```typescript
// Example code showing key implementation
```

## What's Next

We're already working on social authentication and passkey support...
````
