obsidian-granola
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseThis skill helps the user extract meeting data from Granola (via the Granola MCP) and turn it into properly formatted Obsidian notes in their vault.
此技能可帮助用户从Granola(通过Granola MCP)提取会议数据,并将其转换为Obsidian库中格式规范的笔记。
1. Capture Intent & Context
1. 捕捉意图与上下文
First, determine which meeting the user wants to sync.
- If they say "my last meeting", you will need to list recent meetings to find it.
- If they specify a person or topic, search or list recent meetings to identify the correct one.
- If the user says they already have an existing prepared note for this meeting in Obsidian, append the Granola contents to their existing note, and create a separate transcript note.
- Otherwise, you will generate a new title and create both the meeting note and transcript note from scratch.
首先,确定用户想要同步的是哪一场会议。
- 如果用户说“我的上一次会议”,你需要列出近期会议来找到对应的那场。
- 如果用户指定了人员或主题,通过搜索或列出近期会议来定位正确的会议。
- 如果用户表示已在Obsidian中为此会议创建了现有笔记,将Granola中的内容追加到该现有笔记中,并单独创建一份转录文本笔记。
- 否则,你需要生成一个新标题,从头创建会议笔记和转录文本笔记。
2. Fetch Granola Data
2. 获取Granola数据
Use the Granola MCP tools:
- to find the meeting ID if you don't already have it.
mcp_granola_list_meetings - to get the AI-generated summary, action items, and private notes.
mcp_granola_get_meetings - to get the verbatim raw transcript (NOTE: This tool may require a paid Granola tier. If the call fails with a paid-tier error, continue the workflow and still create the transcript note so the user can fill it in manually.)
mcp_granola_get_meeting_transcript
使用Granola MCP工具:
- 用于在未获取会议ID时查找对应ID。
mcp_granola_list_meetings - 用于获取AI生成的摘要、行动项和私人笔记。
mcp_granola_get_meetings - 用于获取逐字原始转录文本(注意:此工具可能需要Granola付费套餐。如果调用因付费套餐限制失败,仍需继续执行工作流并创建转录文本笔记,以便用户手动填写内容。)
mcp_granola_get_meeting_transcript
3. Generate the Title (If creating a new note)
3. 生成标题(若创建新笔记)
Generate a title using the user's specific naming convention:
[Meeting / Kickoff / Interview / etc] with [Person] [more concise context if relevant] [YYYY-MM]Examples:
Meeting with Matt 2, 2025-10Intro call with Acme 2026-01Interview - Acme Corp design rol with Grace 2024-05Kickoff with Carol for assistance work 2026-02
Crucial Step: Present the generated title to the user for approval before creating the files. The user may want to tweak it or provide their own.
按照用户指定的命名规则生成标题:
[会议/启动会/面试/等] 与 [人员] [相关的简洁上下文(如有)] [YYYY-MM]示例:
Meeting with Matt 2, 2025-10Intro call with Acme 2026-01Interview - Acme Corp design rol with Grace 2024-05Kickoff with Carol for assistance work 2026-02
关键步骤: 在创建文件前,将生成的标题提交给用户确认。用户可能希望调整标题或自行提供。
4. Prepare and Save the Transcript Note
4. 准备并保存转录文本笔记
The transcript note uses the format and must follow this naming convention: .
Transcript template.mdTranscript - [Meeting Title]-
Frontmatter:
- If you need the transcript template, to read the latest properties for the template.
obsidian read file="Transcript template" - Use the retrieved properties as the base for the new note's frontmatter.
- Inject the dynamic values from the meeting:
- :
dateof the meeting.YYYY-MM-DD - : Add any identified attendees as wikilinks (e.g.,
people)."[[Jane Doe]]" - : Generate a list of 1-2 short, alternative titles for the meeting to improve searchability. Make sure these aliases are highly specific to this exact meeting (e.g. mentioning specific project names, unique topics, or dates) so they don't broadly apply to other notes (e.g.,
aliases).["Project Phoenix Q3 roadmap sync", "Stripe API integration planning 2024-10"] - : Add a wikilink back to the main meeting note (e.g.,
related)."[[Meeting Title]]" - Generate a property summarizing the meeting. Write a 1-2 sentence concise summary directly (like "Summary mode" in the
descriptionskill); do not use filler phrases like "This note is about" or "A summary of".set-note-description - If the template contains dynamic scripts or variables (e.g. ), evaluate them into actual dates.
<% tp.file.creation_date(...) %>
- If you need the transcript template,
-
Content:
- Add a header below the frontmatter.
## Transcript - Append the verbatim raw transcript below the header.
- Granola transcript logs have speaker labels like and
Them:. You must format the transcript text, inserting blank newlines to separate speakers into distinct paragraphs.Me: - Replace "Me: " with "Nathan: ". If you know the other speaker, replace "Them: " with the bolded first name of the speaker. If this is a multi-speaker meeting and speaker assignment isn't certain, leave the original label but bold it (e.g. "Them: "). Note the colon should be included in the bolding.
- Add a
-
Save Location:
- Save to @03-Records/Talks/Transcript - [Meeting Title].md
转录文本笔记采用格式,必须遵循以下命名规则:。
Transcript template.mdTranscript - [会议标题]-
前置元数据(Frontmatter):
- 若需要转录文本模板,可通过读取模板的最新属性。
obsidian read file="Transcript template" - 将获取到的属性作为新笔记前置元数据的基础。
- 注入会议的动态值:
- :会议的
date格式日期。YYYY-MM-DD - :将已识别的参会者添加为维基链接(例如:
people)。"[[Jane Doe]]" - :生成1-2个简短的会议替代标题,以提升搜索性。确保这些别名高度针对本次会议(例如提及具体项目名称、独特主题或日期),避免泛用在其他笔记上(例如:
aliases)。["Project Phoenix Q3 roadmap sync", "Stripe API integration planning 2024-10"] - :添加指向主会议笔记的维基链接(例如:
related)。"[[Meeting Title]]" - 生成属性来总结会议。直接撰写1-2句简洁的总结(类似
description技能中的“摘要模式”);请勿使用“本笔记关于”或“……的摘要”这类填充性语句。set-note-description - 若模板包含动态脚本或变量(例如),需将其解析为实际日期。
<% tp.file.creation_date(...) %>
- 若需要转录文本模板,可通过
-
正文内容:
- 在前置元数据下方添加标题。
## Transcript - 在标题后追加逐字原始转录文本。
- Granola转录日志中的发言者标签为和
Them:。你需要格式化转录文本,插入空行将不同发言者的内容分隔为独立段落。Me: - 将"Me: "替换为"Nathan: "。若已知其他发言者身份,将"Them: "替换为该发言者的加粗名。若为多发言者会议且无法确定发言者身份,保留原始标签但将其加粗(例如"Them: ")。注意冒号需包含在加粗范围内。
- 在前置元数据下方添加
-
保存位置:
- 保存至@03-Records/Talks/Transcript - [会议标题].md
5. Prepare and Save the Meeting Note
5. 准备并保存会议笔记
If the user provided an existing note:
- Read their existing note.
- Retain their frontmatter and title.
- Ensure the property in their frontmatter includes a link to the transcript (
related)."[[Transcript - [Meeting Title]]]" - Intelligently append the Granola notes and AI summary into their document where it makes sense (e.g., under a header).
## Notes
If creating a new note:
-
Frontmatter:
- If you need the meeting template, to read the latest properties for the template.
obsidian read file="Meeting template" - Use the retrieved properties as the base for the new note's frontmatter.
- Inject the dynamic values from the meeting:
- Follow the same rules for ,
date,people, andaliasesas defined above.description - :
related"[[Transcript - [Meeting Title]]]" - If the template contains dynamic scripts or variables (e.g. ), evaluate them into actual dates.
<% tp.file.creation_date(...) %>
- Follow the same rules for
- If you need the meeting template,
-
Content:
- Add a or
## Notesheader.## Summary - Insert the AI-generated summary, private notes, and action items from Granola. Make sure it is nicely formatted in Markdown.
- Add a
-
Save Location:
- Save to @03-Records/Talks/[Meeting title].md
-
Bidirectional prev/next linking:
- If the new note has a frontmatter field pointing to an earlier meeting in a series, open that previous note and add (or append to) its
prevfrontmatter field with a wikilink back to the new note (e.g.,next). This keeps the chain navigable in both directions.next: "[[New Meeting Title]]"
- If the new note has a
若用户已提供现有笔记:
- 读取用户的现有笔记。
- 保留其前置元数据和标题。
- 确保前置元数据中的属性包含指向转录文本笔记的链接(
related)。"[[Transcript - [会议标题]]]" - 智能地将Granola中的笔记和AI摘要追加到文档中合适的位置(例如标题下)。
## Notes
若创建新笔记:
-
前置元数据(Frontmatter):
- 若需要会议模板,可通过读取模板的最新属性。
obsidian read file="Meeting template" - 将获取到的属性作为新笔记前置元数据的基础。
- 注入会议的动态值:
- 遵循上述、
date、people和aliases的相同规则。description - :
related"[[Transcript - [会议标题]]]" - 若模板包含动态脚本或变量(例如),需将其解析为实际日期。
<% tp.file.creation_date(...) %>
- 遵循上述
- 若需要会议模板,可通过
-
正文内容:
- 添加或
## Notes标题。## Summary - 插入从Granola获取的AI生成摘要、私人笔记和行动项。确保内容采用规范的Markdown格式。
- 添加
-
保存位置:
- 保存至@03-Records/Talks/[会议标题].md
-
双向前后链接:
- 若新笔记的前置元数据中存在字段,指向同一系列中的上一场会议,打开该前置笔记并在其
prev字段中添加(或追加)指向新笔记的维基链接(例如:next)。这样可保持会议系列的双向可导航性。next: "[[New Meeting Title]]"
- 若新笔记的前置元数据中存在
6. (Desktop environment only) Open in Obsidian
6. (仅桌面环境)在Obsidian中打开
Note: This only works if the agent has Obsidian CLI access in the current environment. If the command fails or is unavailable, skip it silently and report the file paths to the user instead.
After saving both notes, try to open them in Obsidian using the CLI:
bash
undefined注意:仅当智能体在当前环境中拥有Obsidian CLI访问权限时,此步骤才可执行。若命令执行失败或不可用,需静默跳过此步骤,并向用户报告文件路径。
保存两份笔记后,尝试通过CLI在Obsidian中打开它们:
bash
undefinedIf you have Obsidian running in your environment
若你的环境中已运行Obsidian
obsidian open file="[Meeting Title]"
undefinedobsidian open file="[Meeting Title]"
undefined7. Review
7. 确认
Confirm with the user that the notes have been successfully created and linked together!
与用户确认笔记已成功创建并关联!