Install
openclaw skills install @yoyostudio209/uusscribe-asr-skillTranscribe audio files and YouTube videos
openclaw skills install @yoyostudio209/uusscribe-asr-skillCreate transcription tasks through the UUScribe API. Keep the core instructions agent-neutral; platform-specific metadata belongs in agents/.
ffprobe.UUSCRIBE_API_KEY from the environment. Do not ask the user to paste it into chat or a command argument, and never print it.UUSCRIBE_API_BASE only when the user explicitly specifies a self-hosted or development environment.ffprobe to determine the actual duration of local audio; do not guess. If the user provides an accurate duration in seconds, use --duration.Resolve scripts/transcribe.py to an absolute path relative to this file, then run:
python3 /absolute/path/to/uusscribe-asr-skill/scripts/transcribe.py "/path/to/meeting.mp3"
python3 /absolute/path/to/uusscribe-asr-skill/scripts/transcribe.py "https://www.youtube.com/watch?v=VIDEO_ID"
For long audio or a limited agent runtime, prefer the resumable two-step flow. Submit the task and save the task_id from the JSON receipt, then resume polling by ID:
python3 /absolute/path/to/uusscribe-asr-skill/scripts/transcribe.py "/path/to/meeting.mp3" --submit-only --quiet
python3 /absolute/path/to/uusscribe-asr-skill/scripts/transcribe.py --task-id TASK_ID --quiet
Common options:
--name "Meeting notes" # Optional task name
--format json # Default; preserves timestamps, speakers, summaries, and other structure
--format text # Plain transcript only
--output /path/result # Also write the result to this file
--timeout 7200 # Maximum polling time in seconds; timeout does not cancel the remote task
--duration 123 # Accurate duration in seconds supplied by the user when ffprobe is unavailable
--submit-only # Submit and print a task receipt that can be saved
--task-id 123 # Resume polling an existing task to avoid duplicate submissions and charges
--quiet # Keep stdout machine-readable
The script uploads local audio in parts with pacing and creates a remote task directly for YouTube. It then polls either task until finished or failed. Safe signing, part PUT, and polling requests retry with backoff after transient network errors, 429, or 5xx; requests that may create a task are never retried automatically. Do not download YouTube content separately with yt-dlp.
segments in the JSON result. start and end are in milliseconds. Check speaker_labels_present and the coverage counts first; report missing labels clearly and do not guess speakers.pending because its actual duration exceeds the available allowance, the script reports the required and available seconds; the remote task remains in place.401: invalid API key; 403: account permission or daily allowance limit; 422: unsupported file, URL, or parameter; 429: concurrency or rate limit. Follow the server's actual message and never invent a successful result.429 or 5xx may retry with backoff within the overall timeout.