FI

fireflies-core-workflow-a

Retrieves meeting data from Fireflies.ai using GraphQL to extract transcripts, summaries, and action items programmatically.

Install

mkdir -p .claude/skills/fireflies-core-workflow-a && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6341" && unzip -o skill.zip -d .claude/skills/fireflies-core-workflow-a && rm skill.zip

Installs to .claude/skills/fireflies-core-workflow-a

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Retrieve and process Fireflies.ai meeting transcripts with speaker diarization
78 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Build a GraphQL client for Fireflies.ai API
  • List meeting transcripts with filters
  • Fetch full transcripts including speaker diarization and sentences
  • Process meeting intelligence to extract action items and sentiment
  • Export transcripts to text format

How it works

The skill uses a GraphQL client to query the Fireflies.ai API for meeting transcripts. It then processes the retrieved data to extract speaker-diarized sentences, summaries, action items, and other meeting intelligence.

Inputs & outputs

You give it
Fireflies.ai API key and GraphQL queries
You get back
Processed meeting transcripts with speaker diarization, summaries, and action items

When to use fireflies-core-workflow-a

  • Fetch meeting transcripts via GraphQL
  • Extract action items from meetings
  • Build meeting intelligence pipelines
  • Process speaker-diarized transcript data

About this skill

Fireflies.ai Core Workflow A -- Transcript Retrieval & Processing

Overview

Primary workflow for Fireflies.ai: fetch meeting transcripts via GraphQL, process speaker-diarized sentences, extract action items and summaries, and route meeting intelligence downstream.

Prerequisites

  • Completed fireflies-install-auth setup
  • FIREFLIES_API_KEY set with Business+ plan for full access
  • At least one completed meeting in Fireflies

Instructions

Step 1: Build the GraphQL Client

// lib/fireflies.ts
const FIREFLIES_API = "https://api.fireflies.ai/graphql";

export async function firefliesQuery<T = any>(
  query: string,
  variables?: Record<string, any>
): Promise<T> {
  const res = await fetch(FIREFLIES_API, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${process.env.FIREFLIES_API_KEY}`,
    },
    body: JSON.stringify({ query, variables }),
  });

  const json = await res.json();
  if (json.errors) {
    const err = json.errors[0];
    throw new Error(`Fireflies API error: ${err.message} (${err.code || "unknown"})`);
  }
  return json.data;
}

Step 2: List Transcripts with Filters

const LIST_TRANSCRIPTS = `
  query ListTranscripts(
    $limit: Int,
    $mine: Boolean,
    $fromDate: DateTime,
    $toDate: DateTime,
    $organizers: [String],
    $participants: [String]
  ) {
    transcripts(
      limit: $limit
      mine: $mine
      fromDate: $fromDate
      toDate: $toDate
      organizers: $organizers
      participants: $participants
    ) {
      id title date duration
      organizer_email participants
      summary { overview action_items keywords }
    }
  }
`;

// Fetch this week's meetings for a specific organizer
const data = await firefliesQuery(LIST_TRANSCRIPTS, {
  limit: 20,
  fromDate: "2026-03-15T00:00:00Z",
  organizers: ["[email protected]"],
});

Step 3: Fetch Full Transcript with Sentences

const GET_TRANSCRIPT = `
  query GetTranscript($id: String!) {
    transcript(id: $id) {
      id title date duration
      organizer_email
      speakers { id name }
      sentences {
        index
        speaker_name
        speaker_id
        text
        raw_text
        start_time
        end_time
        ai_filters {
          task
          question
          sentiment
          pricing
          metric
          date_and_time
        }
      }
      summary {
        overview
        short_summary
        bullet_gist
        action_items
        keywords
        outline
        topics_discussed
      }
      meeting_attendees { displayName email }
      meeting_attendance { name join_time leave_time }
      analytics {
        sentiments { positive_pct negative_pct neutral_pct }
        speakers {
          name duration word_count
          words_per_minute questions
          longest_monologue filler_words
        }
      }
    }
  }
`;

const { transcript } = await firefliesQuery(GET_TRANSCRIPT, { id: "abc123" });

Step 4: Process Meeting Intelligence

interface MeetingIntelligence {
  id: string;
  title: string;
  attendees: string[];
  actionItems: string[];
  keyTopics: string[];
  speakerBreakdown: { name: string; minutes: number; wordCount: number }[];
  sentiment: { positive: number; negative: number; neutral: number };
  questions: string[];
}

function processMeeting(transcript: any): MeetingIntelligence {
  // Extract questions from AI filters
  const questions = transcript.sentences
    .filter((s: any) => s.ai_filters?.question)
    .map((s: any) => `${s.speaker_name}: ${s.text}`);

  return {
    id: transcript.id,
    title: transcript.title,
    attendees: transcript.meeting_attendees?.map((a: any) => a.email) || [],
    actionItems: transcript.summary?.action_items || [],
    keyTopics: transcript.summary?.keywords || [],
    speakerBreakdown: (transcript.analytics?.speakers || []).map((s: any) => ({
      name: s.name,
      minutes: Math.round(s.duration / 60),
      wordCount: s.word_count,
    })),
    sentiment: {
      positive: transcript.analytics?.sentiments?.positive_pct || 0,
      negative: transcript.analytics?.sentiments?.negative_pct || 0,
      neutral: transcript.analytics?.sentiments?.neutral_pct || 0,
    },
    questions,
  };
}

Step 5: Export Transcript as Text

function transcriptToText(transcript: any): string {
  const lines: string[] = [
    `# ${transcript.title}`,
    `Date: ${transcript.date} | Duration: ${transcript.duration}min`,
    `Speakers: ${transcript.speakers.map((s: any) => s.name).join(", ")}`,
    "",
    "## Summary",
    transcript.summary?.overview || "(no summary)",
    "",
    "## Action Items",
    ...(transcript.summary?.action_items || []).map((a: string) => `- ${a}`),
    "",
    "## Transcript",
  ];

  for (const s of transcript.sentences) {
    const timestamp = formatTimestamp(s.start_time);
    lines.push(`[${timestamp}] ${s.speaker_name}: ${s.text}`);
  }
  return lines.join("\n");
}

function formatTimestamp(seconds: number): string {
  const m = Math.floor(seconds / 60);
  const s = Math.floor(seconds % 60);
  return `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
}

Error Handling

ErrorCauseSolution
auth_failedInvalid API keyRegenerate in Fireflies dashboard
Empty sentences arrayTranscript still processingCheck meeting_info.summary_status
null summaryShort meeting (<1 min)Summary requires minimum content
Rate limit 429Over 60 req/min (Business)Implement backoff per fireflies-rate-limits
Missing analyticsFree/Pro planAnalytics requires Business+ plan

Output

  • Full transcript with speaker-diarized sentences and timestamps
  • AI-generated summary, action items, and keywords
  • Speaker analytics with talk time, word count, and sentiment
  • Meeting intelligence object ready for downstream processing

Resources

Next Steps

For search, analytics, and AskFred, see fireflies-core-workflow-b.

When not to use it

  • When the API key is invalid
  • When the transcript is still processing
  • When the meeting is too short to generate a summary

Prerequisites

Completed fireflies-install-auth setupFIREFLIES_API_KEY set with Business+ planAt least one completed meeting in Fireflies

Limitations

  • Analytics data requires a Business+ plan
  • Rate limits apply to API requests
  • Empty sentences array indicates the transcript is still processing

How it compares

This skill automates the retrieval and structured processing of Fireflies.ai meeting data via GraphQL, providing specific intelligence like action items and speaker analytics, which is more detailed than manual review.

Compared to similar skills

fireflies-core-workflow-a side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
fireflies-core-workflow-a (this skill)125dCautionIntermediate
apollo-data-handling125dCautionIntermediate
azure-ai-document-intelligence-ts03moReviewIntermediate
apollo-migration-deep-dive125dCautionAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

You might also like

apollo-data-handling

jeremylongshore

Apollo.io data management and compliance. Use when handling contact data, implementing GDPR compliance, or managing data exports and retention. Trigger with phrases like "apollo data", "apollo gdpr", "apollo compliance", "apollo data export", "apollo data retention", "apollo pii".

12

azure-ai-document-intelligence-ts

microsoft

Extract text, tables, and structured data from documents using Azure Document Intelligence (@azure-rest/ai-document-intelligence). Use when processing invoices, receipts, IDs, forms, or building custom document models.

02

apollo-migration-deep-dive

jeremylongshore

Comprehensive Apollo.io migration strategies. Use when migrating from other CRMs to Apollo, consolidating data sources, or executing large-scale data migrations. Trigger with phrases like "apollo migration", "migrate to apollo", "apollo data import", "crm to apollo", "apollo migration strategy".

10

openevidence-core-workflow-b

jeremylongshore

Execute OpenEvidence DeepConsult workflow for comprehensive medical research. Use when implementing deep research synthesis, complex clinical questions, or when physicians need extensive literature review. Trigger with phrases like "openevidence deepconsult", "deep research", "comprehensive evidence", "literature synthesis".

00

segment-cdp

davila7

Expert patterns for Segment Customer Data Platform including Analytics.js, server-side tracking, tracking plans with Protocols, identity resolution, destinations configuration, and data governance best practices. Use when: segment, analytics.js, customer data platform, cdp, tracking plan.

212

groq-cost-tuning

jeremylongshore

Optimize Groq costs through tier selection, sampling, and usage monitoring. Use when analyzing Groq billing, reducing API costs, or implementing usage monitoring and budget alerts. Trigger with phrases like "groq cost", "groq billing", "reduce groq costs", "groq pricing", "groq expensive", "groq budget".

12

Search skills

Search the agent skills registry