mcpField
M
meeting-brief-generator

meeting-brief-generator

github.com/varnan-tech生产力68749 次安装2 周前更新
代码仓库

关于 meeting-brief-generator

meeting-brief-generator 为销售或业务拓展会面研究公司并生成一页会前简报。它以 Tavily 搜索结果为依据,通过 Gemini 汇总,也可选择保存到 Notion。

主要功能

  1. 01通过 Tavily 研究公司
  2. 02搜索新闻、产品、技术等信息
  3. 03使用 Gemini 汇总会前简报
  4. 04引用来源并标记缺失信息
  5. 05可选择保存到 Notion

适用场景

  1. 01为公司会面做准备
  2. 02销售通话前了解公司近期动态
  3. 03为联系人会面整理带来源的简报

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varnan-tech/opendirectory --skill meeting-brief-generator

安装后在 Claude Code 中输入/meeting-brief-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
README.md
evals/
evals.json
references/
brief-format.md
output-template.md

详细介绍

会议简报生成器

输入公司名称和可选的联系人。通过 Tavily 调研公司,再用 Gemini 综合生成一页会前简报。也可以选择保存到 Notion。


**重要规则:**不得编造具体信息。简报中的每项事实、数字和说法都必须来自 Tavily 搜索结果。没有搜索数据的部分标注为“找到的公开信息有限。”绝不可伪造融资金额、员工人数或产品详情。


步骤 1:检查设置

确认必需的环境变量:

echo "TAVILY_API_KEY: ${TAVILY_API_KEY:+set}"
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
echo "NOTION_TOKEN: ${NOTION_TOKEN:-not set}"
echo "NOTION_DATABASE_ID: ${NOTION_DATABASE_ID:-not set}"

如果缺少 TAVILY_API_KEY: 停止。告知用户:“TAVILY_API_KEY 是必需项。请在 app.tavily.com 获取,并将其添加到 .env 文件中。”

如果缺少 GEMINI_API_KEY: 停止。告知用户:“GEMINI_API_KEY 是必需项。请在 aistudio.google.com 获取,并将其添加到 .env 文件中。”

如果缺少 NOTION_TOKEN 或 NOTION_DATABASE_ID: 继续。简报将仅以文本形式输出。跳过保存到 Notion 的步骤。

确认输入信息已提供。 用户至少必须提供公司名称。如果没有提供,请询问:“您要与哪家公司会面?”


步骤 2:收集背景信息

收集以下信息。只询问缺失的信息。

必需:

  • 公司名称(或用户提供的域名/URL)
  • 会议日期

可选(缺少时不应阻止后续流程):

  • 联系人姓名和职务
  • 会议类型(需求沟通、演示、跟进、季度业务回顾)
  • 用户希望讨论的具体主题或目标

如果用户提供了公司 URL 或域名,请用它来提高 Tavily 查询的精准度(例如,使用 site:example.com,或在搜索词中加入域名)。


步骤 3:使用 Tavily 调研

按顺序运行以下搜索。每项搜索对应简报的一个部分。保存每项搜索的热门结果(标题、url、内容摘要、评分)。

保留评分 >= 0.5 的结果。如果某项搜索没有返回任何符合条件的结果,则将对应部分标注为“找到的公开信息有限。”

搜索 1:公司概况

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" overview founded employees headquarters",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

搜索 2:近期新闻(过去 30 天)

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" news announcement",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true,
    "topic": "news",
    "time_range": "month"
  }'

搜索 3:技术栈

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" technology stack engineering infrastructure tools",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

搜索 4:产品和定价

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" product features pricing use case",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

搜索 5:竞争对手

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" competitors alternatives vs",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

搜索 6:融资和增长

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"COMPANY\" funding raised valuation growth",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

如果提供了联系人姓名,再运行两项搜索:

搜索 7:联系人资料

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"CONTACT_NAME\" \"COMPANY\" role title",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

搜索 8:联系人背景

curl -s -X POST "https://api.tavily.com/search" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'"$TAVILY_API_KEY"'",
    "query": "\"CONTACT_NAME\" background career LinkedIn",
    "search_depth": "advanced",
    "max_results": 5,
    "include_answer": true
  }'

步骤 4:使用 Gemini 综合信息

完整阅读 references/brief-format.md。阅读 references/output-template.md 并使用其中的模板。

将 Gemini 请求写入临时文件:

cat > /tmp/meeting-brief-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are a GTM research analyst preparing a 1-page pre-call brief for a sales or business development meeting. Rules: Every claim must cite a source URL from the provided research. Use the format 'Because [finding from research], mention [point] to [goal]' for talking points. No invented data. If a section has no research data, write 'Limited public information found.' No em dashes. No banned words. Under 400 words total. The brief must be scannable in 3 minutes."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "RESEARCH_RESULTS_AND_INSTRUCTIONS_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.3,
    "maxOutputTokens": 2500
  }
}
ENDJSON
curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/meeting-brief-request.json \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"

将 RESEARCH_RESULTS_AND_INSTRUCTIONS_HERE 替换为:

  • 所有 Tavily 搜索结果(每条结果的标题、url、内容摘要)
  • output-template.md 中的简报模板结构
  • 公司名称、联系人姓名(如果提供)、会议日期、会议类型(如果提供)

步骤 5:自我质检

提交前检查:

  • 没有编造数据。每项事实都有来自 Tavily 搜索结果的来源 URL。
  • 讨论要点使用“由于[发现],为实现[目标],提及[要点]”的格式
  • 任意一行都没有使用 em dash
  • 没有使用禁用词
  • 简报少于 400 词
  • 如果用户没有提供联系人,“决策者”部分写明“未指定”
  • 没有数据的部分写明“找到的公开信息有限”,而非猜测
  • 开放问题针对这家公司,不是泛泛而谈

提交前修正所有违规项。


步骤 6:输出或保存到 Notion

将完整简报放在代码块中呈现。

如果 NOTION_TOKEN 和 NOTION_DATABASE_ID 都已设置,询问:“将此简报保存到 Notion 吗?”

确认后:

cat > /tmp/notion-brief-payload.json << 'ENDJSON'
{
  "parent": { "database_id": "NOTION_DATABASE_ID_HERE" },
  "properties": {
    "Name": {
      "title": [{ "text": { "content": "Meeting Brief: COMPANY, DATE" } }]
    },
    "Date": {
      "date": { "start": "YYYY-MM-DD" }
    }
  },
  "children": [
    {
      "object": "block",
      "type": "paragraph",
      "paragraph": {
        "rich_text": [{ "type": "text", "text": { "content": "BRIEF_CONTENT_HERE" } }]
      }
    }
  ]
}
ENDJSON
curl -s -X POST "https://api.notion.com/v1/pages" \
  -H "Authorization: Bearer $NOTION_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2022-06-28" \
  -d @/tmp/notion-brief-payload.json

提交后告知:“简报已保存到 Notion。请查看您的数据库。”

如果未配置 Notion:仅呈现简报。不要提及 Notion。

评论

支持 Markdown