跳到正文
cccskills
免费在 GitHub 公开

granola-sync

Pull fresh meetings from Granola (summaries, transcripts, participants) into an Obsidian vault over the official API. Incremental and idempotent by note id and updated_at, so re-runs make no duplicates. Triggers: "/granola-sync", "pull granola", "refresh meetings".

中文简介正在准备中。当前显示原文说明。

集成工具TelegramObsidian
查看安装方法

包含的文件(1)

  • SKILL.md4.9 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

OBJECTIVE: Incrementally pull fresh meetings/calls from Granola into the vault (summary + full transcript + participants + a calendar match), on demand. Idempotent: the script downloads only what is new or changed (state.json: note id → updated_at).

CONTEXT:

  • Transport: the official Granola public API https://public-api.granola.ai/v1 (List Notes / Get Note ?include=transcript; page_size <= 30; 5 rps). Key: %WORKDIR%\secrets\granola.env (account owner.calendar@example.com, Workspace2, scopes personal+public, created 2026-07-02).
  • ⛔ The MCP transport is NO LONGER used for syncing (browser OAuth, it dies after ~10 days) — only for interactive questions, and only if re-authorized.
  • Engine (all the logic lives there, this skill is a thin wrapper): $IMPORTS_ROOT/granola/granola_pull.py. The same script does both backfill and increment.
  • Home for notes: $OBSIDIAN_VAULT/04-Projects/granola-meetings/ (auto_generated: true — never hand-edit, they get overwritten). Raw JSON: _imports\granola\raw\. Nightly task log: _imports\granola\pull.log.
  • ⚠️ Granola does NOT start recording by itself: it records only when a human opens the note or clicks the notification. "The app is running" is not "it is recording".

STEPS:

  1. BACKUP FIRST ([[vault-backup-rule]]): python $IMPORTS_ROOT/vault_backup.py BEFORE running anything.
  2. Run it: python $IMPORTS_ROOT/granola/granola_pull.py (options: --dry to count without writing, --limit N to cap).
  3. Read the stdout counters: DONE new=X updated=Y errors=Z state_total=N. errors>0 → look into it; usually network or 429 (the script retries by itself).
  4. If new>0 — report the list of fresh meetings (titles/dates from the state or the new files).
  5. Distill (if new>0): python $IMPORTS_ROOT/granola/call_distill.py — it breaks each new call into Commitments/Facts/Objections/Alpha with quotes → 04-Projects\granola-meetings\_distilled\ + commitments.jsonl. Counters: DONE distilled=M commitments=C errors=Z. (The nightly twin is the "Granola Call Distill" task at 03:50; it also eats the Fireflies raw files.)
  6. The RAG reindex picks it up overnight ([[reindex-routine]]); after the FIRST big backfill, run python $IMPORTS_ROOT/brain_embed_update.py manually. ⚠️ _distilled is not in the curated index yet (04-Projects is the evidence layer) — closed by task RUSL-1 (layer: essence).

CONSTRAINTS:

  • Windows cp1252: do not print non-ASCII to stdout (the script is already ASCII-only).
  • INCREMENTAL ONLY — never delete state.json (it would re-download everything).
  • Provenance: origin: mixed, authored_by: hybrid — NOT #anton-original (someone else's speech).
  • Tier-2: nothing goes outside; API reads and vault writes only.
  • A 401/403 from the API means the key was revoked: create a new one in the Granola desktop app (Settings → Connectors → Personal API keys, scopes Personal+Public) and update granola.env. I can do this myself through computer-use (verified 2026-07-02).

OUTPUT: the new/updated/errors counters + the period; if empty, "no new meetings". Finish with an "In plain words" recap.

RELATION (do not duplicate): the Fireflies rail (auto-recording, real speaker names) = skill [[fireflies-sync]]; access and history = memory [[granola-mcp-integration]]; the architecture decision = the vault note decision-granola-extraction-official-api; the post-call follow-up SOP = memory [[call-followup-group-sop]] (a separate pipeline); the FAAA sync goes the other way (finished follow-ups out of Telegram).

<!--kit-footer-->

Like this skill? It is part of second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.

Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_

Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

03

免费

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

1

免费

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

agenda

免费

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

ai-slop

免费

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

中文简介正在准备中。当前显示原文说明。

tonydzi/second-brain-starter-kit92026年10月20日 更新

查看 tonydzi 的全部技能

报告此技能的问题