Skip to main content الرئيسية المنشئون jeremylongshore tons-of-skills-marketplace granola-observability
granola-observability Monitor Granola adoption, meeting analytics, and build custom dashboards.
Use when tracking team meeting patterns, measuring adoption,
building analytics pipelines, or creating executive reports.
Trigger: "granola analytics", "granola metrics", "granola monitoring",
"granola adoption", "meeting insights".
الانتقال إلى التثبيت سوق المهارات اكتشف واستكشف مهارات الذكاء الاصطناعي التي بناها المجتمع.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
نسخ Promptعرض تفاصيل Prompt يتجاوز الأمر المباشر Prompt المخصّص للمراجعة. افحص المصدر قبل تشغيله.
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill granola-observabilityيبقى الأمر في سطر واحد. مرّر أفقيًا لمراجعته كاملًا قبل النسخ.
تفضّل نسخة محلية؟ نزّل الملفات المتاحة حاليًا لدى SkillsMP.
تحميل Zip جاري التحميل... المزيد من هذا المستودع langchain-deploy-integration Deploy a LangChain 1.0 / LangGraph 1.0 app to Cloud Run, Vercel, or LangServe correctly — with timeouts sized for chain length, cold-start mitigation, SSE anti-buffering headers, and Secret Manager over .env. Use when prepping a first production deploy, debugging a stream that hangs behind a proxy, or diagnosing p99 latency spikes. Trigger with "langchain deploy", "langchain cloud run", "langchain vercel python", "langchain langserve", or "langchain docker".
langchain-langgraph-agents Build a correct LangGraph 1.0 ReAct agent with create_react_agent — typed tools, error propagation, recursion caps, and stop conditions that actually stop. Use when writing a first tool-calling agent, migrating from AgentExecutor or initialize_agent, or diagnosing an agent that loops on vague prompts. Trigger with "langgraph agent", "create_react_agent", "langgraph tool calling", "AgentExecutor migration", or "agent loop cost".
langchain-langgraph-human-in-loop Build LangGraph 1.0 human-in-the-loop approval flows with interrupt_before /
interrupt_after and Command(resume=...) — JSON-serializable state, clean
resume semantics, and UI wiring for approval decisions. Use when adding an
approval gate before an expensive tool call, wiring a Slack/web UI for agent
approvals, or debugging a graph that crashes on interrupt.
Trigger with "langgraph human in loop", "langgraph interrupt_before",
"langgraph approval flow", "Command resume", "langgraph HITL".
name granola-observability description Monitor Granola adoption, meeting analytics, and build custom dashboards.
Use when tracking team meeting patterns, measuring adoption,
building analytics pipelines, or creating executive reports.
Trigger: "granola analytics", "granola metrics", "granola monitoring",
"granola adoption", "meeting insights".
allowed-tools Read, Write, Edit, Bash(curl:*), Bash(python3:*) version 1.13.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","granola","monitoring","analytics","observability"] compatibility Designed for Claude Code
Granola Observability
Overview
Monitor Granola usage, track meeting patterns, and build analytics dashboards. Granola Enterprise includes a usage analytics dashboard. For deeper insights, build custom pipelines using Zapier to stream meeting metadata to BigQuery, Metabase, or other analytics platforms.
Prerequisites
Granola Business or Enterprise plan
Admin access for organization-level analytics
Optional: BigQuery/Metabase for custom dashboards, Zapier for data pipeline
Instructions
Step 1 — Built-in Analytics (Enterprise)
Access the analytics dashboard at Settings > Analytics (Enterprise plan):
Metric What It Shows Total meetings captured Meeting volume over time Active users Users who recorded meetings this period Hours captured Total meeting hours transcribed Notes shared How often notes are distributed Action items created Extracted action items across org Adoption rate Active users / total licensed seats
Step 2 — Define Key Metrics
Track these metrics to measure Granola's impact:
Category Metric Target Formula Adoption Activation rate >80% Users with 1+ meeting / total seats Adoption Weekly active users >70% Users recording this week / total seats Quality Capture rate >70% Meetings captured / total calendar meetings Quality Share rate >50% Notes shared / notes created Efficiency Time saved >10 min/meeting Survey: manual notes time - Granola time Efficiency Action completion >80% Actions completed / actions created Health Processing success >99% Successful enhancements / total attempts Health
Successful syncs / total sync attempts
Step 3 — Build a Custom Analytics Pipeline Stream meeting metadata from Granola to a data warehouse via Zapier:
Trigger: Granola — Note Added to Folder ("All Meetings")
Step 1 — Code by Zapier (extract metadata):
const data = {
meeting_id: inputData.title + '_' + inputData.calendar_event_datetime ,
title: inputData.title ,
date: inputData.calendar_event_datetime ,
creator: inputData.creator_email ,
attendee_count: JSON.parse(inputData.attendees || '[]' ).length ,
has_action_items: inputData.note_content.includes('- [ ]'),
action_item_count: (inputData.note_content.match(/- \[ \]/g) || []).length,
has_decisions: inputData.note_content.includes('
inputData.note_content.includes('## Key Decision') ,
word_count: inputData.note_content.split(/\s+/).length ,
is_external: JSON.parse(inputData.attendees || '[]' )
.some(a => !a.email?.endsWith('@company.com')),
workspace: inputData.folder || 'unknown' ,
captured_at: new Date().toISOString() ,
};
output = [data ];
Step 2 — BigQuery: Insert Row
Dataset: meeting_analytics
Table: granola_meetings
Row: {{metadata from step 1 }}
CREATE TABLE meeting_analytics.granola_meetings (
meeting_id STRING NOT NULL ,
title STRING,
date TIMESTAMP ,
creator STRING,
attendee_count INT64,
has_action_items BOOL,
action_item_count INT64,
has_decisions BOOL,
word_count INT64,
is_external BOOL,
workspace STRING,
captured_at TIMESTAMP
);
Step 4 — Analytics Queries
SELECT
workspace,
DATE_TRUNC(date , WEEK) AS week,
COUNT (* ) AS meeting_count,
SUM (action_item_count) AS total_actions,
AVG (attendee_count) AS avg_attendees
FROM meeting_analytics.granola_meetings
WHERE date >= DATE_SUB(CURRENT_DATE (), INTERVAL 12 WEEK)
GROUP BY workspace, week
ORDER BY week DESC , workspace;
SELECT
DATE_TRUNC(date , WEEK) AS week,
COUNT (DISTINCT creator) AS active_users
FROM meeting_analytics.granola_meetings
WHERE date >= DATE_SUB(CURRENT_DATE (), INTERVAL 8 WEEK)
GROUP BY week
ORDER BY week DESC ;
SELECT
title,
date ,
CASE
WHEN has_action_items AND has_decisions AND attendee_count <= 8 THEN 'Efficient'
WHEN has_action_items OR has_decisions THEN 'Partially Efficient'
ELSE 'Low Efficiency'
END AS efficiency_rating
FROM meeting_analytics.granola_meetings
ORDER BY date DESC
LIMIT 50 ;
SELECT
DATE_TRUNC(date , MONTH ) AS month ,
COUNTIF(is_external) AS external_meetings,
COUNTIF(NOT is_external) AS internal_meetings,
ROUND(COUNTIF(is_external) * 100.0 / COUNT (* ), 1 ) AS external_pct
FROM meeting_analytics.granola_meetings
GROUP BY month
ORDER BY month DESC ;
Step 5 — Automated Reporting Weekly Slack digest (via Zapier Schedule):
Trigger: Schedule by Zapier — Every Friday at 5 PM
Step 1 — BigQuery: Run Query
Query: "SELECT COUNT(*) as meetings, SUM(action_item_count) as actions,
COUNT(DISTINCT creator) as active_users
FROM meeting_analytics.granola_meetings
WHERE date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)"
Step 2 — Slack: Send Message to
Message: |
:bar_chart: *Weekly Granola Report*
*This Week:*
- Meetings captured: {{meetings }}
- Action items created: {{actions }}
- Active users: {{active_users }}
[View full dashboard → ]
Step 6 — Health Monitoring and Alerts Set up alerts for operational issues:
Alert Condition Channel Low adoption Active users <50% of seats (weekly) Slack #it-alerts Processing failures >5% enhancement failures (daily) PagerDuty Integration outage Slack/Notion/CRM sync failures >3 (hourly) Slack #it-alerts Zero meetings captured No meetings for any workspace (daily) Email to workspace admin
curl -s https://status.granola.ai/api/v2/status.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
status = data.get('status', {}).get('description', 'Unknown')
print(f'Granola Status: {status}')
"
Output
Built-in analytics reviewed and baselines established
Custom analytics pipeline streaming to data warehouse
Dashboard visualizing adoption, efficiency, and meeting patterns
Automated weekly/monthly reports delivered to stakeholders
Health monitoring alerts configured for operational issues
Error Handling Error Cause Fix Missing data in pipeline Zapier trigger failed Check Zap history, reconnect if needed Duplicate entries in BigQuery Zapier retry on timeout Add deduplication (MERGE or INSERT IGNORE) Dashboard shows stale data Pipeline paused Monitor Zapier health, restart paused Zaps Low adoption alert false positive New seats just added Adjust alert threshold, use percentage not absolute
Resources
Next Steps Proceed to granola-incident-runbook for incident response procedures.