Skill: kirkraman/jx-asr (version 1.0.0)

# ASR (Automatic Speech Recognition) Skill Fast, accurate automatic speech-to-text transcription powered by SkillBoss API Hub. ## Why use this skill? - **Multilingual:** Supports 100 languages with auto-detection. - **Flexible Input:** Transcribe from a URL or a local file. - **Agent-Ready:** Designed for high-volume, automated pipelines. - **Unified API:** Powered by SkillBoss API Hub — single key, single endpoint. ## Setup ### 1. Get an API Key Sign up at [skillbossai.com](https://skillbossai.com) to obtain your `SKILLBOSS_API_KEY`. ### 2. Configure Authentication This skill looks for your API key in the `SKILLBOSS_API_KEY` environment variable. Add this to your `.env` or agent config: ```bash SKILLBOSS_API_KEY=your_key_here ``` ## Usage ### TL;DR for Agents When this skill is installed, you can transcribe any URL or local file by running: `./skills/asr/scripts/asr.sh transcribe --url "https://example.com/audio.mp3"` ### Transcribe a URL ```bash # Basic transcription ./skills/asr/scripts/asr.sh transcribe --url "https://example.com/audio.mp3" # With language hint ./skills/asr/scripts/asr.sh transcribe --url "https://example.com/audio.mp3" --language "en" ``` ### Transcribe a Local File ```bash # Upload and transcribe local media ./skills/asr/scripts/asr.sh transcribe --file "./local-audio.wav" ``` ### Supported Options - `--language <code>`: ISO language code (e.g., 'en', 'es') ### Output Returns a JSON response. The transcription text is in: ``` .result.text ``` If the `SKILLBOSS_API_KEY` is missing, the tool will provide a clear error message.

path: CHANGELOG.md
content: # Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.2.0] - 2026-02-01

### Added

- Add `publish.sh` script for publishing the skill to ClawHub

### Fixed

- Ensure the script is executable by publishing it with OpenClaw

## [1.1.0] - 2026-02-01

### Changed

- Update `SKILL.md` based on feedback from an OpenClaw agent

### Fixed

- Make `asr.sh` executable

## [1.0.0] - 2026-02-01

### Added

- Main functionality for the Speech is Cheap ASR skill


path: README.md
content: # ASR: SkillBoss API Hub Speech Recognition

ClawHub skill for transcribing audio via SkillBoss API Hub


path: manifest.json
content: {
  "author": "SkillBoss API Hub (https://heybossai.com)",
  "categories": [
    "ai",
    "media",
    "utility"
  ],
  "commands": {
    "asr": "scripts/asr.sh"
  },
  "description": "ASR skill for transcribing audio via SkillBoss API Hub",
  "env": [
    "SKILLBOSS_API_KEY"
  ],
  "homepage": "https://heybossai.com",
  "keywords": [
    "asr",
    "audio",
    "automatic-speech-recognition",
    "canary",
    "parakeet",
    "speech-to-text",
    "stt",
    "transcribe",
    "transcription",
    "whisper"
  ],
  "license": "MIT",
  "name": "asr",
  "repository": "https://github.com/speechischeap/clawhub-asr",
  "version": "1.2.0"
}


path: scripts/asr.sh
content: #!/usr/bin/env bash

# ASR CLI Wrapper powered by SkillBoss API Hub
# STT endpoint: https://api.heybossai.com/v1/pilot

API_BASE="https://api.heybossai.com/v1"

# 1. Check for API Key
if [ -z "$SKILLBOSS_API_KEY" ]; then
    echo "Error: SKILLBOSS_API_KEY environment variable is not set."
    echo "--------------------------------------------------------"
    echo "To use this skill, you need a SkillBoss API key."
    echo "1. Sign up at: https://heybossai.com"
    echo "2. Copy your key."
    echo "3. Run: export SKILLBOSS_API_KEY='your_key_here'"
    echo "--------------------------------------------------------"
    exit 1
fi

COMMAND=$1
shift

case "$COMMAND" in
    transcribe)
        URL=""
        FILE=""
        LANGUAGE=""

        while [[ "$#" -gt 0 ]]; do
            case $1 in
                --url) URL="$2"; shift ;;
                --file) FILE="$2"; shift ;;
                --language) LANGUAGE="$2"; shift ;;
                --speakers|--words|--labels|--stream|--private|--confidence|--format|--webhook|--segment-duration)
                    shift ;;
                *) echo "Unknown parameter: $1"; exit 1 ;;
            esac
            shift
        done

        TMPFILE=$(mktemp /tmp/asr_audio_XXXXXX)
        TMPREQ=$(mktemp /tmp/asr_req_XXXXXX.json)

        if [ -n "$URL" ]; then
            FILENAME=$(basename "$URL" | cut -d'?' -f1)
            curl -sL "$URL" -o "$TMPFILE"
        elif [ -n "$FILE" ]; then
            FILENAME=$(basename "$FILE")
            cp "$FILE" "$TMPFILE"
        else
            echo "Usage: asr transcribe --url <url> OR --file <path>"
            rm -f "$TMPFILE" "$TMPREQ"
            exit 1
        fi

        AUDIO_B64=$(base64 "$TMPFILE" | tr -d '\n')
        rm -f "$TMPFILE"

        cat > "$TMPREQ" <<EOF
{
  "type": "stt",
  "inputs": {
    "audio_data": "$AUDIO_B64",
    "filename": "$FILENAME",
    "language": "$LANGUAGE"
  },
  "prefer": "balanced"
}
EOF

        curl -s -X POST "$API_BASE/pilot" \
            -H "Authorization: Bearer $SKILLBOSS_API_KEY" \
            -H "Content-Type: application/json" \
            -d @"$TMPREQ"

        rm -f "$TMPREQ"
        ;;

    status)
        echo "Note: SkillBoss API Hub STT is synchronous — no job tracking needed."
        echo "Transcription results are returned immediately from the transcribe command."
        ;;

    help|*)
        echo "ASR Skill powered by SkillBoss API Hub"
        echo "Usage:"
        echo "  asr transcribe --url <url> [--language <code>]"
        echo "  asr transcribe --file <path> [--language <code>]"
        echo ""
        echo "  Options:"
        echo "    --language <code>      Set language (e.g., 'en', 'fr')"
        echo ""
        echo "Response: JSON with transcription text at .result.text"
        ;;
esac


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)