Claude-code-plugins-plus assemblyai-upgrade-migration
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/assemblyai-pack/skills/assemblyai-upgrade-migration" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-assemblyai-upgrade-migration && rm -rf "$T"
manifest:
plugins/saas-packs/assemblyai-pack/skills/assemblyai-upgrade-migration/SKILL.mdsource content
AssemblyAI Upgrade & Migration
Overview
Guide for upgrading the
assemblyai npm package and migrating between SDK versions, including the major v3 to v4 migration and speech model transitions.
Prerequisites
- Current
package installedassemblyai - Git for version control
- Test suite available
Instructions
Step 1: Check Current Version
# Check installed version npm list assemblyai # Check latest available version npm view assemblyai version # See what changed npm view assemblyai --json | jq '.versions[-5:]'
Step 2: Review Changelog
# View release notes open https://github.com/AssemblyAI/assemblyai-node-sdk/releases # Or check from CLI gh release list --repo AssemblyAI/assemblyai-node-sdk --limit 10
Step 3: Create Upgrade Branch
git checkout -b upgrade/assemblyai-sdk-v$(npm view assemblyai version) npm install assemblyai@latest npm test
Step 4: Major Migration — Old SDK to Current (v4.x)
If migrating from
@assemblyai/sdk (old package) to assemblyai (current):
// BEFORE (old package — @assemblyai/sdk) import { AssemblyAI as OldClient } from '@assemblyai/sdk'; const client = new OldClient({ apiKey: '...' }); // AFTER (current package — assemblyai) import { AssemblyAI } from 'assemblyai'; const client = new AssemblyAI({ apiKey: '...' });
# Remove old package, install new npm uninstall @assemblyai/sdk npm install assemblyai
Key changes in the migration:
Old () | New () |
|---|---|
| |
| (blocks until done) |
Manual polling with | auto-polls, for manual control |
class | |
| |
Step 5: Transcription Method Changes
// v3 pattern: create + poll loop const job = await client.transcripts.create({ audio_url: url }); let transcript; while (true) { transcript = await client.transcripts.get(job.id); if (transcript.status === 'completed' || transcript.status === 'error') break; await new Promise(r => setTimeout(r, 3000)); } // v4 pattern: transcribe() handles everything const transcript = await client.transcripts.transcribe({ audio: url, // Note: 'audio' not 'audio_url' }); // v4 pattern: submit() for webhook-based (no polling) const submitted = await client.transcripts.submit({ audio: url, webhook_url: 'https://your-app.com/webhook', });
Step 6: Streaming Migration
// v3 pattern: RealtimeTranscriber class import { RealtimeTranscriber } from 'assemblyai'; const rt = new RealtimeTranscriber({ apiKey: '...' }); rt.on('transcript', (msg) => { /* ... */ }); await rt.connect(); // v4 pattern: client.streaming.createService() const transcriber = client.streaming.createService({ speech_model: 'nova-3', sample_rate: 16000, }); transcriber.on('transcript', (msg) => { /* ... */ }); await transcriber.connect();
Step 7: Speech Model Migration
// Switch from legacy models to Universal-3 const transcript = await client.transcripts.transcribe({ audio: audioUrl, speech_model: 'best', // Uses Universal-3 (highest accuracy) // Other options: 'nano' (fastest, lowest cost) // Note: 'best' supports word_boost (up to 1000 terms) }); // For streaming: nova-3 or nova-3-pro const transcriber = client.streaming.createService({ speech_model: 'nova-3-pro', // Most accurate streaming model sample_rate: 16000, });
Step 8: Verify After Upgrade
import { AssemblyAI } from 'assemblyai'; async function verifyUpgrade() { const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY! }); // Test async transcription const transcript = await client.transcripts.transcribe({ audio: 'https://storage.googleapis.com/aai-web-samples/5_common_sports_702.wav', }); console.assert(transcript.status === 'completed', 'Transcription should complete'); console.assert(transcript.text && transcript.text.length > 0, 'Should have text'); // Test LeMUR const { response } = await client.lemur.task({ transcript_ids: [transcript.id], prompt: 'What is this about? Reply in one sentence.', }); console.assert(response.length > 0, 'LeMUR should respond'); // Test transcript listing const page = await client.transcripts.list({ limit: 1 }); console.assert(page.transcripts.length > 0, 'Should list transcripts'); console.log('All checks passed.'); } verifyUpgrade().catch(console.error);
Output
- Updated
package to latest versionassemblyai - Migrated import paths and method calls
- Updated streaming setup to current patterns
- Verified all API endpoints work post-upgrade
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Old package name | |
| API changed in v4 | Use or |
not recognized | Parameter renamed | Use instead of |
| Streaming not connecting | API changed | Use |
| TypeScript errors | Type definitions changed | Update imports to match new types |
Resources
Next Steps
For CI integration during upgrades, see
assemblyai-ci-integration.