원클릭으로
otter-fetch
Fetch Otter.ai transcript data. Sub-skill used by cache-notes and fill-participants when Notes: contains an Otter URL.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Fetch Otter.ai transcript data. Sub-skill used by cache-notes and fill-participants when Notes: contains an Otter URL.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Fetch & embed AI transcripts as Obsidian callouts. Args: <path>, all, refresh <path>. Prompts for URLs if empty.
Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.
Resolve and fill Participants frontmatter + link unlinked names in body. Args: <path>, all.
Extract action items as plain markdown bullets (with confirmation). Args: <path>. No args = run [/note-status pending --step=todos](../note-status/SKILL.md#pending-mode).
Show when you last had a 1:1 with each direct report / peer, sorted by recency. Flags people who haven't had one in N weeks. Powered by the OneOnOnes view on Meetings.base.
Gmail AI transcript notifications → meeting Notes: URLs + mark read. Args: (none). Invoked standalone or as step 1 of /meeting wrap.
| name | otter-fetch |
| description | Fetch Otter.ai transcript data. Sub-skill used by cache-notes and fill-participants when Notes: contains an Otter URL. |
| license | MIT |
Single place for obtaining Otter.ai transcript data. No direct slash command — other skills invoke this when they encounter an Otter.ai URL (e.g. in Notes: frontmatter).
This skill has no slash command. It's a sub-skill: /cache-notes and /fill-participants invoke its workflow (and run parse_otter.js) when a meeting's Notes: contains an https://otter.ai/u/... URL.
https://otter.ai/u/{otid} in Notes: — need callout markdown to embed.Otter has no public API. Use user-pasted JSON:
otid from the URL: https://otter.ai/u/aBcDeFgHiJkLmNoPqRsT → otid = aBcDeFgHiJkLmNoPqRsT.GET https://otter.ai/forward/api/v1/speech?otid={otid} (e.g. from DevTools → Network while signed in, or from a signed-in request).The pasted JSON has speech with:
| Use case | What to use | How |
|---|---|---|
| cache-notes | Callout markdown | Run parse_otter.js with JSON on stdin → stdout is ## 🤖 AI Notes / ### Otter block with [!otter_notes]-, [!otter_todos]-, [!otter_transcript]-. |
| fill-participants | Speaker names | From speech.speakers: array of { speaker_name }. Use those names with people-resolver to build Participants:. |
So one paste can serve both skills if needed (e.g. cache-notes runs the script; fill-participants reads speech.speakers from the same JSON or from the cached transcript callout).
In this folder: parse_otter.js reads the full Otter speech JSON from stdin and writes callout markdown to stdout (for cache-notes).
node .agents/skills/otter-fetch/parse_otter.js < pasted.json
Output is the exact block to append under ## 🤖 AI Notes (including ### Otter and the three callouts). Caller appends it to the note and sets NotesCached:.
otid from the share URL (query params like ?utm_source=copy_url can be ignored).speech?otid=... request.