Sign In
O

Otter Transcription

@erickhchan
Visit Skill
Share:

otterai-cli skill: lets an AI agent list, search, download and manage your Otter.ai meeting transcripts with the unofficial otter CLI.

Security Reviewed

Instruction-only skill for an unofficial Otter.ai CLI that logs in with your password and only talks to otter.ai and S3.

Install Otter Transcription in Google Antigravity

Antigravity loads skills from .agents/skills/ in your project or ~/.gemini/config/skills/ for all projects (official docs). Full guide

EasiestOption 1: paste this to your Antigravity agent
Install the "Otter Transcription" skill for Google Antigravity.
Follow the steps at https://www.antigravityskills.org/install/otter-transcription.md (source: https://github.com/erickhchan/otterai-cli/tree/main/skills/otterai-cli).
Before running anything, show me what you will download and whether it includes scripts, and wait for my OK.
Install it into this project (.agents/skills/) unless I say global. When done, check that Antigravity lists it as an installed skill.

The agent reads the install file, shows you what it will download and waits for your OK.

Option 2: install it yourself
  1. 1. Clone the source repo
    git clone --depth 1 https://github.com/erickhchan/otterai-cli /tmp/otterai-cli

    Download the repository that contains the skill into a temporary folder.

  2. 2. Copy into this workspace (project skill)
    mkdir -p .agents/skills && cp -r /tmp/otterai-cli/skills/otterai-cli .agents/skills/otterai-cli

    Run this from your project root. Antigravity reads workspace skills from <project>/.agents/skills/<folder>/.

  3. 3. Or install globally (all projects)
    mkdir -p ~/.gemini/config/skills && cp -r /tmp/otterai-cli/skills/otterai-cli ~/.gemini/config/skills/otterai-cli

    Use this instead of the previous step if you want the skill in every workspace. Antigravity reads global skills from ~/.gemini/config/skills/<folder>/.

  4. 4. Check that Antigravity sees it

    Start a new Antigravity agent session in this workspace and ask "What skills do you have?" (in the Antigravity CLI you can also run /skills). The skill should be listed by its name.

Requires the otter CLI (uv tool install otterai-cli) and an Otter.ai login via otter login or OTTERAI_USERNAME / OTTERAI_PASSWORD. The otterai-cli README does not mention Antigravity by name; this is a plain folder copy into Antigravity's standard skill folders.

Using Claude Code, Cursor or Codex? See other assistants below.

What is Otter Transcription?

otterai-cli is an unofficial command-line tool plus a one-file agent skill that lets an AI agent list, search, download and organise your Otter.ai meeting transcripts; it is for people who already record meetings in Otter.ai and want an agent to pull notes into markdown or other workflows. What we counted at commit ee18cfc (the latest commit, 2026-06-10): the skill folder holds one file, SKILL.md (205 lines, 6,619 bytes); the otter CLI has 20 commands (8 for speeches, 3 each for auth, speakers and folders, 2 for config, 1 for groups) and 6 download formats (txt, pdf, md, docx, srt, mp3); it needs Python 3.10 or newer and 4 runtime dependencies (click, keyring, requests, requests_toolbelt); the repository has 28 tracked files, 1,836 lines of source and 4,405 lines of tests, and its pyproject marks it version 0.1.4, Development Status Beta. Markdown export is generated locally with YAML frontmatter: 10 default fields out of 16 available (SKILL.md). The README says the project is not affiliated with or endorsed by Otter.ai.

How to use Otter Transcription?

Install the CLI with uv tool install otterai-cli, sign in with otter login (or set OTTERAI_USERNAME and OTTERAI_PASSWORD), and copy skills/otterai-cli into your agent's skills folder. Then ask in plain words, for example "download last week's standup as markdown". The SKILL.md tells the agent to list recent speeches first to find the otid, because every command expects the otid and not the speech_id, and to prefer --json when it needs to parse output.

Key features of Otter Transcription

  • ✓List and filter speeches by days, folder (name or ID), page size and source (owned, shared or all)
  • ✓Get a full transcript with speaker segments as JSON, or search inside one transcript
  • ✓Download as txt, pdf, md, docx, srt or mp3; markdown is built locally with configurable YAML frontmatter
  • ✓Upload an audio file for transcription
  • ✓Rename, move (optionally creating the folder) and trash speeches
  • ✓Manage speakers, folders and groups

When to use Otter Transcription

  1. 1Pulling action items from a recent meeting
  2. 2Bulk-exporting Otter transcripts to markdown
  3. 3Organizing meetings into folders
  4. 4Feeding meeting notes into other agent workflows

Installation & Setup Guide

Agent Rules / Prompt Setup

Follow these steps (taken from the project's own docs) to configure Otter Transcription in your development environment.

Step 1: Install the CLIclaude
uv tool install otterai-cli

Makes the otter command available; then run otter login (README, Installation and Setup).

Step 2: Claude Code: copy the skill folderclaude
git clone --depth 1 https://github.com/erickhchan/otterai-cli /tmp/otterai-cli && mkdir -p ~/.claude/skills && cp -r /tmp/otterai-cli/skills/otterai-cli ~/.claude/skills/

The README says to copy skills/otterai-cli/ into your agent's skills folder and names Claude Code, Cursor, Copilot and Gemini CLI as compatible agents, but gives no path. The ~/.claude/skills/ path comes from the Claude Code skills docs (https://code.claude.com/docs/en/skills).

Step 3: Cursor: not documentedcursor

The README lists Cursor as a compatible agent but gives no Cursor folder or command, so we do not list one.

Usage Example & Verification

Prompt / Request Example
1) README example (Agent Workflow Example): "Find last week's standup and download its transcript as markdown."
-> What happens: the agent runs otter speeches list --days 7 --json, picks the otid of the standup with jq, then otter speeches download "$OTID" --format md --output standup.md and leaves a standup.md file.

2) README example (Agent Usage): search a meeting for "action items".
-> What happens: otter speeches search "action items" <otid> returns the matching transcript segments from that one meeting.

3) Our example: "Create a folder called Q1 Planning and move my last three meetings into it."
-> What happens: otter folders create "Q1 Planning" and otter speeches move ID1 ID2 ID3 --folder "Q1 Planning" (forms shown in SKILL.md). This changes your Otter account, so check the list first.
Installation Confirmation Method

Start a new session and ask "What skills do you have?" (Antigravity CLI: /skills); otterai-cli should be listed. Then run otter user in a terminal to confirm the CLI is logged in, and ask the agent "list my Otter meetings from the last 7 days".

Security Review

Static review
Reviewed Date
2026-10-13
Audited Ref / Commit
ee18cfc51a555f35e39ca88891d706c25eda10f0
Reviewer
antigravityskills.org (static code review)

Instruction-only skill for an unofficial Otter.ai CLI that logs in with your password and only talks to otter.ai and S3.

Full review: scope, findings, risks
Audit Scope:Static review at commit ee18cfc (HEAD, 2026-06-10): README.md, skills/otterai-cli/SKILL.md, pyproject.toml, src/otterai/client.py and config.py (network and credential handling), src/otterai/cli/speeches.py (trash confirmation), grep of all of src/ for subprocess, os.system, eval, exec and URLs, LICENSE. The test suite and GitHub workflows were not reviewed.
Key Findings:Skill folder is a single SKILL.md (instructions only). The CLI calls https://otter.ai/forward/api/v1/ and https://s3.us-west-2.amazonaws.com/ (src/otterai/client.py); no other URLs in src/. Credentials: environment variables first, then the OS keyring, then ~/.otterai/config.json written with chmod 0600. No subprocess, os.system, eval or exec in src/. Dependencies: click, keyring, requests, requests_toolbelt. speeches trash asks for confirmation unless --yes is given.
Identified Operational Risks & Permissions:Stores your Otter.ai password (keyring or JSON-file fallback). Unofficial API use may conflict with Otter.ai terms or break. Destructive commands (trash) are available to the agent. Static review only: we did not run the CLI.

Static review at commit ee18cfc. skills/otterai-cli/SKILL.md is documentation of otter commands with no executable code. The CLI in src/otterai/client.py sends requests to https://otter.ai/forward/api/v1/ with basic auth from your username and password and uses https://s3.us-west-2.amazonaws.com/ for uploads. src/otterai/config.py loads credentials from OTTERAI_USERNAME / OTTERAI_PASSWORD, then the OS keyring, then ~/.otterai/config.json, which it writes with 0600 permissions only if the keyring fails. A grep of src/ found no subprocess, os.system, eval or exec. The agent can run destructive commands such as otter speeches trash; the CLI asks for confirmation with click.confirm unless --yes is passed, and the skill documents --yes.

Operational Notes & Known Limitations

Known Limitations

  • •Unofficial: it uses Otter.ai's web API (otter.ai/forward/api/v1/), not a public API, so it can break without notice
  • •Needs your Otter.ai username and password (there is no API-token option); they are kept in the OS keychain, or in ~/.otterai/config.json (mode 0600) if the keychain is unavailable
  • •Needs Python 3.10 or newer and the otter CLI (uv tool install otterai-cli); the skill file alone does nothing
  • •Commands need the otid, not the speech_id; the SKILL.md and README examples call the argument SPEECH_ID, which is easy to mix up
  • •The README's agent workflow pipes get --json into jq '.transcripts[]', while its own schema example nests them under speech.transcripts, so check the JSON shape before you script it
  • •Write actions (trash, rename, move, upload) change your Otter account; trash asks for confirmation unless --yes is passed

Frequently Asked Questions

Is the Otter transcription skill safe?

In our static review of commit ee18cfc, the skill is one instructions-only file. The CLI it drives logs in with your Otter.ai email and password, stores them in the OS keychain (or ~/.otterai/config.json with 0600 permissions as a fallback), and only contacts otter.ai and an AWS S3 endpoint. src/ has no subprocess, os.system, eval or exec. It can trash, rename and move meetings, so review those actions.

How do I install the Otter skill in Antigravity?

Clone erickhchan/otterai-cli, copy skills/otterai-cli to .agents/skills/otterai-cli (project) or ~/.gemini/config/skills/otterai-cli (global), install the CLI with uv tool install otterai-cli, run otter login, then ask "What skills do you have?" (Antigravity CLI: /skills). The README does not mention Antigravity by name, so this uses Antigravity's standard skill folders.

Is this an official Otter.ai tool?

No. The README says it is not affiliated with or endorsed by Otter.ai / Aisense Inc. The README says it builds on gmchad/otterai-api by Chad Lohrli.

Can it export all my transcripts?

It can list speeches as JSON and download each one, so a loop over otter speeches list --json that calls otter speeches download --format md works. It only sees what your Otter account can see; use --source all to include shared meetings.

Supported Platforms

antigravityclaudecodex