浏览器扩展
Agent 只能帮助它知道的事情。对话和记忆能覆盖很多,但有一个巨大的盲区:你现在正在阅读的内容。
Context Bro 是一个独立的 Chrome 扩展,用于弥补这个鸿沟。它从网页中提取内容,通过 webhook 端点 发送到 Agent 的事件流。
Context Bro 的功能
Section titled “Context Bro 的功能”| 功能 | 工作方式 |
|---|---|
| 手动 Clip | 点击扩展图标或按 Ctrl+Shift+K 分享当前页面 |
| 选区分享 | 选中文本 → 浮动按钮或右键 → 仅分享选中部分 |
| 定时分享 | 配置域名白名单 + 间隔 → 自动分享你正在浏览的页面 |
| 直播适配器 | Twitch 和 YouTube 适配器实时捕获聊天、打赏和直播信息 |
| 模板引擎 | 精确控制提取哪些数据以及 JSON payload 的结构 |
Context Bro 不是 AnySoul 浏览器扩展。它是一个独立的、低权限的扩展,仅读取你显式允许的页面:
| AnySoul 扩展 | Context Bro | |
|---|---|---|
| 核心行为 | Agent 驱动浏览器(打开标签页、执行搜索) | 你分享正在阅读的内容 |
| 权限 | 广泛(<all_urls>) | 保守(仅白名单) |
| 信任等级 | 高 — Agent 可查看任意页面 | 低 — 你控制分享什么 |
| 安装门槛 | 需要信任 Agent 自动化 | Web Clipper 心智模型 |
1. 创建 Webhook 端点
Section titled “1. 创建 Webhook 端点”Context Bro 通过标准 webhook 向 Agent 发送数据。先在 AnySoul 中创建一个:
- 打开 Agent 设置 → Webhooks
- 点击 创建 Webhook,输入名称(如
context-bro) - 选择
api_key鉴权模式 - 复制 端点 URL 和 API key
2. 安装 Context Bro
Section titled “2. 安装 Context Bro”从 Chrome 网上应用店安装 Context Bro,然后打开其选项页面。
3. 添加端点
Section titled “3. 添加端点”在 Context Bro 选项 → Endpoints 中:
- 点击 Add Endpoint
- 输入名称(如
My Soul) - 粘贴 webhook URL:
https://api.anysoul.ai/api/ingest/webhook/<webhookId>
- 添加自定义 header:
X-API-Key→ 你的 API key - 点击 Save
4. 分享页面
Section titled “4. 分享页面”打开任意网页,点击 Context Bro 图标,然后点击 Share。页面内容被提取,通过活跃模板编译,POST 到你的 webhook 端点。Agent 会看到一个新事件:
- [02-22 14:30] [evt_cb001] context-bro/stackoverflow.com (page_context): How to fix lifetime errors in Rust与 AnySoul 的连接方式
Section titled “与 AnySoul 的连接方式”Context Bro 使用与其他集成相同的 webhook ingest 端点,不需要特殊 API:
Context Bro 扩展 │ │ 提取页面 → 模板编译 → JSON payload │ ▼POST /api/ingest/webhook/<webhookId> │ │ Webhook 映射引擎 → 标准 Event │ ▼Agent 事件流webhook 映射编辑器 将收到的 JSON 转换为事件字段。Context Bro 的默认模板生成的 payload 可以直接与默认 webhook 映射配合使用。
最佳使用场景
Section titled “最佳使用场景”知识工作者的 Web Clipper
Section titled “知识工作者的 Web Clipper”最常见的配置:分享你一天中阅读的文章、文档和代码。
示例场景——学习 Rust:
- 你浏览 Rust Book、Stack Overflow 和 GitHub Issues
- Context Bro 每 15 分钟自动分享页面(白名单:
doc.rust-lang.org、stackoverflow.com、github.com) - 你选中一段令人困惑的代码 →
Ctrl+Shift+K→ 即时分享 - Agent 注意到你已经阅读了一小时关于 lifetime 的内容 → 发送消息在你的上下文中解释 elision 规则
- Agent 保存「Rust 学习进度」记忆节点,链接今天的主题
为什么有效: Agent 已经知道你想学 Rust(来自对话)。Context Bro 告诉它 你现在正在读什么 ——弥合了意图与行动之间的鸿沟。
使用 Social Stream Ninja 的直播场景
Section titled “使用 Social Stream Ninja 的直播场景”Social Stream Ninja(SSN)是 Steve Seguin 开发的浏览器扩展,聚合来自 120+ 平台(YouTube、Twitch、TikTok、Facebook、Discord 等)的直播聊天。它是需要跨平台聊天集成的主播的首选工具。
SSN 可以直接将聊天事件转发到 AnySoul webhook——无需 Context Bro:
SSN 提供的能力:
| 功能 | 描述 |
|---|---|
| 120+ 平台支持 | YouTube、Twitch、TikTok、Facebook、Kick、Discord 等 |
| 消息归一化 | 不同平台统一为标准 JSON 格式 |
| 自定义触发器 | 按内容、用户角色、打赏金额、正则表达式匹配消息 |
| 自定义动作 | HTTP POST、WebSocket 推送、OBS 叠加层、TTS、MIDI 信号 |
| 实时处理 | 基于 MutationObserver 的捕获 + 去重和批处理 |
触发器 → 动作示例:
| 触发器 | 动作 | Agent 用途 |
|---|---|---|
| 任意聊天消息 | POST 到 AnySoul webhook | Agent 跟踪直播聊天 |
| Super Chat ≥ $5 | POST 到 webhook | Agent 追踪社区互动 |
消息匹配 !question * | POST 到 webhook | Agent 回答观众提问 |
| 新订阅者 | POST 到 webhook | Agent 记录社区增长 |
| Raid 事件 | POST 到 webhook | Agent 记录频道间互动 |
与 AnySoul 的配置步骤:
- 在 Agent 设置 → Webhooks 中创建
api_key鉴权的 webhook 端点 - 在 Social Stream Ninja 中配置 webhook URL 并将 key 包含在 JSON body 中(SSN 可能不支持自定义 header —— 参见 Webhook:接入 Social Stream Ninja)
- 配置映射以提取
platform、username、message和event_type
Agent 将看到实时消息流:
- [20:00] [evt_ssn01] youtube/alice (message): That explanation was so clear!- [20:01] [evt_ssn02] twitch/bob (donation): $10 — "Love the content, keep it up!"- [20:02] [evt_ssn03] youtube/carol (membership): New member joinedContext Bro vs. Social Stream Ninja:
| Context Bro | Social Stream Ninja | |
|---|---|---|
| 聚焦领域 | 静态网页 + Twitch/YouTube | 120+ 直播/社交平台 |
| 核心优势 | 页面内容提取(Defuddle + 模板引擎) | 跨平台聊天聚合 + 触发器 |
| 定时分享 | 有(Chrome Alarm + 白名单) | 无 |
| 模板引擎 | 有(50+ 过滤器、CSS 选择器、Schema.org) | 无 |
| 自定义触发器/动作 | 无(Agent 自行决定如何响应) | 有(正则、打赏阈值、角色筛选) |
| 最适用于 | 知识工作、研究、学习 | 直播、社区管理 |
两个工具共享同一个洞察:浏览器是数字生活的中心,其中的内容是 AI Agent 最有价值的上下文来源。 SSN 将这个上下文变成主播自动化,Context Bro 将它变成 Agent 的感知。
你可以同时使用两者——SSN 负责全平台的直播聊天聚合,Context Bro 负责其他一切(文章、文档、代码、选区)。
Context Bro 包含从 Obsidian Web Clipper(MIT)抽取的模板引擎。模板控制发送到端点的 JSON payload 结构。
默认模板:
{ "title": "{{title}}", "url": "{{url}}", "content": "{{content}}", "author": "{{author}}", "published": "{{published}}", "domain": "{{domain}}", "description": "{{description}}", "wordCount": "{{wordCount}}", "clippedAt": "{{date}} {{time}}"}你可以使用触发器模式(如 github.com/*/pull/* 用于 PR)创建站点专用模板,并使用 CSS 选择器变量({{selector:.classname}})或 Schema.org 变量({{schema:@Article:author}})。
完整的模板参考请查看 Context Bro 文档。
为你经常访问的域名配置自动分享:
- 打开 Context Bro 选项 → 白名单
- 添加域名(如
github.com、*.reddit.com、docs.python.org) - 打开 选项 → 定时
- 设置间隔(5 分钟 ~ 2 小时)和模式:
- 聚焦标签页 — 仅分享你正在查看的活跃标签页
- 白名单全部 — 分享所有匹配白名单的已打开标签页
页面通过内容哈希去重——如果页面自上次分享以来没有变化,则跳过。
- Webhook — webhook 端点的工作方式
- API 轮询 — 基于浏览器的 pull 接入
- 事件流概念
- Context Bro 文档 — 扩展的完整文档