Skip to main content
Notra publishes the CLI on npm as notra, and it installs a notra binary that wraps the public API through the official TypeScript SDK so you can script your workspace. It covers posts, brand identities, integrations, schedules and all of GEO: projects, prompts, competitors, scans, visibility, content briefs, agent readiness and AI traffic. Source: github.com/usenotra/notra-cli.

Install

You can also run any command without installing using npx notra <command> or bunx notra <command>. Verify the install:

Authentication

There are two ways to authenticate. Use the browser login when a person is at the keyboard, and an API key when the CLI runs unattended.
This starts an OAuth device authorization flow, in which the CLI prints a short verification code, opens the Notra sign-in page in your browser and waits until you approve the code. The CLI saves access and refresh tokens to the local config file and refreshes them on its own, so you never copy tokens by hand. The session acts as you, inside the organization you pick during sign-in. Notra checks every request against the permissions attached to that session, the same way it checks API requests against key scopes.
On a remote machine or inside a container, use notra auth login --no-browser to print the verification URL instead of opening a browser.
For scripts that drive the login themselves, notra auth login --json streams newline-delimited JSON with one object per line. The first is a pending event with the verification URL and code, followed by either a ready event or an error event. Sign out and remove the stored tokens:

Use an API key (headless and CI)

An API key bypasses the login entirely. Create one under API Keys in the dashboard with the scopes the job needs (see Authentication), then pass it in one of three ways:
notra init does the same thing interactively, prompting for the key or accepting --api-key directly.
A key only carries the scopes you selected when you created it, so commands that need a scope the key does not have fail with exit code 3.

Configuration

The local config file lives at the OS-standard config path, which on macOS is ~/Library/Preferences/notra-cli-nodejs/config.json, and the CLI creates it with owner-only permissions.
The config keys are api-key and base-url, and environment variables override stored values:

Output

Commands print formatted tables in a terminal and switch to JSON when you redirect or pipe stdout, but explicit output flags override that choice. --json always prints JSON, and notra posts get <postId> --markdown always prints Markdown.

Quickstart

Run notra <topic> --help to see every command and flag for a topic.

Posts

List with filters

--status and --content-type accept comma-separated lists, and --sort is asc or desc by creation date.

Generate content

--content-type is one of changelog, blog_post, linkedin_post or twitter_post. --lookback is one of current_day, yesterday, last_7_days, last_14_days or last_30_days. --github-integration and --linear-integration are repeatable. --wait polls until the job finishes (--poll-interval seconds, --timeout-mins minutes), and if you drop it you get the jobId back immediately and can check later with notra posts status <jobId> --watch.

Update content

--status is draft or published.

Delete

Brand identities

Generate from a website

Update settings

The tone options are Conversational, Professional, Casual and Formal, or you can pass --custom-tone for a free-text tone instead. --company-name and --company-description accept an empty string to clear the value.

Integrations

Connect a repository

--branch defaults to the repository’s default branch, and you only need a token for private repositories that do not have the Notra GitHub App installed.

Schedules

Manage the cron-based schedules described in Scheduled Automation.

Create a schedule

For weekly schedules, pass --day-of-week (0-6, Sunday is 0), and for monthly schedules, pass --day-of-month (1-31). --output-type is one of changelog, blog_post, linkedin_post or twitter_post. The CLI can’t create image schedules yet, so create those in the dashboard or through POST /v1/schedules. --repository is repeatable, and you can add --brand-voice <brandIdentityId> to pin a brand identity and --auto-publish to publish changelogs and blog posts instead of saving drafts. All times are in UTC.

From a JSON file

The JSON body matches the POST /v1/schedules request shape. When you set --config-file, the CLI ignores all other flags.

GEO

GEO commands work on a single project, so run notra geo projects list first to find the project ID and pass it as the first argument to the other commands. Project-scoped commands need a plan that includes GEO. Examples:
Scans, sequence runs and content briefs use billed AI credits. notra geo traffic token and rotate-token print secrets only with --show-token, so treat that output as a secret.

Global flags

These flags work on every command: Destructive commands (delete, remove, rotate-token) ask for confirmation unless you pass -y or --yes.

Exit codes

Source

The CLI is open source at github.com/usenotra/notra-cli, where you can report issues.
Last modified on October 8, 2026