计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
fireflies-transcript【效率与协作】Fetch raw Fireflies.ai meeting transcripts. Use only when the user explicitly invokes /fireflies-transcript; for YouTube, use youtube-transcript.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Fetch any meeting transcript from Fireflies.ai as raw text via GraphQL. Read-only.
The API key lives in a secure local env file (mode 600, never commit or print it):
source "$API_ENV_FILE" # exports API_KEY
[ -n "$API_KEY" ] || echo "MISSING KEY - stop and tell the user"
Every call is a POST to https://api.fireflies.ai/graphql with
Authorization: Bearer $API_KEY and a JSON body {"query": "..."}.
curl -sS -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{"query":"{ transcripts(limit: 25) { id title date duration } }"}' \
| jq -r '.data.transcripts[] | "\(.id) | \(.title) | \(.date)"'
date is epoch milliseconds. Convert on macOS: date -r $((1784127600000/1000)).transcripts(title:) filter is EXACT-match — it returns [] for partial names.
List recent meetings and grep locally instead.Untitled - Wed, 15 Jul 2026 17:00:55 CEST).
Identify those by date/time, then confirm via content or speakers, not the title.skip: (e.g. transcripts(limit: 50, skip: 25)).QUERY='{ transcript(id: "MEETING_ID") { title sentences { speaker_name text } } }'
curl -sS -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d "$(jq -nc --arg query "$QUERY" '{query: $query}')" \
> /tmp/ff.json
# speaker-labeled raw text (usual deliverable)
jq -r '.data.transcript.sentences[] | "\(.speaker_name): \(.text)"' /tmp/ff.json
# bare text only
jq -r '.data.transcript.sentences[].text' /tmp/ff.json
Transcripts run to hundreds of sentences — save to a file, never dump to stdout/chat.
Optional extras on the same transcript(id:) query: summary { overview short_summary keywords },
participants, duration, meeting_link.
sentences: null — recording still processing or no audio captured; nothing to pull.errors[] in the response instead of data — usually a bad field name; fix the query.A pull is successful only if the sentence count is > 0 and the speakers/topic match the meeting the user asked about — check the first few lines, don't trust the title alone.