@agent-infra/browser-context

中文文档
0.2.2发布于 2026/01/30TypeScriptESM + CJS构建来源已验证近 30 天下载 2377

获取 AI 代理的浏览器上下文

中文使用文档
文档目录17 节
  1. 特征
  2. 安装
  3. 使用量
  4. 基本内容提取
  5. 手工内容提取
  6. HTML 到 Markdown 转换
  7. 高级 HTML 到标记下选项
  8. API 参考
  9. extractContent(page: Page)
  10. extractWithDefuddle(html: string, url: string, options: Def…
  11. extractWithReadability(page: Page, options?)
  12. toMarkdown(html: string, options?: ToMarkdownOptions)
  13. 内容提取战略
  14. 删除了 HTML 元素
  15. 浏览器兼容性
  16. 许可证
  17. 贷项

浏览器上下文

一个强大的网络内容提取库,从网页中提取干净,可读的内容并转换为Markdown格式. 为浏览器自动化和内容处理工作流程所建.

特征

  • 智能内容提取: 使用高级算法( Defuddle + Mozilla 可读性) 从网页取出主要内容
  • HTML 到 Markdown 转换: 支持 GitHub Flavored Markdown (GFM) 的清洁转换
  • 浏览器集成: 与 Puppeteer 和其他浏览器自动化工具无缝工作
  • 退缩战略: 当初级提取失败时自动返回可读性
  • 可自定义: 可配置标签去除和转换选项

安装

pnpm install @agent-infra/browser-context

使用量

基本内容提取

使用 Puppeteer 从网页中提取干净的内容 :

import { extractContent } from '@agent-infra/browser-context';
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com/article');

// Extract content as Markdown
const result = await extractContent(page);
console.log(result.title); // Article title
console.log(result.content); // Clean Markdown content

await browser.close();

手工内容提取

从 HTML 字符串中提取内容 :

import {
  extractWithDefuddle,
  extractWithReadability,
} from '@agent-infra/browser-context';

// Using Defuddle (primary method)
const result1 = await extractWithDefuddle(htmlString, url, {
  markdown: true,
});

// Using Readability (fallback method)
const result2 = await extractWithReadability(page, {
  markdown: true,
});

HTML 到 Markdown 转换

将 HTML 内容转换为 Markdown :

import { toMarkdown } from '@agent-infra/browser-context';

const html = '<h1>Title</h1><p>Content with <strong>bold</strong> text</p>';
const markdown = toMarkdown(html, {
  gfmExtension: true, // Enable GitHub Flavored Markdown
  codeBlockStyle: 'fenced', // Use fenced code blocks
  headingStyle: 'atx', // Use # style headings
});

console.log(markdown);
// # Title
//
// Content with **bold** text

高级 HTML 到标记下选项

import {
  toMarkdown,
  DEFAULT_TAGS_TO_REMOVE,
} from '@agent-infra/browser-context';

const options = {
  gfmExtension: true,
  codeBlockStyle: 'fenced' as const,
  headingStyle: 'atx' as const,
  emDelimiter: '*',
  strongDelimiter: '**',
  removeTags: [...DEFAULT_TAGS_TO_REMOVE, 'footer', 'nav'], // Remove additional tags
};

const markdown = toMarkdown(htmlContent, options);

API 参考

extractContent(page: Page)

主要提取功能,可以先自动尝试去fuddle,再倒回可读性.

参数:

  • page: Puppeter 页面实例

回返情况:

  • Promise<{title: string, content: string}>: 已提取标题和 Markdown 内容

extractWithDefuddle(html: string, url: string, options: DefuddleOptions)

使用 Difuddle 库提取内容 .

参数:

  • html: HTML 内容字符串
  • url: 页 URL
  • options: 调试配置选项

extractWithReadability(page: Page, options?)

使用 Mozilla 的可读性算法提取内容 .

参数:

  • page: Puppeter 页面实例
  • options.markdown: 是否转换为Markdown( 默认: 假)

toMarkdown(html: string, options?: ToMarkdownOptions)

将 HTML 转换为 Markdown 格式 .

参数:

  • html: HTML 内容字符串
  • options: 转换选项

ToMarkdown 选项 :

  • gfmExtension: 启用 GitHub Flawared Markdown( 默认: 真)
  • removeTags: 要删除的 HTML 标记矩阵
  • codeBlockStyle:"缩出" :"栅"
  • headingStyle: “ sext ” —“ atx ”
  • emDelimiter: 强调划界符
  • strongDelimiter: 重点划定器

内容提取战略

库采用智能双层提取策略:

  1. 小学: 用于准确提取内容的调试库
  2. 倒计时: 调试失败时的 Mozilla 可读性算法

这确保了不同网站结构的最大兼容性和提取成功.

删除了 HTML 元素

默认情况下,在Markdown转换过程中会去除以下HTML元素:

  • script, (中文(简体) ), style, (中文(简体) ), link, (中文(简体) ), head
  • iframe, (中文(简体) ), video, (中文(简体) ), audio, (中文(简体) ), canvas
  • object, (中文(简体) ), embed, (中文(简体) ), noscript
  • aside, (中文(简体) ), dialog

您可以使用 removeTags 选项.

浏览器兼容性

该图书馆旨在与下列机构合作:

  • 傀儡
  • 剧作家
  • 任何提供类似 Page 界面的浏览器自动化工具

许可证

阿帕奇许可证2.0.

贷项

特别感谢启发这一工具包的开源项目:

版本与发布记录

@agent-infra/browser-context 共发布 12 个版本,首次发布于 2025/07/25;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.2latest2026/01/309 个月前
0.2.12025/11/1011 个月前
0.2.02025/11/1011 个月前
0.2.0-alpha.5beta2025/11/061 年前
0.2.0-alpha.42025/11/061 年前
0.2.0-alpha.32025/11/061 年前

关于 @agent-infra/browser-context 的常见问题

@agent-infra/browser-context 是什么?

获取 AI 代理的浏览器上下文

如何安装 @agent-infra/browser-context?

在项目目录运行 npm install @agent-infra/browser-context,或使用 pnpm add / yarn add / bun add。

@agent-infra/browser-context 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@agent-infra/browser-context 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@agent-infra/browser-context 可以商用吗?

@agent-infra/browser-context 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@agent-infra/browser-context 的下载量有多少?

根据 npm 官方下载统计,@agent-infra/browser-context 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,377 次,日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@agent-infra/browser-context 还在维护吗?

最新版本 0.2.2 发布于 2026/01/30(9 个月前);至今共发布 12 个版本,其中过去 12 个月发布了 3 个;首次发布于 2025/07/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。