# Wavecap Search

> Search WaveCap transcriptions with text queries and filters. Use when the user wants to find specific transcriptions, search for keywords, or query transcription history.

- Skill: `majiayu000/wavecap-search` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/wavecap-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/wavecap-search/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/wavecap-search

---


# WaveCap Search Skill

Use this skill to search through transcription history in WaveCap.

## Search Transcriptions for a Stream

### Basic Search

```bash
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?search=fire&limit=20" | jq
```

### Search Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `search` | string | - | Text to search for in transcriptions |
| `limit` | int | 100 | Maximum results to return |
| `before` | ISO8601 | - | Get transcriptions before this timestamp |
| `after` | ISO8601 | - | Get transcriptions after this timestamp |
| `order` | string | desc | Sort order: `asc` or `desc` |

### Search with Time Range

```bash
# Search in the last hour
AFTER=$(date -u -v-1H +"%Y-%m-%dT%H:%M:%SZ")
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?search=emergency&after=$AFTER" | jq
```

```bash
# Search within a specific date range
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?search=incident&after=2025-01-15T00:00:00Z&before=2025-01-16T00:00:00Z" | jq
```

### Pagination

The response includes pagination hints:

```json
{
  "transcriptions": [...],
  "hasMoreBefore": true,
  "hasMoreAfter": false
}
```

To get the next page:
```bash
# Get the timestamp of the last result, then use it as 'before'
LAST_TIMESTAMP="2025-01-15T12:30:00Z"
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?before=$LAST_TIMESTAMP&limit=20" | jq
```

## Search Across All Streams

To search across all streams, first get the stream list, then query each:

```bash
# Get all stream IDs
STREAMS=$(curl -s "http://localhost:8000/api/streams?includeTranscriptions=false" | jq -r '.[].id')

# Search each stream
for STREAM_ID in $STREAMS; do
  echo "=== Stream: $STREAM_ID ==="
  curl -s "http://localhost:8000/api/streams/$STREAM_ID/transcriptions?search=YOUR_QUERY&limit=5" | jq '.transcriptions[] | {timestamp, text}'
done
```

## Format Search Results

### Show just text and timestamps
```bash
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?search=fire" | \
  jq '.transcriptions[] | "\(.timestamp): \(.text)"' -r
```

### Show with confidence scores
```bash
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?search=ambulance" | \
  jq '.transcriptions[] | {time: .timestamp, text, confidence: (.confidence * 100 | floor | tostring + "%")}'
```

### Filter by confidence threshold
```bash
curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?limit=50" | \
  jq '[.transcriptions[] | select(.confidence > 0.8)] | length'
```

## Transcription Fields

Each transcription contains:
```json
{
  "id": "uuid",
  "streamId": "stream-id",
  "text": "transcribed text",
  "timestamp": "2025-01-15T12:30:00Z",
  "confidence": 0.95,
  "duration": 30.5,
  "segments": [...],
  "recordingUrl": "/recordings/file.wav",
  "reviewStatus": "pending",
  "correctedText": null,
  "alerts": [...]
}
```

## Tips

- The search is case-insensitive
- Use `order=asc` to get oldest results first (useful for timeline analysis)
- Combine `after` and `before` for precise time windows
- Large result sets should use pagination to avoid timeouts

