360 Secure SkillHub
360 安全技能中心

Meeting Notes

该 Skill 由抓取、格式化、发布三个脚本组成完整流水线:从 Fireflies.ai 查询近期会议转录,提取要点、行动项与参会人,生成 Slack 风格的 markdown,再发布到指定频道;状态文件在抓取与发布两阶段做去重,避免同一会议重复发布。支持手动分步执行,也给出 cron 定时运行方案。

h-mascot
h-mascot
热度 23.99
最近更新 2026-06-04 00:17:28
分类:协作依赖:代码执行 / 读写文件 / 第三方 API应用场景:会议纪要 / 摘要总结 / 工作流 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ec-meeting-notes
Metadata
name
meeting-notes
description
Fetch meeting transcripts from Fireflies.ai, extract key points and action items, format them for Slack, and post automatically. Use when you need to share meeting summaries to Slack, process Fireflies transcripts, or set up automated meeting notes workflows. Handles deduplication to avoid posting the same meeting twice.

Meeting Notes to Slack

Automate the workflow of fetching meeting transcripts from Fireflies.ai and posting formatted summaries to Slack.

Overview

This skill provides a complete pipeline:

  1. Fetch - Query Fireflies API for recent transcripts
  2. Extract - Pull out key points, action items, and participants
  3. Format - Create Slack-optimized markdown with sections and highlights
  4. Post - Send to specified Slack channel
  5. Track - Maintain state file to prevent duplicate posts

Quick Start

# Fetch recent meetings and post to Slack
cd ~/clawd/skills/meeting-notes
./scripts/fetch-transcript.sh [days-back] [search-term]
./scripts/format-notes.sh <transcript-id>
./scripts/post-to-slack.sh <channel> <formatted-file>

Scripts

fetch-transcript.sh

Query Fireflies for recent transcripts and save unposted ones.

Usage:

./scripts/fetch-transcript.sh [days-back] [search-term]

Arguments:

  • days-back (optional): Number of days to look back (default: 7)
  • search-term (optional): Filter meetings by title or participant

Output:

  • Saves transcripts to state/transcripts/
  • Only fetches meetings not in state/posted-meetings.json
  • Prints list of new meetings found

format-notes.sh

Convert a raw transcript into Slack-formatted notes.

Usage:

./scripts/format-notes.sh <transcript-id>

Arguments:

  • transcript-id: The Fireflies meeting ID

Output:

  • Creates state/formatted/<transcript-id>.md
  • Includes: title, date, participants, overview, action items, key topics

post-to-slack.sh

Post formatted notes to Slack and track in state file.

Usage:

./scripts/post-to-slack.sh <channel> <formatted-file>

Arguments:

  • channel: Slack channel name (e.g., #team-sync)
  • formatted-file: Path to formatted markdown file

Behavior:

  • Posts message to Slack via message tool
  • Adds transcript ID to state/posted-meetings.json
  • Prevents duplicate posts automatically

State Files

state/posted-meetings.json

Tracks which meetings have been posted to avoid duplicates.

Format:

{
  "posted": [
    {
      "id": "transcript-id-123",
      "title": "Team Sync",
      "posted_at": "2026-01-15T19:30:00Z",
      "channel": "#team-sync"
    }
  ]
}

state/transcripts/

Raw transcript JSON files from Fireflies API, organized by ID.

state/formatted/

Formatted markdown files ready for Slack posting.

Configuration

API Keys

The skill uses ~/clawd/secrets/fireflies.key for authentication.

Format: Plain text file containing the API key

4576cfcf3273dc3f9b122d1acf3c8b51

For multiple accounts, see ~/clawd/secrets/fireflies.json which contains account mappings.

Slack Integration

Requires Slack channel plugin configured in Clawdbot. The post-to-slack.sh script uses the message tool internally.

Common Workflows

Daily Meeting Summary

Post yesterday's meetings:

./scripts/fetch-transcript.sh 1
for transcript in state/transcripts/*.json; do
  id=$(basename "$transcript" .json)
  ./scripts/format-notes.sh "$id"
  ./scripts/post-to-slack.sh "#daily-sync" "state/formatted/${id}.md"
done

Specific Meeting

Find and post a specific meeting:

./scripts/fetch-transcript.sh 30 "Product Review"
# Review the output, then format and post the desired meeting
./scripts/format-notes.sh <meeting-id>
./scripts/post-to-slack.sh "#product" "state/formatted/<meeting-id>.md"

Automated Cron

Set up a cron job to automatically post daily:

# Post previous day's meetings every morning at 9am
cron add --schedule "0 9 * * *" --command "cd ~/clawd/skills/meeting-notes && ./scripts/fetch-transcript.sh 1 && for t in state/transcripts/*.json; do id=\$(basename \$t .json); ./scripts/format-notes.sh \$id; ./scripts/post-to-slack.sh '#daily-sync' state/formatted/\${id}.md; done"

Error Handling

All scripts exit with status code 1 on error and print diagnostic messages to stderr.

Common issues:

  • Missing API key: Check ~/clawd/secrets/fireflies.key exists
  • No new meetings: All recent meetings already posted
  • Slack posting fails: Verify channel name and Clawdbot Slack integration
  • Invalid transcript ID: Check ID exists in state/transcripts/

Deduplication

The skill maintains deduplication at two levels:

  1. Fetch stage: fetch-transcript.sh checks posted-meetings.json and skips already-posted meetings
  2. Post stage: post-to-slack.sh verifies meeting isn't in state file before posting

This ensures meetings are never posted twice, even if the workflow is run multiple times.