pocket-transcripts
SafeSpeech & Transcription
Read transcripts and summaries from Pocket AI (heypocket.com) recording devices.
SKILL.md
# Pocket Transcripts
Read transcripts and summaries from Pocket AI devices via reverse-engineered API.
## Quick Reference
| Function | Description |
|----------|-------------|
| `get_recordings(days, limit)` | List recent recordings |
| `get_recording_full(id)` | Get transcript + summary + action items |
| `get_transcript(id)` | Get raw transcript text |
| `get_summarization(id)` | Get markdown summary |
| `search_recordings(query)` | Search by text |
## Setup (One-Time)
### 1. Start Chrome with User Profile
```bash
~/.factory/skills/browser/start.js --profile
# or
~/.claude/skills/browser/start.js --profile
```
### 2. Log into Pocket
Navigate to and log in:
```bash
~/.factory/skills/browser/nav.js https://app.heypocket.com
```
### 3. Extract Token
```bash
python3 scripts/reader.py extract
```
Token is saved to `~/.pocket_token.json` and expires in 1 hour.
## Usage
### List Recordings
```python
from pathlib import Path
import sys
sys.path.insert(0, str(Path.home() / '.claude/skills/pocket-transcripts/scripts'))
from reader import get_recordings, get_recording_full
recordings = get_recordings(days=30, limit=20)
for r in recordings:
print(f"{r.recorded_at:%Y-%m-%d} | {r.duration_str} | {r.title}")
```
### Get Full Transcript and Summary
```python
full = get_recording_full(recording_id)
print(f"Transcript ({len(full['transcript'])} chars):")
print(full['transcript'][:500])
print(f"\nSummary (markdown):")
print(full['summary'])
print(f"\nAction Items: {len(full['action_items'])}")
for item in full['action_items']:
print(f" - {item}")
```
### Search Recordings
```python
results = search_recordings("meeting", days=90)
for r in results:
print(f"{r.title} - {r.description[:100]}")
```
## API Details
**Base URL**: `https://production.heypocketai.com/api/v1`
**Auth**: Firebase Bearer token from browser IndexedDB
**Key Endpoints**:
- `GET /recordings` - List with pagination, filters
- `GET /recordings/{id}?include=all` - Full data with transcript/summary
**Data Structure**:
- Transcript: `data.transcription.transcription.text`
- Summary: `data.summarizations[id].v2.summary.markdown`
- Action Items: `data.summarizations[id].v2.actionItems.items`
## Token Refresh
Firebase tokens expire in 1 hour. When expired:
1. Ensure Chrome is running with `--profile`
2. Confirm logged into app.heypocket.com
3. Re-run: `python3 scripts/reader.py extract`
## Data Model
### PocketRecording
- `id`, `title`, `description`
- `duration` (seconds), `duration_str` (human readable)
- `recorded_at`, `created_at`
- `has_transcription`, `has_summarization`
- `num_speakers`
- `latitude`, `longitude` (if location enabled)
- `tags` (list of strings)
### PocketSummarization
- `summary` (markdown formatted)
- `action_items` (list)
- `transcript` (raw text)