blender-motion-state-inspection
AFaffaan-m/ECC278k近 7 天新增 4,046 个 star
Transcribe and summarize a meeting recording — speaker-attributed transcript, corrected mis-hearings, then a brief with decisions and action items. Use whenever the user points at an audio or video file (.mp4, .mkv, .mov, .m4a, .mp3, .wav) or a Teams/Zoom transcript export and asks to transcribe it, summarize it, take notes, write minutes, say what was discussed, who said what, what was decided, or what the action items and follow-ups are.
A recording becomes a usable brief in three tool calls. Each one produces a file the next one reads — nothing is passed inline, because a 46-minute meeting is ~135,000 characters against a 60,000-character tool-result budget, and a summary built from the truncated half looks finished rather than truncated.
| # | Call | Produces |
|---|---|---|
| 1 | transcribe_media(file_path) | Raw transcript at ~/.gaia/transcripts/<name>.txt. Returns transcript_path, never the text. |
| 2 | refine_transcript(transcript_path) | A speaker-labelled markdown transcript, already indexed. Returns refined_path, speakers, turns. |
| 3 | summarize_document(refined_path, summary_type='detailed') | The brief. |
Confirm the file exists, and set expectations. If the path is not there, say so and quote it — never describe a recording from its filename. Measured on a 46-minute recording: ~6 min to transcribe, ~4 min to separate the voices, ~1-2 min to name them and summarize — about 11-12 minutes, or roughly 4x realtime. Say that before you start, not after the user has waited.
Transcribe. transcribe_media(file_path). Pass output_path to write
elsewhere, language to skip auto-detection. The transcript is written
before anything downstream runs, so it survives a later failure; if the call
errors, report its message as given — it names the missing component and the
command that installs it.
preview is the first 1200 characters, for identifying the recording only.
low_confidence_spans and low_confidence_span_count are informational —
step 3 does the correcting. Do not repair them yourself.
Refine — one call, and it is not your work to redo.
refine_transcript(transcript_path) groups the transcript by the voices
already separated from the audio, puts names to them where the conversation
supports it, writes the result and indexes it. You do not work out the
speakers yourself, do not rewrite wording, and do not write a transcript
file. Summarizing the raw transcript instead produces a brief with no owners
on the action items.
It needs the timings saved alongside the raw transcript. If it reports they
are missing, re-run transcribe_media on the original media rather than
trying to segment the text yourself — turn boundaries guessed from prose are
invented, not observed.
Report both paths, every time. State the raw transcript_path and the
refined_path in your reply — even when the user only asked for action
items, even if a later step fails. Transcription costs minutes of compute; a
user who does not know the files exist pays for it twice.
Summarize. refine_transcript already indexed the file, so go straight
to summarize_document(refined_path, summary_type='detailed'), which folds
the whole transcript forward in sections so the brief covers the entire
meeting.
Remember the outcome, not the transcript. remember a short record of
the meeting: what it was, when, who was in it, the decisions, and any action
item the user personally owes. Two or three sentences.
The transcript is already indexed — that is what detailed questions read from. Memory is for the durable facts that should surface without being asked, weeks later, when the user says "what did I commit to?" or a related topic comes up in a different conversation.
Do not store the transcript, long quotes, or the full brief in memory. That duplicates the index, crowds out everything else the user asked to be remembered, and gets recalled in conversations it has nothing to do with. Store nothing when the recording turned out to be something other than a meeting.
Invite the follow-up. Close by telling the user they can ask questions about the meeting and you will answer from the indexed transcript. They will not discover this on their own.
preview. 1200 characters tells you which recording this is and
nothing else — not the topic, not the participants, not the decisions, and
certainly not the action items, which cluster at the end.query_documents. It returns only the top few matching chunks,
so a summary built from it silently omits most of the meeting.
query_documents is the right tool for a later follow-up question about a
specific detail.If a stage did not run, say which one and what the brief is therefore missing. Do not present a partial pass as the finished product.
transcribe_media returns a speaker_identification field ONLY when voices
could not be separated — the engine was missing, or the audio defeated it. When
it is there, say so in your reply and give its reason. A transcript with no
speaker labels reads exactly like a meeting with one participant, so silence
here is not neutral: it is a wrong answer the user has no way to catch.
Carry on and summarize anyway. A brief without owners still beats no brief — just do not present it as though you knew who spoke.
Voices ARE separated from the audio, by acoustic diarization — that part is
measured, not guessed. What stays inferred is the name attached to each
voice: refine_transcript reads self-introductions, direct address and role
cues. So present the names as best-effort while the separation is not. Voices
it could not name stay Speaker 1, Speaker 2; never upgrade one to a real
name yourself. A confidently wrong name propagates into the brief, into who owns each
action item, and into the indexed transcript that answers questions weeks later.
refine_transcript writes:
# Transcript — staff-meeting
Source: C:\recordings\staff-meeting.mp4
## Speakers
- Priya Raman
- Dan Okafor
- Speaker 3
## Transcript
Priya Raman: Thanks everyone for joining...
Dan Okafor: The migration finished Tuesday...
Shape your brief from summarize_document's output as: what the meeting was for
and what came out of it (2–3 sentences); key facts stated rather than inferred;
action items with an owner each, unknown when the transcript does not say; and
anything unresolved or blocked.
This section is the one to change when a reader wants their briefs a different way — a different order, a section dropped, a section added. Everything above it is about producing a trustworthy transcript and is not a matter of taste.
The three calls stay as they are — the file-not-inline pipeline, the speaker
honesty, and refinement before summarization are what make any output
trustworthy. Change only Brief shape: an incident review wants Timeline, Root
Cause, Impact and Remediation; a customer call wants Asks, Objections,
Commitments and Next Steps.
AFaffaan-m/ECC278k近 7 天新增 4,046 个 star
ANanthropics/skills181k近 7 天新增 1,119 个 star
SHShubhamsaboo/awesome-llm-apps141k近 7 天新增 808 个 star
HAharry0703/MoneyPrinterTurbo130k近 7 天新增 1,722 个 star
PApaperclipai/paperclip101k近 7 天新增 2,948 个 star