@hasna/skills 0.1.46 → 0.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -1
- package/bin/index.js +486 -182
- package/bin/mcp.js +311 -94
- package/dist/index.js +122 -59
- package/dist/lib/compact-output.d.ts +32 -0
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/skill-aliases.d.ts +1 -0
- package/dist/storage.js +28 -7
- package/package.json +2 -2
- package/skills/transcript/SKILL.md +53 -73
- package/skills/transcript/package.json +1 -1
- package/skills/apidocs/.claude/settings.json +0 -5
- package/skills/hook/bunfig.toml +0 -5
- package/skills/implementation/bunfig.toml +0 -5
|
@@ -1,100 +1,80 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: transcript
|
|
3
|
-
description: Transcribe audio
|
|
3
|
+
description: Transcribe audio, video, YouTube, Vimeo, and generic media URLs with iapp-transcriber or the hosted Skills runtime. Supports OpenAI GPT-4o transcription, OpenAI diarization, ElevenLabs Scribe v2, DeepGram, chunking, source metadata, subtitles, and JSON outputs.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Transcript
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Create transcripts from local audio/video files or media URLs. Use this skill when the user asks to transcribe, caption, diarize, summarize, or package spoken audio/video content.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## Choose The Runtime
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
- Use the hosted Skills runtime when the user explicitly runs `skills run transcript`, needs remote execution, or has only `SKILLS_API_KEY` configured.
|
|
13
|
+
- Use local `iapp-transcriber` when you are on this machine and need direct access to local files, YouTube/Vimeo/generic `yt-dlp` sources, transcript DB records, MCP tools, comments, exports, or OpenLoops follow-up workflows.
|
|
14
|
+
- The local command is `transcriber` when installed, or `bun run src/cli/index.ts` from `/home/hasna/Workspace/hasnaxyz/internalapp/iapp-transcriber`.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
- **Accuracy**: 96.7% for English (industry-leading)
|
|
16
|
-
- **Max file size**: 3GB / 10 hours
|
|
17
|
-
- **Features**: Speaker diarization (up to 32 speakers), word-level timestamps
|
|
18
|
-
- **Cost**: $0.40/hour
|
|
19
|
-
- **Best for**: Multi-speaker recordings, highest accuracy needs
|
|
16
|
+
## Hosted Usage
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- **Cost**: $0.006/min ($0.003/min with GPT-4o Mini)
|
|
26
|
-
- **Best for**: Standard transcription, good balance of cost and quality
|
|
18
|
+
```bash
|
|
19
|
+
skills run transcript --source ./meeting.mp3 --title "Design review" --provider openai
|
|
20
|
+
skills run transcribe --source https://www.youtube.com/watch?v=... --provider openai --diarize
|
|
21
|
+
```
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
- **Accuracy**: Very good
|
|
30
|
-
- **Max file size**: 2GB
|
|
31
|
-
- **Features**: Multimodal analysis, summarization capabilities
|
|
32
|
-
- **Cost**: ~$0.09-0.23/hour (generous free tier available)
|
|
33
|
-
- **Best for**: Cost-sensitive projects, multimodal needs
|
|
23
|
+
Poll hosted runs with `skills runs status <run-id>` and download outputs with `skills exports download <run-id>`.
|
|
34
24
|
|
|
35
|
-
## Usage
|
|
25
|
+
## Local Usage
|
|
36
26
|
|
|
37
|
-
### Basic Transcription
|
|
38
27
|
```bash
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
transcriber transcribe ./meeting.mp3 --provider openai --json
|
|
29
|
+
transcriber transcribe https://www.youtube.com/watch?v=... --provider openai --model gpt-4o-transcribe --json
|
|
30
|
+
transcriber transcribe ./meeting.mp3 --provider openai --diarize --json
|
|
31
|
+
transcriber export <transcript-id> --format srt --output captions.srt
|
|
42
32
|
```
|
|
43
33
|
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
bun run src/index.ts transcribe \
|
|
47
|
-
--provider elevenlabs \
|
|
48
|
-
--input ./meeting.mp3 \
|
|
49
|
-
--diarize \
|
|
50
|
-
--timestamps \
|
|
51
|
-
--format srt
|
|
52
|
-
```
|
|
34
|
+
Local provider defaults:
|
|
53
35
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
--provider gemini \
|
|
58
|
-
--input ./video.mp4 \
|
|
59
|
-
--format vtt \
|
|
60
|
-
--output ./captions.vtt
|
|
61
|
-
```
|
|
36
|
+
- `openai`: default, uses `gpt-4o-transcribe`; `--diarize` uses `gpt-4o-transcribe-diarize`.
|
|
37
|
+
- `elevenlabs`: uses `scribe_v2`, supports diarization and keyterms.
|
|
38
|
+
- `deepgram`: uses Nova-3, supports diarization.
|
|
62
39
|
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
bun run src/index.ts providers
|
|
66
|
-
```
|
|
40
|
+
Local requirements:
|
|
67
41
|
|
|
68
|
-
|
|
42
|
+
- A configured provider credential for the selected local provider.
|
|
43
|
+
- `yt-dlp` for remote media URLs. Set `YTDLP_PATH` if needed.
|
|
44
|
+
- `ffmpeg`/`ffprobe`; the local app bundles npm ffmpeg/ffprobe and also respects `FFMPEG_PATH` and `FFPROBE_PATH`.
|
|
69
45
|
|
|
70
|
-
|
|
71
|
-
|--------|-----------|-------------|
|
|
72
|
-
| text | .txt | Plain text transcript |
|
|
73
|
-
| srt | .srt | SubRip subtitle format |
|
|
74
|
-
| vtt | .vtt | WebVTT subtitle format |
|
|
75
|
-
| json | .json | Full structured data with metadata |
|
|
46
|
+
## Workflow
|
|
76
47
|
|
|
77
|
-
|
|
48
|
+
1. Inspect source metadata first for URLs:
|
|
78
49
|
|
|
79
|
-
|
|
50
|
+
```bash
|
|
51
|
+
transcriber info <url> --json
|
|
52
|
+
```
|
|
80
53
|
|
|
81
|
-
|
|
82
|
-
- **Chunking**: Files are split into 10-minute segments with overlap
|
|
83
|
-
- **Merging**: Results are intelligently merged to avoid duplicates
|
|
54
|
+
2. Download audio when the user asks to keep media:
|
|
84
55
|
|
|
85
|
-
|
|
56
|
+
```bash
|
|
57
|
+
transcriber download <url> --format mp3 --json
|
|
58
|
+
```
|
|
86
59
|
|
|
87
|
-
|
|
88
|
-
export SKILLS_API_KEY=your_skill_api_key
|
|
89
|
-
```
|
|
60
|
+
3. Transcribe with JSON for automation:
|
|
90
61
|
|
|
91
|
-
|
|
62
|
+
```bash
|
|
63
|
+
transcriber transcribe <path-or-url> --provider openai --json
|
|
64
|
+
```
|
|
92
65
|
|
|
93
|
-
|
|
94
|
-
- `ffmpeg` - Audio processing
|
|
95
|
-
- `ffprobe` - Duration detection
|
|
66
|
+
4. Export or post-process:
|
|
96
67
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
68
|
+
```bash
|
|
69
|
+
transcriber get <id> --json
|
|
70
|
+
transcriber export <id> --format txt --output transcript.txt
|
|
71
|
+
transcriber summarize <id>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
5. For repeat work, create OpenLoops command loops around JSON-producing commands, for example `transcriber feed check --json --dry-run`.
|
|
75
|
+
|
|
76
|
+
## Safety
|
|
77
|
+
|
|
78
|
+
- Only fetch URLs the user is authorized to process.
|
|
79
|
+
- The local app rejects private/local URL hosts by default; set `TRANSCRIBER_ALLOW_PRIVATE_URLS=1` only for trusted internal sources.
|
|
80
|
+
- Prefer `--json` for scripts and OpenLoops so failures include a structured transcript record and nonzero exit code.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "transcript",
|
|
3
3
|
"version": "1.0.0",
|
|
4
4
|
"private": true,
|
|
5
|
-
"description": "Audio/video transcription skill
|
|
5
|
+
"description": "Audio/video transcription skill backed by iapp-transcriber, OpenAI GPT-4o transcription, ElevenLabs Scribe v2, and hosted Skills runtime",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"skills": {
|
|
8
8
|
"runtime": "hosted",
|
package/skills/hook/bunfig.toml
DELETED