Loom transcript fetch
Loom's transcript file sits behind a SIGNED CloudFront URL, so the plain
cdn.loom.com/.../transcription/<id>.json returns "Missing Key-Pair-Id". The
trick: render the share page in a real browser, capture the signed transcription
request from the network log, then fetch the full transcript JSON from it.
Use it
./loom-to-kb.sh "https://www.loom.com/share/<32-hex-id>" [output-dir]
Prints the path to a clean .md (title + Loom's auto-summary + chapters + the
FULL transcript). Default output dir: ~/clawd/knowledge/loom-transcripts.
How it works (if you need to adapt it)
agent-browser network requests --clearthenagent-browser open <url>— the browser fetches the signed transcript on load.agent-browser network requests --filter transcription→ grab the signedhttps://cdn.loom.com/mediametadata/transcription/<id>-N.json?Policy=...&Signature=...URL.curlthat signed URL → JSON withphrases[], each{ts, value}. Join thevaluefields (NOTtext— that key is empty) for the full transcript.- Title from
agent-browser eval "document.title". Summary/chapters fromagent-browser read.
Dependencies
agent-browser(fleet default browser CLI) — required.python3,curl.
Then ingest into a KB
# fleet shared KB (our own knowledge):
curl -s http://127.0.0.1:8765/cognify/ingest -H 'content-type: application/json' \
-d "{\"tenant\":\"fleet\",\"namespace\":\"loom-calls\",\"title\":\"<title>\",\"text\":\"<md>\"}"
# a client bot's isolated memory: cognify --tenant <client> ingest <file.md>
Gotcha: signed URLs are time-limited (~minutes) — fetch immediately after capture. Loom's transcript panel is virtualized, so reading the DOM only gets a partial; always use the signed-URL path for the full transcript.