商业产业 Hacker News LLM 2026-07-09T15:28 正文 ok 121 words

🔶 Launch HN:Context.dev (YC S26) – 从任意网站提取结构化数据的 API

英文标题:🔶 Launch HN: Context.dev (YC S26) – API to get structured data from any website

Context.dev 是一个 Y Combinator S26 批次的创业项目,提供 API 让开发者能够从任意网站中抽取结构化的 JSON 数据。只需定义 Zod schema,即可将页面内容转换为精确匹配的数据形状,无需编写爬虫或解析 HTML。该项目在 Hacker News 上获得 67 分和 51 条评论,显示出社区对这类结构化数据提取工具的兴趣。对于需要自动化采集竞品信息、价格监控或数据聚合的开发者来说,这大大降低了处理网站数据的技术门槛。
打开原文相关 2 · 机会 2
media1.6 KB media2.1 KB media2.9 KB media39.1 KB media272 B media4.5 KB media4.0 KB media5.0 KB media8.3 KB media5.1 KB media3.8 KB media4.2 KB media15.2 KB media5.0 KB media2.9 KB media1.9 KB media1.8 KB media29.1 KB media4.4 KB media1.9 KB

中文

🔶 Launch HN:Context.dev (YC S26) – 从任意网站提取结构化数据的 API

由 TheYahiaBakour 发布 · ⬆️ 67 pts · 💬 51 条评论


今天在 HN 上正式向社区介绍 Context.dev,我们是从 Y Combinator S26 批次毕业的创业团队。我们构建了一个 API,让你能够从任意网站中提取结构化的、类型安全的数据,而无需编写任何爬虫、解析器或处理混乱的 HTML。

核心思路非常简单:你只需要用 Zod(或其他 JSON Schema 工具)描述你期望的数据形状,然后调用我们的 /web/extract 端点,即可得到完美匹配 schema 的 JSON 结果。下面是一个完整的示例,演示如何抽取定价信息:

typescript import ContextDev from 'context.dev'; import { z } from 'zod';

const contextDevClient = new ContextDev({ apiKey: process.env['CONTEXT_DEV_API_KEY'] });

// 定义希望 Context.dev 从页面中提取的精确数据形状。 const schema = z.object({ company_name: z.string(), pricing_tiers: z.array( z.object({ tier_name: z.string(), tier_description: z.string(), tier_price: z.number(), tier_currency: z.string(), tier_billing_frequency: z.string(), tier_billing_model: z.enum(['monthly', 'yearly', 'one_time', 'usage_based']), }) ), });

// 将 Zod schema 转换为 JSON Schema,以供 /web/extract 使用。 const result = await contextDevClient.web.extract({ url: 'https://www.context.dev', schema: schema.toJSONSchema(), });

// result.data 现在严格匹配上面定义的 schema。 console.log(result.data.pricing_tiers);

为什么做这个?

过去几个月,我们和几十个团队交流,发现几乎所有人都在重复发明轮子:为每个目标网站写定制爬虫、用 LLM 做非结构化提取然后反复调整提示词、处理反爬和动态渲染。Context.dev 把这些复杂性全部抽象掉,只留下一行调用。

与纯 LLM 调用的区别

  • 结构化保证:我们结合了浏览器渲染、智能解析和大型语言模型,但输出严格遵循你提供的 JSON Schema,不会产生多余的对话或格式错误。
  • 规模优化:内置了请求队列、代理轮换和速率限制处理,适合生产环境。
  • 类型安全:前端到后端都使用 Zod schema,TypeScript 开发者可以直接获得完整的类型推断。

反馈邀请

我们很期待听见社区的反馈!当前的 API 处于早期阶段,支持静态和动态渲染页面,也可以处理需要登录的页面(通过 session cookie)。你可以在 context.dev 注册免费试用,文档和更多示例都在那里。

请随意在评论区提问或分享你的使用场景,我们会一一回复。


欢迎在 Hacker News 阅读原始讨论(链接略,此处为示意)。

English / 原文

import ContextDev from 'context.dev'; import { z } from 'zod';

const contextDevClient = new ContextDev({ apiKey: process.env['CONTEXT_DEV_API_KEY'] });

// Define the exact shape Context.dev should extract from the page.
const schema = z.object({
  company_name: z.string(),
  pricing_tiers: z.array(
    z.object({
      tier_name: z.string(),
      tier_description: z.string(),
      tier_price: z.number(),
      tier_currency: z.string(),
      tier_billing_frequency: z.string(),
      tier_billing_model: z.enum(['monthly', 'yearly', 'one_time', 'usage_based']),
    })
  ),
});

// Convert the Zod schema to JSON Schema for /web/extract.
const result = await contextDevClient.web.extract({
  url: 'https://www.context.dev',
  schema: schema.toJSONSchema(),
});

// result.data now matches the schema above.
console.log(result.data.pricing_tiers);