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

# Social Media Posts

> Turn your development activity into engaging LinkedIn and Twitter posts that build your technical brand

Notra automatically generates social media content from your GitHub activity, helping you build a technical brand and share your work without manual writing.

## Supported Platforms

Notra currently supports:

**LinkedIn Posts** (`linkedin_post`)\
Longer-form posts (up to \~800 characters) for professional networking and thought leadership.

**Twitter Posts** (`twitter_post`)\
Short-form updates for quick announcements and community engagement.

<Info>
  LinkedIn and Twitter post generation are both supported.
</Info>

## LinkedIn Posts

Notra generates LinkedIn posts that sound like a thoughtful builder sharing their work, not a corporate announcement.

### Post Structure

Every LinkedIn post follows a proven engagement formula:

<Steps>
  <Step title="Hook (2 lines)">
    **Line 1**: Bold statement, 8 words max\
    **Line 2**: Twist or challenge that rehooks the reader
  </Step>

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

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

  <Step title="Takeaway">
    Clear ending that prompts reflection or engagement
  </Step>
</Steps>

### Content Guidelines

Notra's LinkedIn posts follow these rules:

* **Length**: Around 800 characters
* **Sentence length**: 8 words max for readability
* **No hashtags**: Focuses on content quality over reach gaming
* **No emojis**: Professional without being corporate
* **No PR numbers**: Keeps focus on impact, not implementation
* **No GitHub links**: Drives conversation, not click-throughs

<Note>
  These guidelines are based on LinkedIn engagement research and can be customized through your brand voice settings.
</Note>

### Example LinkedIn Post

Here's what a generated post looks like:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
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?
```

### How LinkedIn Generation Works

<Steps>
  <Step title="Activity Analysis">
    Notra scans your repository for meaningful changes within the lookback window, filtering for high-impact work worth sharing.
  </Step>

  <Step title="Story Selection">
    The AI identifies the most compelling narrative - typically one core feature with supporting context.
  </Step>

  <Step title="Post Generation">
    Content is generated in your selected tone (Conversational, Professional, Casual, or Formal) using the proven Hook → Story → Lesson → Takeaway structure.
  </Step>

  <Step title="Draft Review">
    Posts appear as drafts in your dashboard. Review, edit with AI assistance, and post when ready.
  </Step>
</Steps>

### Configuration

Set up scheduled LinkedIn post generation:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "name": "Weekly LinkedIn Update",
  "sourceType": "cron",
  "sourceConfig": {
    "cron": {
      "frequency": "weekly",
      "hour": 9,
      "minute": 0,
      "dayOfWeek": 1
    }
  },
  "outputType": "linkedin_post",
  "lookbackWindow": "last_7_days",
  "targets": {
    "repositoryIds": ["repo-id-1", "repo-id-2"]
  }
}
```

<Tip>
  Schedule LinkedIn posts for Monday or Tuesday mornings (9-10 AM) for best engagement. The platform's algorithm favors posts during these times.
</Tip>

## Tone Options

Choose the voice that matches your personal or company brand:

### Conversational (Default)

Warm, direct, and human. Sounds like a thoughtful builder, not a marketer.

**Best for**: Developer advocates, startup founders, technical leads

**Example opening**:\
"Shipped something I've been thinking about for months."

### Professional

Polished and credible without being corporate. Maintains authority while being approachable.

**Best for**: Enterprise thought leaders, technical executives

**Example opening**:\
"We've solved a challenge that's frustrated developers for years."

### Casual

Friendly and authentic. Feels like sharing wins with friends.

**Best for**: Open source maintainers, community builders

**Example opening**:\
"Okay, this one's pretty cool."

### Formal

Structured and precise. Professional tone for regulated or enterprise contexts.

**Best for**: Financial services, healthcare, enterprise software

**Example opening**:\
"We're pleased to announce a significant improvement to our platform."

## Content Strategy

### What Makes a Good Social Post?

Notra looks for changes that:

**Have clear user impact**\
✅ New features, bug fixes users will notice, performance improvements\
❌ Dependency updates, internal refactoring, test improvements

**Tell a story**\
✅ Problems solved, challenges overcome, decisions made\
❌ Generic announcements without context

**Spark conversation**\
✅ Relatable developer challenges, controversial decisions, surprising results\
❌ Routine updates with no hook

<Warning>
  If there's no meaningful GitHub activity in your lookback window, Notra won't force a post. Quality over consistency - only share when you have something worth saying.
</Warning>

### Posting Frequency

Recommended cadence by platform:

| Platform | Frequency     | Reasoning                                   |
| -------- | ------------- | ------------------------------------------- |
| LinkedIn | 1-2x per week | Algorithm rewards consistent, quality posts |
| Twitter  | 3-7x per week | Higher volume platform, faster feed         |

### Topic Selection

Notra automatically focuses on:

1. **Feature launches**: New capabilities users can try
2. **Problem-solving**: Technical challenges overcome
3. **Performance wins**: Measurable improvements
4. **Architecture decisions**: Interesting technical choices
5. **Developer experience**: Tools, workflows, and productivity

Avoids:

* Internal maintenance work
* Dependency updates
* Test improvements
* Documentation fixes
* Minor refactoring

## Editing Social Posts

Use Notra's AI editor to refine generated posts:

### Adjust the Hook

"Make the opening more surprising"\
"Start with a specific problem statement"\
"Add a contrarian take to the hook"

### Change the Focus

"Focus more on the performance impact"\
"Shift emphasis to developer experience"\
"Highlight the technical challenge we solved"

### Refine the Tone

"Make this more conversational"\
"Add more technical depth"\
"Simplify the language"

### Improve Engagement

"Add a question at the end"\
"Make the takeaway more actionable"\
"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

Don't try to cover everything that happened. 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

Start with what changed for users, then explain how if relevant.

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

### Use Specific Numbers

Vague claims don't resonate. Specific metrics do.

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

### End with Engagement

Most LinkedIn posts should end with:

* A question that prompts responses
* An invitation to share experiences
* A bold statement that sparks discussion

**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. Authenticity beats arbitrary schedules.

## Common Pitfalls to Avoid

### Don't Changelog-Dump

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

✅ "We shipped cache component support with actionable error guidance."

### Don't Over-Promote

❌ "Our amazing new feature is revolutionary and game-changing!"

✅ "Solved a problem that's frustrated developers for years."

### Don't Use Corporate Speak

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

✅ "We built a thing that makes auth calls in cached contexts actually work."

### Don't Ignore Engagement

Social media is a conversation, not a broadcast. When people comment:

* Respond thoughtfully
* Continue the discussion
* Ask follow-up questions

<Note>
  Notra generates the post content, but building relationships requires your authentic engagement in the comments.
</Note>

## Tracking Performance

While Notra doesn't track social metrics directly, monitor:

**Engagement rate**: Likes + comments + shares ÷ followers\
Target: 3-5% on LinkedIn, 1-3% on Twitter

**Comment quality**: Are people asking questions? Sharing experiences?\
Target: Thoughtful responses, not just emoji reactions

**Click-through** (if linking): Are people clicking to learn more?\
Target: 2-5% CTR on LinkedIn

**Follower growth**: Are you attracting the right audience?\
Target: 5-10% monthly growth

## Twitter Posts

Twitter post generation supports:

* 280-character single tweets for quick updates
* Automatic reformatting of LinkedIn posts for Twitter

## Advanced Configuration

### Multiple Posting Schedules

Create different schedules for different content types:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
[
  {
    "name": "Weekly Feature Highlights",
    "outputType": "linkedin_post",
    "lookbackWindow": "last_7_days",
    "sourceConfig": {
      "cron": { "frequency": "weekly", "dayOfWeek": 1, "hour": 9 }
    }
  },
  {
    "name": "Monthly Deep Dive",
    "outputType": "linkedin_post",
    "lookbackWindow": "last_30_days",
    "sourceConfig": {
      "cron": { "frequency": "monthly", "dayOfMonth": 1, "hour": 10 }
    }
  }
]
```

### Repository Filtering

Generate posts from specific repositories:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "targets": {
    "repositoryIds": ["frontend-repo-id"] // Only public-facing work
  }
}
```

### Custom Tone Instructions

Override default tone with custom instructions:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "outputConfig": {
    "customInstructions": "Always include a technical detail developers will find interesting. End with a question about best practices."
  }
}
```

<Tip>
  Find your repository IDs in **Integrations** → **GitHub** → View repository details.
</Tip>
