jeremylongshore/claude-code-plugins-plus-skills
deepgram-pack
plugins/saas-packs/deepgram-pack/skills/deepgram-core-workflow-b/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/deepgram-pack/skills/deepgram-core-workflow-b/SKILL.md -a claude-code --skill deepgram-core-workflow-bInstallation paths:
.claude/skills/deepgram-core-workflow-b/# Deepgram Core Workflow B: Real-time Streaming
## Overview
Implement real-time streaming transcription using Deepgram's WebSocket API for live audio processing.
## Prerequisites
- Completed `deepgram-install-auth` setup
- Understanding of WebSocket patterns
- Audio input source (microphone or stream)
## Instructions
### Step 1: Set Up WebSocket Connection
Initialize a live transcription connection with Deepgram.
### Step 2: Configure Stream Options
Set up interim results, endpointing, and language options.
### Step 3: Handle Events
Implement handlers for transcript events and connection lifecycle.
### Step 4: Stream Audio Data
Send audio chunks to the WebSocket connection.
## Output
- Live transcription WebSocket client
- Event handlers for real-time results
- Audio streaming pipeline
- Graceful connection management
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| Connection Closed | Network interruption | Implement auto-reconnect |
| Buffer Overflow | Too much audio data | Reduce sample rate or chunk size |
| No Transcripts | Silent audio | Check audio levels and format |
| High Latency | Network/processing delay | Use interim results |
## Examples
### TypeScript WebSocket Client
```typescript
// services/live-transcription.ts
import { createClient, LiveTranscriptionEvents } from '@deepgram/sdk';
export interface LiveTranscriptionOptions {
model?: 'nova-2' | 'nova' | 'enhanced' | 'base';
language?: string;
punctuate?: boolean;
interimResults?: boolean;
endpointing?: number;
vadEvents?: boolean;
}
export class LiveTranscriptionService {
private client;
private connection: any = null;
constructor(apiKey: string) {
this.client = createClient(apiKey);
}
async start(
options: LiveTranscriptionOptions = {},
handlers: {
onTranscript?: (transcript: string, isFinal: boolean) => void;
onError?: (error: Error) => void;
onClose?: () => void;
} = {}
): Promise<void> {
thi