Skip to main content
This guide walks you through setting up Notra, connecting GitHub, configuring your brand voice, and generating your first piece of content.
Before you begin: You’ll need a GitHub account with access to at least one repository. Notra works best with repositories that have recent pull request activity.

Step 1: Create Your Organization

After signing up for Notra, you’ll be prompted to create your organization workspace.
1

Set Organization Details

Enter your organization name (e.g., “Acme Inc”) and a URL-friendly slug (e.g., “acme-inc”). The slug will be used in your workspace URL: app.usenotra.com/acme-inc
// Organization is created via the auth client
await authClient.organization.create({
  name: "Acme Inc",
  slug: "acme-inc",
  websiteUrl: "https://example.com"
});
2

Optional: Add Your Website

If you provide your website URL (e.g., “example.com”), Notra can automatically extract your brand identity, tone, and company description to help generate on-brand content.
3

Access Your Dashboard

Once created, you’ll be redirected to your organization dashboard at /{slug} where you can manage integrations, content, and automation.
The organization slug cannot be changed after creation, so choose something that represents your company or team.

Step 2: Connect Your First GitHub Integration

Notra generates content from GitHub activity like merged pull requests, releases, and commits.
1

Navigate to Integrations

From your dashboard, go to Integrations in the sidebar. You’ll see a list of available integrations including GitHub, Linear, and Slack.
2

Click Connect on GitHub

Click the Connect button on the GitHub integration card. This will open a dialog where you can add a repository.
Notra supports both public and private repositories. For private repositories, you’ll need to provide a GitHub personal access token.
3

Add Repository URL or Owner/Repo

Enter your repository information in one of these formats:
  • Full URL: https://github.com/usenotra/notra
  • Owner/Repo: usenotra/notra
Notra will automatically detect if the repository is public or private.
4

Add Access Token for Private Repos

If you’re connecting a private repository, you’ll need to provide a GitHub personal access token with repo scope.
  1. Go to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
  2. Click Generate new token (classic)
  3. Give it a descriptive name like “Notra Integration”
  4. Select the repo scope for full repository access
  5. Click Generate token and copy the token
  6. Paste the token into the Notra integration dialog
5

Configure Branch and Outputs

  • Select the default branch (usually main or master)
  • Choose which content types to enable:
    • Changelog - Technical release notes
    • Blog Post - Feature announcements
    • Twitter Post - Social media updates
    • LinkedIn Post - Professional network updates
{
  "outputs": {
    "changelog": { "enabled": true },
    "blog_post": { "enabled": true },
    "twitter_post": { "enabled": true },
    "linkedin_post": { "enabled": false }
  }
}
6

Save Integration

Click Add Integration to save. Your GitHub repository is now connected and ready to generate content.
For private repositories, keep your GitHub token secure. Notra stores it encrypted and only uses it to access repository data for content generation.

Step 3: Configure Your Brand Voice

Tell Notra how to write in your unique voice so all generated content matches your brand.
1

Navigate to Brand Identity

From your dashboard sidebar, click BrandIdentity.
2

Auto-Extract Brand Information (Optional)

If you provided your website URL during organization setup, Notra can automatically analyze your website to extract:
  • Company description
  • Brand tone and style
  • Target audience
  • Writing guidelines
Click Analyze to start the automated brand extraction. This takes about 30-60 seconds.
Notra scrapes your website homepage and key pages, then uses AI to extract brand information through a multi-step process:
  1. Scraping - Fetch website content
  2. Extracting - AI analyzes tone, style, and messaging
  3. Saving - Store brand profile for content generation
3

Review and Customize Company Profile

Edit the auto-extracted information or manually enter:
  • Company Name - Your product or company name
  • Website - Your company website
  • Description - A brief overview of what your company does
4

Set Tone & Language

Choose your content tone:Preset Tone Profiles:
  • Conversational - Friendly, approachable, casual
  • Professional - Polished, formal, business-focused
  • Casual - Relaxed, informal, personable
  • Formal - Traditional, serious, authoritative
Or use Custom Tone:
  • Define your own tone guidelines (e.g., “Technical but accessible, enthusiastic about developer experience”)
Custom Instructions:
  • Add specific rules for content generation (e.g., “Always mention ‘developers’ instead of ‘users’”, “Avoid marketing jargon”)
5

Define Your Target Audience

Describe who you’re writing for:
  • Their role (developers, product managers, executives)
  • Their pain points and interests
  • What matters to them
Example: “Software engineers and DevOps teams who value automation, reliability, and clear technical documentation”
6

Save Changes

Changes are auto-saved as you type. You’ll see a success toast when your brand settings are updated.
You can re-analyze your website anytime by clicking the refresh icon next to the Company Profile heading. This is useful if you’ve updated your website branding.

Step 4: Generate Your First Content

Now that you’ve connected GitHub and configured your brand, you’re ready to generate content from your repository activity.
Create a workflow that runs automatically on a schedule.
1

Navigate to Automation → Schedules

From your dashboard sidebar, click AutomationSchedules.
2

Create New Schedule

Click New Schedule to open the schedule configuration dialog.
3

Configure Schedule Settings

  • Name: Give your schedule a descriptive name (e.g., “Weekly Changelog”)
  • Frequency: Choose Daily, Weekly, or Monthly
  • Time: Set the time in UTC when the schedule should run
  • Day: For weekly schedules, choose the day of the week
Example weekly schedule:
{
  "frequency": "weekly",
  "dayOfWeek": 5,  // Friday
  "hour": 17,       // 5 PM
  "minute": 0       // :00
}
4

Select Repository

Choose which GitHub integration(s) to analyze for content generation.
5

Choose Output Type

Select the content type to generate:
  • Changelog
  • Blog Post
  • Twitter Post
  • LinkedIn Post
  • Investor Update
6

Set Lookback Window

Choose how far back to analyze activity:
  • 24 hours - Daily updates
  • 7 days - Weekly summaries
  • 30 days - Monthly roundups
7

Save and Enable

Click Create Schedule. Your workflow is now active and will run automatically at the specified time.
8

Run Now (Optional)

Click the ••• menu on your schedule and select Run now to test content generation immediately without waiting for the scheduled time.

Step 5: View and Edit Generated Content

Once content is generated (either from a schedule running or an event trigger), it will appear in your Content dashboard.
1

Navigate to Content

Click Content in the dashboard sidebar to see all generated posts.
2

Browse Content

Content is organized by date with the most recent posts first. You can:
  • Switch between Grid view and Table view
  • Filter by content type (Changelog, Blog Post, etc.)
  • See post status (Draft or Published)
3

Open a Post

Click on any content card to open the full editor with:
  • Markdown editor with live preview
  • AI chat assistant to refine content
  • Source metadata showing which PRs/issues were analyzed
4

Edit Content

You can:
  • Directly edit the markdown
  • Use the AI assistant to rewrite sections
  • Adjust the title
  • Change content type
5

Publish

When ready, change the status from Draft to Published. The content is now marked as finalized.
All generated content starts as a Draft so you can review and refine before marking it as published.

What’s Next?

Set Up More Integrations

Connect Linear and Slack to pull activity from more sources

Create Advanced Workflows

Build sophisticated automation with multiple triggers and outputs

Understand the Pipeline

Learn how Notra analyzes activity and generates content

Use the API

Access content programmatically and build custom integrations

Example Workflows

Goal: Automatically generate a changelog every Friday summarizing the week’s work.Setup:
  1. Go to Automation → Schedules
  2. Create a schedule named “Weekly Engineering Update”
  3. Set frequency to Weekly, day to Friday, time to 5:00 PM UTC
  4. Select all your GitHub integrations as targets
  5. Choose Changelog as output type
  6. Set lookback window to 7 days
  7. Save and enable
Result: Every Friday at 5 PM, Notra generates a changelog from the week’s merged PRs and commits.
Goal: When you publish a GitHub release, automatically generate a blog post and social media updates.Setup:
  1. Go to Automation → Events
  2. Create 3 separate event triggers:
    • Trigger 1: Output type Blog Post
    • Trigger 2: Output type Twitter Post
    • Trigger 3: Output type LinkedIn Post
  3. For each trigger:
    • Source: GitHub webhook
    • Event type: Release Published
    • Target: Your main repository
  4. Save all three triggers
Result: When you publish a release on GitHub, Notra generates a blog post draft and social media posts for review.
Goal: Generate a monthly summary of product progress for investors and stakeholders.Setup:
  1. Go to Automation → Schedules
  2. Create a schedule named “Monthly Investor Update”
  3. Set frequency to Monthly, day to 1 (first of month), time to 9:00 AM UTC
  4. Select all repositories as targets
  5. Choose Investor Update as output type
  6. Set lookback window to 30 days
  7. Save and enable
Result: On the first of every month, Notra generates a high-level summary of the previous month’s achievements, features shipped, and progress metrics.

Troubleshooting

  • Make sure your GitHub token has the repo scope
  • Verify the repository owner and name are correct
  • Check that the token hasn’t expired
  • For organization repositories, ensure your token has access to the organization
  • Verify your schedule or event trigger is enabled (not paused)
  • Check that your GitHub integration has recent activity (merged PRs, commits)
  • Ensure the lookback window includes the period when activity occurred
  • Review the integration’s enabled output types match your trigger’s output type
  • Go to Brand → Identity and review your settings
  • Add more specific custom instructions
  • Use the custom tone field to provide detailed voice guidelines
  • Describe your target audience more specifically
  • If you provided a website, try re-analyzing it to refresh brand data
  • Schedules run in UTC timezone - convert your local time to UTC
  • Check the schedule status - make sure it’s Active, not Paused
  • View the schedule details to confirm the day/time settings are correct

Need More Help?

Visit our GitHub repository for additional documentation, examples, and community support

Build docs developers (and LLMs) love