{
  "schemaVersion": "1.0",
  "item": {
    "slug": "assemblyai-transcribe",
    "name": "AssemblyAI advanced speech transcription",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/tristanmanchester/assemblyai-transcribe",
    "canonicalUrl": "https://clawhub.ai/tristanmanchester/assemblyai-transcribe",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/assemblyai-transcribe",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=assemblyai-transcribe",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "assemblyai.mjs",
      "references/workflows.md",
      "references/llm-gateway.md",
      "references/capabilities.md",
      "references/troubleshooting.md",
      "references/speaker-mapping.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/assemblyai-transcribe"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/assemblyai-transcribe",
    "agentPageUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent",
    "manifestUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "AssemblyAI transcription, Speech Understanding, and agent-friendly exports",
        "body": "Use this skill when the user wants AssemblyAI rather than generic transcription, or when the job benefits from AssemblyAI-specific capabilities such as:\n\nmodel routing across universal-3-pro and universal-2\nlanguage detection and code switching\ndiarisation plus speaker name / role mapping\ntranslation, custom formatting, or AssemblyAI speaker identification\nsubtitles, paragraphs, sentences, topic / entity / sentiment tasks\ntranscript output that is easy for other agents to consume as Markdown or normalised JSON\n\nThe skill is designed for AI agents like OpenClaw, not just end users. It provides:\n\nA no-dependency Node CLI in scripts/assemblyai.mjs (and a compatibility wrapper at assemblyai.mjs)\nBundled model/language knowledge via models and languages commands\nStable transcript output formats\n\nagent-friendly Markdown\nnormalised agent JSON\nbundle manifests for downstream automation\n\n\nSpeaker mapping workflows\n\nmanual speaker/channel maps\nAssemblyAI speaker identification\nmerged display names in both Markdown and JSON\n\n\nAssemblyAI LLM Gateway integration for structured extraction from transcripts"
      },
      {
        "title": "1) Decide whether the user needs AssemblyAI-specific behaviour",
        "body": "If they just want “a transcript”, a generic solution may be enough. Reach for this skill when the user mentions AssemblyAI, wants a specific AssemblyAI feature, or needs the richer outputs and post-processing this skill provides."
      },
      {
        "title": "2) Pick the best entry point",
        "body": "New transcription → transcribe\nExisting transcript id → get or wait\nRe-render existing saved JSON → format\nPost-process an existing transcript → understand\nRun transcript text through LLM Gateway → llm\nNeed a quick capability lookup before deciding → models or languages"
      },
      {
        "title": "3) Prefer the agent-friendly defaults",
        "body": "For most unknown-language or mixed-language jobs, prefer:\n\nnode {baseDir}/assemblyai.mjs transcribe INPUT   --bundle-dir ./assemblyai-out   --all-exports\n\nWhy:\n\nthe CLI defaults to auto-best routing when models are not specified\nit writes a manifest + multiple files that agents can inspect without reparsing terminal output\nMarkdown and agent JSON become available immediately for follow-on steps"
      },
      {
        "title": "Best general default",
        "body": "Use this when the source language is unknown or could be outside the 6-language Universal-3-Pro set:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --bundle-dir ./out   --all-exports\n\nThis defaults to model routing plus language detection unless the request already specifies a model or language."
      },
      {
        "title": "Best known-language accuracy",
        "body": "If the language is known and supported by Universal-3-Pro, prefer an explicit request:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speech-model universal-3-pro   --language-code en_us   --bundle-dir ./out"
      },
      {
        "title": "Meeting / interview with speaker labels",
        "body": "node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --bundle-dir ./out"
      },
      {
        "title": "Add explicit speaker names or roles",
        "body": "Manual mapping:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --speaker-map @assets/speaker-map.example.json   --bundle-dir ./out\n\nAssemblyAI speaker identification:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --speaker-type role   --known-speakers \"host,guest\"   --bundle-dir ./out\n\nOr post-process an existing transcript:\n\nnode {baseDir}/assemblyai.mjs understand TRANSCRIPT_ID   --speaker-type name   --speaker-profiles @assets/speaker-profiles-name.example.json   --bundle-dir ./out"
      },
      {
        "title": "Translation",
        "body": "node {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --translate-to de,fr   --match-original-utterance   --bundle-dir ./out"
      },
      {
        "title": "Structured extraction through LLM Gateway",
        "body": "node {baseDir}/assemblyai.mjs llm TRANSCRIPT_ID   --prompt @assets/example-prompt.txt   --schema @assets/llm-json-schema.example.json   --out ./summary.json"
      },
      {
        "title": "transcribe",
        "body": "Use for local files or remote URLs.\n\nLocal files are uploaded first.\nPublic URLs are sent directly to AssemblyAI.\nWaits by default, then renders output.\n\nPrefer --bundle-dir for anything longer than a trivial clip."
      },
      {
        "title": "get / wait",
        "body": "Use when you already have the transcript id. wait blocks until completion; get fetches immediately unless you add --wait."
      },
      {
        "title": "format",
        "body": "Use when you already saved:\n\nraw transcript JSON from AssemblyAI, or\nthe normalised agent JSON produced by this skill\n\nThis is useful when you want to apply a new speaker map, re-render Markdown, or generate a fresh bundle without retranscribing."
      },
      {
        "title": "understand",
        "body": "Use when you need AssemblyAI Speech Understanding on an existing transcript:\n\ntranslation\nspeaker identification\ncustom formatting\n\nThis command fetches the transcript, merges in the returned understanding results, then renders updated Markdown / agent JSON / bundle outputs."
      },
      {
        "title": "llm",
        "body": "Use when the user wants:\n\nsummaries\nextraction\nstructured JSON\ndownstream reasoning over the transcript\n\nPrefer --schema when the next step is automated."
      },
      {
        "title": "Best default for agents: bundle mode",
        "body": "--bundle-dir writes a directory containing:\n\nMarkdown transcript\nagent JSON\nraw JSON\noptional paragraphs / sentences / subtitles\na machine-readable manifest\n\nThis is usually better than dumping everything to stdout."
      },
      {
        "title": "Primary output kinds",
        "body": "Use --export to choose the main output:\n\nmarkdown (default)\nagent-json\njson / raw-json\ntext\nparagraphs\nsentences\nsrt\nvtt\nmanifest"
      },
      {
        "title": "Sidecar outputs",
        "body": "You can request extra files directly with:\n\n--markdown-out\n--agent-json-out\n--raw-json-out\n--paragraphs-out\n--sentences-out\n--srt-out\n--vtt-out\n--understanding-json-out"
      },
      {
        "title": "Speaker mapping rules",
        "body": "Speaker display names are merged in this order:\n\nmanual --speaker-map\nAssemblyAI speaker identification mapping\nfallback generic names like Speaker A or Channel 1\n\nThis means you can let AssemblyAI identify speakers first, then still override individual display names later.\n\nExample manual map file: assets/speaker-map.example.json"
      },
      {
        "title": "Model and language lookup",
        "body": "Before choosing parameters, inspect the bundled reference data:\n\nnode {baseDir}/assemblyai.mjs models\nnode {baseDir}/assemblyai.mjs models --format json\nnode {baseDir}/assemblyai.mjs languages --model universal-3-pro\nnode {baseDir}/assemblyai.mjs languages --model universal-2 --codes --format json\n\nThe bundled data lives in:\n\nassets/model-capabilities.json\nassets/language-codes.json"
      },
      {
        "title": "Important operating notes",
        "body": "Keep API keys out of chat logs; use environment injection.\nUse the EU AssemblyAI base URL when the user explicitly needs EU processing.\nUploads and transcript creation must use API keys from the same AssemblyAI project.\nPrefer --bundle-dir or --out for long outputs.\nThe CLI is non-interactive and sends diagnostics to stderr, which makes it easier for agents to script reliably.\nUse raw --config or --request when you need a newly added AssemblyAI parameter that this skill has not exposed yet."
      },
      {
        "title": "Reference files",
        "body": "Read these when you need more depth:\n\nCapabilities\nWorkflows and recipes\nOutput formats\nSpeaker mapping\nLLM Gateway notes\nTroubleshooting"
      },
      {
        "title": "Key bundled files",
        "body": "assemblyai.mjs — root wrapper for compatibility with the original skill\nscripts/assemblyai.mjs — main CLI\nassets/speaker-map.example.json\nassets/speaker-profiles-name.example.json\nassets/speaker-profiles-role.example.json\nassets/custom-spelling.example.json\nassets/llm-json-schema.example.json\nassets/transcript-agent-json-schema.json"
      },
      {
        "title": "Sanity checks before finishing a task",
        "body": "Did you pick the right region (api.assemblyai.com vs api.eu.assemblyai.com)?\nDid you choose a model strategy that matches the language situation?\nIf speaker naming matters, did you enable diarisation and/or provide a speaker map?\nIf the result will feed another agent, did you produce Markdown and/or agent JSON rather than only raw stdout?\nIf the transcript will be machine-consumed, did you keep the manifest or explicit output filenames?"
      }
    ],
    "body": "AssemblyAI transcription, Speech Understanding, and agent-friendly exports\n\nUse this skill when the user wants AssemblyAI rather than generic transcription, or when the job benefits from AssemblyAI-specific capabilities such as:\n\nmodel routing across universal-3-pro and universal-2\nlanguage detection and code switching\ndiarisation plus speaker name / role mapping\ntranslation, custom formatting, or AssemblyAI speaker identification\nsubtitles, paragraphs, sentences, topic / entity / sentiment tasks\ntranscript output that is easy for other agents to consume as Markdown or normalised JSON\n\nThe skill is designed for AI agents like OpenClaw, not just end users. It provides:\n\nA no-dependency Node CLI in scripts/assemblyai.mjs (and a compatibility wrapper at assemblyai.mjs)\nBundled model/language knowledge via models and languages commands\nStable transcript output formats\nagent-friendly Markdown\nnormalised agent JSON\nbundle manifests for downstream automation\nSpeaker mapping workflows\nmanual speaker/channel maps\nAssemblyAI speaker identification\nmerged display names in both Markdown and JSON\nAssemblyAI LLM Gateway integration for structured extraction from transcripts\nUse this skill in this order\n1) Decide whether the user needs AssemblyAI-specific behaviour\n\nIf they just want “a transcript”, a generic solution may be enough. Reach for this skill when the user mentions AssemblyAI, wants a specific AssemblyAI feature, or needs the richer outputs and post-processing this skill provides.\n\n2) Pick the best entry point\nNew transcription → transcribe\nExisting transcript id → get or wait\nRe-render existing saved JSON → format\nPost-process an existing transcript → understand\nRun transcript text through LLM Gateway → llm\nNeed a quick capability lookup before deciding → models or languages\n3) Prefer the agent-friendly defaults\n\nFor most unknown-language or mixed-language jobs, prefer:\n\nnode {baseDir}/assemblyai.mjs transcribe INPUT   --bundle-dir ./assemblyai-out   --all-exports\n\n\nWhy:\n\nthe CLI defaults to auto-best routing when models are not specified\nit writes a manifest + multiple files that agents can inspect without reparsing terminal output\nMarkdown and agent JSON become available immediately for follow-on steps\nQuick-start recipes\nBest general default\n\nUse this when the source language is unknown or could be outside the 6-language Universal-3-Pro set:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --bundle-dir ./out   --all-exports\n\n\nThis defaults to model routing plus language detection unless the request already specifies a model or language.\n\nBest known-language accuracy\n\nIf the language is known and supported by Universal-3-Pro, prefer an explicit request:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speech-model universal-3-pro   --language-code en_us   --bundle-dir ./out\n\nMeeting / interview with speaker labels\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --bundle-dir ./out\n\nAdd explicit speaker names or roles\n\nManual mapping:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --speaker-map @assets/speaker-map.example.json   --bundle-dir ./out\n\n\nAssemblyAI speaker identification:\n\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --speaker-labels   --speaker-type role   --known-speakers \"host,guest\"   --bundle-dir ./out\n\n\nOr post-process an existing transcript:\n\nnode {baseDir}/assemblyai.mjs understand TRANSCRIPT_ID   --speaker-type name   --speaker-profiles @assets/speaker-profiles-name.example.json   --bundle-dir ./out\n\nTranslation\nnode {baseDir}/assemblyai.mjs transcribe ./meeting.mp3   --translate-to de,fr   --match-original-utterance   --bundle-dir ./out\n\nStructured extraction through LLM Gateway\nnode {baseDir}/assemblyai.mjs llm TRANSCRIPT_ID   --prompt @assets/example-prompt.txt   --schema @assets/llm-json-schema.example.json   --out ./summary.json\n\nCommand guidance\ntranscribe\n\nUse for local files or remote URLs.\n\nLocal files are uploaded first.\nPublic URLs are sent directly to AssemblyAI.\nWaits by default, then renders output.\n\nPrefer --bundle-dir for anything longer than a trivial clip.\n\nget / wait\n\nUse when you already have the transcript id. wait blocks until completion; get fetches immediately unless you add --wait.\n\nformat\n\nUse when you already saved:\n\nraw transcript JSON from AssemblyAI, or\nthe normalised agent JSON produced by this skill\n\nThis is useful when you want to apply a new speaker map, re-render Markdown, or generate a fresh bundle without retranscribing.\n\nunderstand\n\nUse when you need AssemblyAI Speech Understanding on an existing transcript:\n\ntranslation\nspeaker identification\ncustom formatting\n\nThis command fetches the transcript, merges in the returned understanding results, then renders updated Markdown / agent JSON / bundle outputs.\n\nllm\n\nUse when the user wants:\n\nsummaries\nextraction\nstructured JSON\ndownstream reasoning over the transcript\n\nPrefer --schema when the next step is automated.\n\nOutput strategy\nBest default for agents: bundle mode\n\n--bundle-dir writes a directory containing:\n\nMarkdown transcript\nagent JSON\nraw JSON\noptional paragraphs / sentences / subtitles\na machine-readable manifest\n\nThis is usually better than dumping everything to stdout.\n\nPrimary output kinds\n\nUse --export to choose the main output:\n\nmarkdown (default)\nagent-json\njson / raw-json\ntext\nparagraphs\nsentences\nsrt\nvtt\nmanifest\nSidecar outputs\n\nYou can request extra files directly with:\n\n--markdown-out\n--agent-json-out\n--raw-json-out\n--paragraphs-out\n--sentences-out\n--srt-out\n--vtt-out\n--understanding-json-out\nSpeaker mapping rules\n\nSpeaker display names are merged in this order:\n\nmanual --speaker-map\nAssemblyAI speaker identification mapping\nfallback generic names like Speaker A or Channel 1\n\nThis means you can let AssemblyAI identify speakers first, then still override individual display names later.\n\nExample manual map file: assets/speaker-map.example.json\n\nModel and language lookup\n\nBefore choosing parameters, inspect the bundled reference data:\n\nnode {baseDir}/assemblyai.mjs models\nnode {baseDir}/assemblyai.mjs models --format json\nnode {baseDir}/assemblyai.mjs languages --model universal-3-pro\nnode {baseDir}/assemblyai.mjs languages --model universal-2 --codes --format json\n\n\nThe bundled data lives in:\n\nassets/model-capabilities.json\nassets/language-codes.json\nImportant operating notes\nKeep API keys out of chat logs; use environment injection.\nUse the EU AssemblyAI base URL when the user explicitly needs EU processing.\nUploads and transcript creation must use API keys from the same AssemblyAI project.\nPrefer --bundle-dir or --out for long outputs.\nThe CLI is non-interactive and sends diagnostics to stderr, which makes it easier for agents to script reliably.\nUse raw --config or --request when you need a newly added AssemblyAI parameter that this skill has not exposed yet.\nReference files\n\nRead these when you need more depth:\n\nCapabilities\nWorkflows and recipes\nOutput formats\nSpeaker mapping\nLLM Gateway notes\nTroubleshooting\nKey bundled files\nassemblyai.mjs — root wrapper for compatibility with the original skill\nscripts/assemblyai.mjs — main CLI\nassets/speaker-map.example.json\nassets/speaker-profiles-name.example.json\nassets/speaker-profiles-role.example.json\nassets/custom-spelling.example.json\nassets/llm-json-schema.example.json\nassets/transcript-agent-json-schema.json\nSanity checks before finishing a task\nDid you pick the right region (api.assemblyai.com vs api.eu.assemblyai.com)?\nDid you choose a model strategy that matches the language situation?\nIf speaker naming matters, did you enable diarisation and/or provide a speaker map?\nIf the result will feed another agent, did you produce Markdown and/or agent JSON rather than only raw stdout?\nIf the transcript will be machine-consumed, did you keep the manifest or explicit output filenames?"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tristanmanchester/assemblyai-transcribe",
    "publisherUrl": "https://clawhub.ai/tristanmanchester/assemblyai-transcribe",
    "owner": "tristanmanchester",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/assemblyai-transcribe",
    "downloadUrl": "https://openagent3.xyz/downloads/assemblyai-transcribe",
    "agentUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent",
    "manifestUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/assemblyai-transcribe/agent.md"
  }
}