agentleFS
ciberjohnciberjohn/Hermes-Skills/transcribe/SKILL.md

transcribe

Skill17 starsChanged 2 months agoMITView on GitHub

Transcribe audio (Dropbox links, uploaded files, URLs, local paths) with CrisperWhisper running locally, and commit each transcript to a private GitHub repo — one dated folder per transcription.

  • Installs packages
  • Commits and pushes

47 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use spreadsheet, think and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • JetBrainsSkill

    spreadsheet

    Use when tasks involve creating, editing, analyzing, or formatting spreadsheets (`.xlsx`, `.csv`, `.tsv`) with formula-aware workflows, cached recalculation, and visual review.

    Also in 3 projects that use this

  • vltingSkill

    think

    Lightweight plan-to-execution pipeline. Explores codebase, runs council deliberation, presents plan for approval, then executes via /run.

    Also in 3 projects that use this

  • robzolkosSkill

    done

    Reset the working directory for the next task by ensuring no uncommitted changes exist, then switching to the main branch and pulling latest.

    Also in 3 projects that use this

  • JaimeGBASkill

    ingest

    Digest an external source (article, paper, transcript, URL, book chapter) and integrate its content into the knowledge base

    Also in 3 projects that use this

  • AnthropicSkill

    onboarding

    Generate an onboarding checklist and first-week plan for a new hire. Use when someone has a start date coming up, building the pre-start task list (accounts, equipment, buddy), scheduling Day 1 and Week 1, or setting 30/60/90-day goals for a new team member.

    Also in 3 projects that use this

  • MicrosoftSkill

    diagnose

    Use to systematically diagnose why scenarios fail — identifies root causes by analyzing agent traces, codebase, and behavioral patterns

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 40 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use when the user gives you an audio file or link (Dropbox shared link, direct URL, uploaded file, local path) and wants it transcribed.

    line 15
  2. Very specific:

    Never use --backend transformers on a CPU-only box except as a compatibility check — it will make the user wait hours for a podcast.

    line 76
  3. Distinctive:

    Do NOT block the chat.

    line 82

“Common” is measured: kept by at least 6 in 10 of the 40 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Transcribe — Audio → Transcripts → GitHub

Use when the user gives you an audio file or link (Dropbox shared link, direct URL, uploaded file, local path) and wants it transcribed. Produces two transcripts per audio — verbatim.txt (word-for-word, fillers included) and intended.txt (clean, readable) — and commits each into its own dated folder in a private GitHub repo, then pushes.

Configuration Variables

Set these at install time (the natural-language install prompt asks for them):

VariableRequiredDescriptionExample
{{TRANSCRIBE_VENV_PATH}}YesAbsolute path to the CrisperWhisper Python virtual environment~/.venvs/crisperwhisper
{{TRANSCRIBE_SCRIPT_PATH}}YesAbsolute path to the driver script~/.hermes/skills/media/transcribe/scripts/transcribe.py
{{TRANSCRIPTS_REPO_PATH}}YesLocal checkout of the private transcripts GitHub repo~/transcripts
{{TRANSCRIPTS_REPO_URL}}YesGit remote URL of that repohttps://github.com/<your-user>/transcripts.git
{{TRANSCRIBE_MODEL}}NoDefault Whisper model size (small/medium/turbo/large)medium

Prerequisites

ComponentNotes
Python 3.10+ venvcrisperwhisper[all] installed (torch, transformers, ctranslate2 fork)
ffmpegRequired for audio decode (mp3/m4a/ogg/wav). Debian/Ubuntu: sudo apt-get install -y ffmpeg; macOS: brew install ffmpeg
Private GitHub repoThe transcripts output repo; needs a local clone and git push access
Model cacheFirst run downloads the Whisper model (~1.5 GB for medium) from HuggingFace and converts it once for the ct2 backend; cached afterwards

Procedure

1. Get the audio locally

Any of these work; pass the source string straight to the script:

  • Dropbox shared link — the script auto-converts www.dropbox.com/s/... → dl.dropboxusercontent.com and appends ?dl=1 for a direct download. Works with ?dl=0 links too.
  • Direct URL (http/https) — downloaded with a browser User-Agent.
  • Uploaded file — Hermes desktop uploads land somewhere local; pass the path.
  • Local path — pass as-is.

2. Run the transcription

"{{TRANSCRIBE_VENV_PATH}}/bin/python" "{{TRANSCRIBE_SCRIPT_PATH}}" "<SOURCE>" --out "{{TRANSCRIPTS_REPO_PATH}}" [OPTIONS]

Defaults: --model {{TRANSCRIBE_MODEL}} (CPU tradeoff), language auto-detect, both verbatim + intended.

OptionEffect
--model small|medium|turbo|largeSize/quality tradeoff. medium is the CPU sweet spot.
--language pt|en|...Force ISO language; omit for auto-detect.
--wordsAlso write words.tsv with per-word timestamps.
--srtAlso write intended.srt subtitles.
--backend auto|ct2|transformersauto prefers ct2 (verified ~50× faster than transformers on CPU). See backend notes below.

Backend reality check (measured 2026-08-02, medium model, 10.6 s audio, 6-core EPYC CPU, no GPU):

BackendModel loadDecode 10.6 s audioVerdict
ct2 (int8)~26 s (first run includes one-time HF→CT2 conversion)~10 s (≈ realtime, RTF ≈ 1.0)Default
transformers (torch)~30 s>9 min (RTF > 50×), abortedUnusable on CPU

Never use --backend transformers on a CPU-only box except as a compatibility check — it will make the user wait hours for a podcast.

Long audio: with ct2, transcription is roughly realtime (1 h audio ≈ 1 h CPU, single transcription; medium, int8). Still worth running in background with notify_on_complete=true for anything over ~15 min, and tell the user the ETA. Do NOT block the chat.

3. Verify output

The script prints OUTDIR:<path> and the word counts. Check:

ls -la "{{TRANSCRIPTS_REPO_PATH}}/<YYYY-MM-DD>_<slug>/"

Expect: verbatim.txt, intended.txt, meta.json (+ words.tsv / intended.srt if requested). Spot-check both texts — if a transcript is empty or obviously wrong, rerun with --language <code> explicitly (auto-detect occasionally fails on short clips).

4. Commit and push

cd "{{TRANSCRIPTS_REPO_PATH}}"
git add <YYYY-MM-DD>_<slug>/
git commit -m "transcribe: <slug> (<lang>, <model>, <duration>s)"
git push

Never commit the original audio — GitHub caps files at 100 MB and repos stay lean without LFS. The source is recorded in meta.json; the downloaded audio lives in the ephemeral work dir (/tmp/transcribe-work/) — if the user wants it kept, copy it to an audio archive folder before cleaning up.

5. Report

Give the user:

  • The folder path (local) and the GitHub URL: {{TRANSCRIPTS_REPO_URL}}/tree/main/<folder>
  • Language detected, model/backend used, audio duration vs transcription time
  • A 1–2 line sample of each mode so they can see the verbatim/intended difference

Pitfalls

  • Hermes profile HOME isolation — Under a Hermes profile, ~ may resolve to the profile's sandbox home (e.g. ~/.hermes/profiles/<profile>/home/), so the HF model cache and any path built from ~ land in odd places. Always use absolute paths for the venv, script, and repo (the {{VAR}} values). The model only downloads once and is reused.
  • First run is slow — downloads the model (~1.5 GB for medium) from HuggingFace, and the ct2 backend converts HF→CT2 once. Subsequent runs skip both. Don't panic if the first run takes several minutes before "model loaded".
  • transformers 5.x tokenizer failure — crisperwhisper 2.0.1 was built for transformers 4.x. If you see OSError: Can't load tokenizer for 'nyralabs/...', it's usually an interrupted first download (re-run fixes it). If it persists, pin transformers<5 in the venv: pip install "transformers<5".
  • No GPU — on a CPU-only box, large will be slow and may OOM with word timestamps; stick to medium unless the user asks otherwise.
  • ct2 float16 on CPU fails — ValueError: Requested float16 compute type... The ct2 backend defaults to compute_type="float16", which needs a GPU. The script forces compute_type="int8" when the backend is ct2; don't remove that.
  • First ct2 run converts the model — HF→CT2 conversion of medium on CPU takes ~10–15 min once; cached afterwards. The transformers backend has no conversion step but is slower per-decode.
  • Unauthenticated HF downloads — fine but slower; don't block on rate limits, just retry.
  • Empty transcript on silence — by design (both backends decode with begin-of-sequence suppression disabled). If the audio is genuinely silent, that's the correct output.
  • Dropbox links with & in the URL — quote the source argument in the shell.

Verification checklist

  • verbatim.txt and intended.txt non-empty, language looks right
  • meta.json has source, duration, model, backend, language
  • git status clean after push; git log --oneline -1 shows the new commit
  • User can open the GitHub link (private repo — their account only)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.