Turns each new recording into a Notion page holding its summary and transcript, and never files the same one twice.
UsesFireflies.ai
Notion
OpenAI
File recordings in Notion as summaries and transcripts
notionDatabaseId to blank.Set notionDatabaseId to blank.maxRecordings to 5.Set maxRecordings to 5.maxTranscriptLines to 60.Set maxTranscriptLines to 60.notionDatabaseId and save it as databaseId.Trim notionDatabaseId and save it as databaseId.lineBudget to maxTranscriptLines multiplied by 1.Set lineBudget to maxTranscriptLines multiplied by 1.lineBudget is greater than 80If lineBudget is greater than 80Yes
lineBudget to 80.Change lineBudget to 80.No
No steps
lineBudget is less than 1If lineBudget is less than 1Yes
lineBudget to 1.Change lineBudget to 1.No
No steps
recordingLimit to maxRecordings multiplied by 1.Set recordingLimit to maxRecordings multiplied by 1.recordingLimit is greater than 25If recordingLimit is greater than 25Yes
recordingLimit to 25.Change recordingLimit to 25.No
No steps
recordingLimit is less than 1If recordingLimit is less than 1Yes
recordingLimit to 1.Change recordingLimit to 1.No
No steps
recordings.List Fireflies meetings. Save it as recordings.filed to 0.Set filed to 0.skipped to 0.Set skipped to 0.recording in recordings.meetings:For each recording in recordings.meetings:filed is greater than or equal to recordingLimitIf filed is greater than or equal to recordingLimitYes
No
No steps
recording.id and save it as recordingId.Trim recording.id and save it as recordingId.recordingId is empty or recordingId is nullIf recordingId is empty or recordingId is nullYes
skipped.Add 1 to skipped.A recording came back with no id, so it was skipped..Show in the output: A recording came back with no id, so it was skipped..No
No steps
marker to [ref: recordingId].Set marker to [ref: recordingId].recording.title and save it as recordingTitle.Trim recording.title and save it as recordingTitle.recordingTitle is empty or recordingTitle is nullIf recordingTitle is empty or recordingTitle is nullYes
recordingTitle to Untitled recording.Change recordingTitle to Untitled recording.No
No steps
filedAlready to false.Set filedAlready to false.dedupeChecked to false.Set dedupeChecked to false.existingPages to an empty list.Set existingPages to an empty list.searchErrorIf a step below fails, save the error as searchErrorTry
existingPages to the pages from the Notion “Search pages” step.Change existingPages to the pages from the Notion “Search pages” step.dedupeChecked to true.Change dedupeChecked to true.On error
recordingTitle, so it was left for the next run.Show in the output: Could not check Notion for an existing page for recordingTitle, so it was left for the next run.dedupeChecked is noIf dedupeChecked is noYes
skipped.Add 1 to skipped.No
No steps
existingPage in existingPages:For each existingPage in existingPages:existingPage.title contains marker (ignoring case)If existingPage.title contains marker (ignoring case)Yes
filedAlready to true.Change filedAlready to true.No
No steps
filedAlready is yesIf filedAlready is yesYes
No
No steps
transcriptText to blank.Set transcriptText to blank.recordingLink to blank.Set recordingLink to blank.recordedOn to blank.Set recordedOn to blank.transcriptErrorIf a step below fails, save the error as transcriptErrorTry
recordingId. Save it as transcript.Get transcript for meeting recordingId. Save it as transcript.transcript.text and save it as transcriptText.Trim transcript.text and save it as transcriptText.transcript.transcript_url and save it as recordingLink.Trim transcript.transcript_url and save it as recordingLink.transcript.date and save it as recordedOn.Trim transcript.date and save it as recordedOn.On error
recordingTitle, so nothing was filed for it.Show in the output: Could not read the transcript for recordingTitle, so nothing was filed for it.transcriptText is empty or transcriptText is nullIf transcriptText is empty or transcriptText is nullYes
skipped.Add 1 to skipped.recordingTitle, so it was left for the next run.Show in the output: No transcript text came back for recordingTitle, so it was left for the next run.No
No steps
promptBody to Recording title: recordingTitleSet promptBody to Recording title: recordingTitle
Transcript:
.summaryPrompt to You are summarising one recorded conversation so it can be found again later.Set summaryPrompt to You are summarising one recorded conversation so it can be found again later.
Write three parts, in this order:
1. A two-sentence overview of what the conversation was about.
2. A line reading 'Key points:' followed by up to six short lines, one per point.
3. A line reading 'Follow-ups:' followed by the actions people agreed to, one per line, or the single line 'None stated.'
Rules you must follow:
- Use ONLY what the transcript below says. Do not add any name, figure, date or fact that does not appear in it.
- Do not give advice, opinions or recommendations of your own.
- Write plain text. Do not use markdown, asterisks or hash marks.
promptBody@transcriptText truncated to 12000 characters using as the ellipsis.summary to blank.Set summary to blank.summaryErrorIf a step below fails, save the error as summaryErrorTry
summary.Trim the response text from the OpenAI “Ask OpenAI” step and save it as summary.On error
recordingTitle, so nothing was filed for it.Show in the output: Could not write a summary for recordingTitle, so nothing was filed for it.summary is empty or summary is nullIf summary is empty or summary is nullYes
skipped.Add 1 to skipped.recordingTitle, so it was left for the next run.Show in the output: No summary came back for recordingTitle, so it was left for the next run.No
No steps
recordedLabel to recordedOn.Set recordedLabel to recordedOn.recordedLabel is empty or recordedLabel is nullIf recordedLabel is empty or recordedLabel is nullYes
recordedLabel to not stated.Change recordedLabel to not stated.No
No steps
linkLabel to recordingLink.Set linkLabel to recordingLink.linkLabel is empty or linkLabel is nullIf linkLabel is empty or linkLabel is nullYes
linkLabel to not available.Change linkLabel to not available.No
No steps
blocks to an empty list.Set blocks to an empty list.blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.linesUsed to 0.Set linesUsed to 0.transcriptTruncated to false.Set transcriptTruncated to false.line in transcriptText split by a new line:For each line in transcriptText split by a new line:linesUsed is greater than or equal to lineBudgetIf linesUsed is greater than or equal to lineBudgetYes
transcriptTruncated to true.Change transcriptTruncated to true.No
No steps
line and save it as lineText.Trim line and save it as lineText.lineText is emptyIf lineText is emptyYes
No
No steps
blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.linesUsed.Add 1 to linesUsed.transcriptTruncated is yesIf transcriptTruncated is yesYes
blocks and save it as blocks.Add a record of object, type, and paragraph to the end of blocks and save it as blocks.No
No steps
pageTitle to recordingTitle truncated to 120 characters using as the ellipsis marker.Set pageTitle to recordingTitle truncated to 120 characters using as the ellipsis marker.notionErrorIf a step below fails, save the error as notionErrorTry
pageTitle in databaseId.Create the page pageTitle in databaseId.filed.Add 1 to filed.On error
skipped.Add 1 to skipped.recordingTitle, so it was left for the next run.Show in the output: Notion would not accept the page for recordingTitle, so it was left for the next run.filed recording(s) in Notion. Left for the next run: skipped.Show in the output: Filed filed recording(s) in Notion. Left for the next run: skipped.