mcpField
I
ingest

ingest

github.com/garrytan生产力31.4k248 次安装今天更新
代码仓库

关于 ingest

ingest 是用于将会议、文章、媒体、文档和对话归档到 GBrain 的 Agent 技能。其工作流保留原始来源、为写入的事实添加引用,并通过链接和时间线关联实体页面。

主要功能

  1. 01处理会议、媒体、文档和消息
  2. 02保留原始来源及出处信息
  3. 03为写入知识库页面的事实添加引用
  4. 04更新实体页面和时间线
  5. 05创建交叉链接及实体反向链接
  6. 06将媒体内容分流至专用导入流程

适用场景

  1. 01归档会议记录并补充与会者背景
  2. 02保存带来源记录的文章和文档
  3. 03导入视频、播客和社交帖子
  4. 04将事件详情同步到相关实体页面

MCP 相关

该技能使用 GBrain 的 search、get、put、sync、时间线更新、链接和原始文件存储等操作。输入将其描述为专用导入技能的路由器,而不是 MCP 服务。

安装

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

$npx skills add https://github.com/garrytan/gbrain --skill ingest

安装后在 Claude Code 中输入/ingest确认已加载。

详细介绍

Ingest Skill

将会议、文章、媒体、文档和对话摄入到大脑中。

归档规则: 在创建任何新页面之前,请先阅读 skills/_brain-filing-rules.md。

约定

  • 写入大脑页面的每一条事实都必须带有行内 [Source: ...] 引用,并注明日期和来源。
  • 每次提及实体时,都要从该实体的页面建立一条指向提及它的页面的反向链接(铁律)。
  • 通过 gbrain files upload-raw 保留原始来源以便溯源,并自动按大小分流。
  • 状态(State)章节应以当前的最佳理解重写,绝不追加。
  • 用户明确选择开启自动捕获之后(参见 skills/signal-detector/SKILL.md),每条有实质内容的入站消息都会触发实体检测,值得关注的实体将获得新页面或更新。未开启该选项时,仅捕获用户要求保存的内容。
  • 创建任何新实体页面之前需通过显著性门槛:已有页面应直接更新;只有对于值得关注的实体,并且只有在网络搜索或现有大脑上下文提供了有实质意义的内容时,才创建新页面,不创建占位页。非显著实体的提及只作为所在页面的行内引用保留。

约定: 有关铁律反向链接的内容,参见 skills/conventions/quality.md。

每次提及已有大脑页面的人物或公司,都必须创建一条从该实体页面指向提及它的页面的反向链接。未建立链接的提及会破坏大脑的完整性。格式参见 skills/_brain-filing-rules.md。

引用要求(强制)

写入大脑页面的每一条事实都必须带有行内 [Source: ...] 引用。

  • 用户陈述: [Source: User, {context}, YYYY-MM-DD]
  • 会议数据: [Source: Meeting "{title}", YYYY-MM-DD]
  • 邮件/消息: [Source: email from {name} re: {subject}, YYYY-MM-DD]
  • 网络内容: [Source: {publication}, {URL}, YYYY-MM-DD]
  • 社交媒体: [Source: X/@handle, YYYY-MM-DD](URL)(需包含链接)
  • 综合整理: [Source: compiled from {sources}]

阶段

路由说明: 本技能是一个路由器。如需专门的摄入流程,请参见:idea-ingest、media-ingest、meeting-ingestion。

  1. 解析来源。 从输入中提取人物、公司、日期和事件。
  2. 针对每个提及的实体:
    • 从 gbrain 读取该实体的页面,检查其是否存在
    • 如果存在:更新 compiled_truth(用新信息重写 State 章节,不要追加)
    • 如果是新实体:先通过显著性门槛检查,然后以合适的类型和 slug 将页面存入 gbrain
  3. 追加到时间线。 为每个事件在 gbrain 中添加时间线条目,包含日期、摘要和来源引用。
  4. 创建交叉引用链接。 对于每一对一同被提及的实体,在 gbrain 中使用合适的关系类型将它们关联起来。
  5. 为所有实体建立反向链接。 更新每个被提及实体的页面,添加一条指向本页面的反向链接(铁律)。
  6. 合并时间线。 同一事件会出现在所有被提及实体的时间线上。如果 Alice 在 Acme Corp 见到了 Bob,该事件应同时记入 Alice 的页面、Bob 的页面和 Acme Corp 的页面。

每条消息的实体检测(开启选项后)

自动捕获默认关闭。一旦用户针对该大脑明确选择开启自动捕获(即 skills/signal-detector/SKILL.md 在写入前检查的已存储选项),生产环境中的 Agent 会对每条有实质内容的入站消息进行实体提及检测。这一信号检测循环使大脑能够随时间不断积累。未开启该选项时,仅写入用户要求保存的内容。

Protocol
  1. 扫描消息,查找实体提及:人物、公司、概念、原创思考。在用户已记录同意的前提下,对每条实质性消息都要触发(跳过纯操作性消息,并遵循针对单条消息的更窄指令)。
  2. 对每个检测到的实体:
    • gbrain search "name" -- 页面是否已存在?
    • 若存在: 使用 gbrain get <slug> 加载上下文。利用编译后的真相来指导你的回应。若消息包含新信息,则更新页面。
    • 若不存在: 评估显著性(参见 skills/_brain-filing-rules.md)。若实体值得追踪,则使用 gbrain put <type/slug> 创建新页面,并填入你已知的内容。
  3. 创建或更新页面之后: 同步到 gbrain:
    gbrain sync --no-pull --no-embed
    
  4. 不要阻塞对话。 实体检测与补充应与回应同时进行,而非先于回应。用户不应为了获得答案而等待大脑写入完成。
什么算作显著
  • 用户交互或讨论的人物(而非随意提及)
  • 与用户工作或兴趣相关的公司
  • 用户提及或创造的概念或框架
  • 用户自己的原创思考(想法、论点、观察)——价值最高
  • 完整的显著性门槛参见 skills/_brain-filing-rules.md
从用户自身思考中捕获什么

原创思考是最有价值的信号。请记录准确措辞——用户的语言本身就是洞见。不要转述。

  • 新颖的观察或论点
  • 框架、心智模型、启发式方法
  • 他人忽略的观点之间的联系
  • 附带理由的反向立场
  • 对外部刺激的强烈反应(触发原因及原因分析)

媒体工作流

用户接触到的内容应当被记录到大脑中。按主要主题归档,而非按格式归档(参见 skills/_brain-filing-rules.md)。

文章与网页内容

输入: 用户分享的 URL,或对话中提及的文章。

流程:

  1. 获取内容(web_fetch 或同类工具)
  2. 提取:标题、作者、发布机构、日期、全文
  3. 总结:执行摘要 + 主要论点(而非复述)
  4. 提取实体:人物、公司、提及的概念
  5. 保存原始来源以便追溯(参见下方“原始来源保存”)
  6. 为用户做分析:不要只是总结。结合你对用户的了解,指出什么有趣,标注关联、矛盾与内容机会。

写入位置: 根据归档规则写入相应目录(关于人物 -> people/,关于公司 -> companies/,可复用框架 -> concepts/,原始数据 -> sources/)

视频与播客

输入: URL(YouTube、播客等)或本地音频/视频文件。

流程:

  1. 获取转录文本——如可能,进行说话人区分(如 Diarize.io 等服务可提供带说话人标签的词级时间戳)
  2. 保存原始转录文本(同时保存 JSON 和便于阅读的 TXT)
  3. 分析:执行摘要、关键观点、带说话人归属的关键引语、值得注意的故事/轶事、提及的人物和公司
  4. 提取并交叉引用所有提及的实体
  5. 硬性规则: 每个视频/播客的大脑页面都必须链接到原始的说话人区分转录文本。没有转录链接的页面视为不完整。

写入位置: media/videos/ 或 media/podcasts/,并回链至所有实体。

质量标准:

  • 引人注目的标题(而非“本视频讨论了……”)
  • 能让人想观看或收听的执行摘要
  • “关键观点”应为真正的洞见,而非主题标签
  • 逐字引语需标注真实说话人姓名(而非“speaker_0”)
  • 所有实体均已提取,附带上下文并回链
PDF 与文档

输入: 文件路径或 URL。

流程:

  1. 提取文本(若为扫描件或图片型 PDF,则进行 OCR)
  2. 保存原始来源以便追溯
  3. 总结:执行摘要 + 关键章节 + 值得注意的数据
  4. 提取实体
  5. 从实体页面进行交叉引用

写入位置: 按归档规则(按主要主题归档,而非按格式归档)。

截图与图片

输入: 图片文件。

处理流程:

  1. 分析内容(文字较多的图片用 OCR,照片则生成描述)
  2. 若为推文截图:提取文本、作者、日期,转交社交媒体工作流
  3. 若为文章截图:提取文本,转交文章工作流
  4. 若为数据或图表:提取数据点,描述发现

写入位置: 视内容而定,转交上述相应工作流。

会议记录

输入: 会议录制服务生成的转录稿,或手动笔记。

处理流程:

  1. 获取完整转录稿(以此为事实依据,AI 摘要的可信度为中低)
  2. 保存原始转录稿以备溯源
  3. 在分隔线上方撰写会议页面(包含你的分析),分隔线下方放置原始转录稿
  4. 实体传播(强制): 对每位参会人和所讨论的每家公司:
    • 若出现新信息,更新其 brain 页面的状态(State)部分
    • 在其时间线(Timeline)中追加条目,并链接到会议页面
    • 若人员或公司较为重要但尚无页面,则创建页面
  5. 只有在所有实体页面都更新完毕后,会议才算完整录入

写入位置: meetings/YYYY-MM-DD-short-description.md

优质会议页面的标准:

  • 揭示真正的核心问题,而非罗列要点
  • 关联已有的 brain 页面(人员、公司、交易)
  • 标明发生了哪些变化(状态、决策、新信息)
  • 指出存在的张力或未说出口的内容
  • 捕捉真实的互动动态,而非表演式的总结
社交媒体内容

输入: 推文、串文或社交媒体帖子。

处理流程:

  1. 获取完整内容(串文、引用推文、上下文)
  2. 若含图片:通过视觉模型进行 OCR,提取完整文本
  3. 总结:在说什么、为何重要、涉及哪些人或实体
  4. 提取实体并更新 brain 页面
  5. 附上原帖的直接链接(引用必备)

写入位置: media/x/ 用于每日汇总,若帖子主要涉及某人或某公司,则写入对应的实体目录。

原始素材保存

每条录入的内容都必须保留其原始素材以备溯源。

使用 gbrain files upload-raw 进行自动大小分流:

gbrain files upload-raw <file> --page <page-slug> --type <type>
  • < 100 MB 的文本或 PDF:保存在 git 中(brain 仓库的 .raw/ 旁路目录)
  • >= 100 MB 或媒体文件(视频、音频、图片):通过 TUS 断点续传上传至云存储,并在 brain 仓库中留下 .redirect.yaml 指针文件

.redirect.yaml 指针文件格式:

target: supabase://brain-files/page-slug/filename.mp4
bucket: brain-files
storage_path: page-slug/filename.mp4
size: 524288000
size_human: 500 MB
hash: sha256:abc123...
mime: video/mp4
uploaded: 2026-04-11T...
type: transcript

访问已保存的文件:

  • gbrain files signed-url <storage-path> —— 生成有效期 1 小时的签名 URL,用于查看或分享
  • gbrain files restore <dir> —— 从云存储下载回本地

使用 gbrain 中的 put_raw_data 存储原始 API 响应及元数据(JSON 格式,非二进制)。

批量处理前先测试

处理多个条目时(如批量视频录入、批量会议处理等):

  1. 先在 3-5 个条目上测试。 如有测试模式,请使用测试模式运行。
  2. 阅读实际输出。 质量是否达标?标题是否有吸引力(而非"本视频讨论了……")?实体是否已提取并回链?格式是否整洁?
  3. 修正方法或技能本身的问题,而非逐个打补丁。
  4. 确认无误后再批量执行,并进行限速,每处理 5-10 个条目提交一次。

先测试 3 个条目的边际成本几乎为零,而清理 100 个错误页面的代价却极其高昂。

质量规则

  • compiled_truth 中的执行摘要必须更新,而不能只追加时间线
  • 状态(State)部分是重写而非追加,只保留当前的最佳理解
  • 时间线条目按时间倒序排列(最新的在前)
  • 每位提及的人员或公司,若足够重要,都应建立页面(参见归档规则)
  • 链接类型:knows、works_at、invested_in、founded、met_at、discussed
  • 来源标注:每条时间线条目都须包含 [Source: ...] 引用
  • 反向链接:每次提及实体都必须建立反向链接(铁律)
  • 归档:按主要主题归档,而非按格式或来源归档(参见归档规则)

失败处理

对于任何 gbrain 错误 code、退出码、[AGENT] 块或提示块,请遵循 Agent 操作协议。本技能特有的规则如下:

  • 本技能路由到的子技能失败时:报告是哪一个子技能以及失败原因,并依据该子技能自身的失败指引处理;不要悄悄改走通用的页面写入。
  • put_page 返回 write_pending(退出码 10)或 revision_conflict 时:轮询 gbrain write-request <request_id>,或重新读取并合并;绝不要写入重复页面。
  • gbrain files upload-raw 因大小或路径被拒绝时:存储一个指针,并告知用户原始文件未上传。

反模式

  • 追加到 State 小节。 每次更新时,State 都应以当前最佳理解重写。只追加的 State 小节会逐渐过时并自相矛盾。
  • 导入时不建立反向链接。 未链接的提及意味着知识库是断裂的。每个被提及的实体,都必须有从其页面指向提及它的页面的反向链接。
  • 跳过原始来源保存。 每个导入的条目都必须保存其原始来源。没有出处信息的知识库页面无法验证。
  • 未经抽样测试就进行批量处理。 先在 3-5 个条目上测试。应通过修正处理方法来解决质量问题,而不是逐个打补丁。
  • 改写用户的原始思路。 用户的原话本身就是洞见。对于观点、论点和框架,应逐字保留其措辞。

输出格式

INGESTED: [title]
==================

Page: [slug]
Type: [person / company / meeting / media / concept]
Source: [source description]

Entities detected: N
- [entity] -> [created / updated] ([slug])

Back-links created: N
Timeline entries: N
Raw source: [preserved at path / uploaded to cloud]

使用的工具

  • 从 gbrain 读取页面(get_page)
  • 在 gbrain 中存储/更新页面(put_page)
  • 在 gbrain 中添加时间线条目(add_timeline_entry)
  • 在 gbrain 中关联实体(add_link)
  • 列出页面的标签(get_tags)
  • 在 gbrain 中为页面添加标签(add_tag)
  • 在 gbrain 中存储原始数据(put_raw_data)
  • 检查 gbrain 中的反向链接(get_backlinks)

评论

支持 Markdown