핵심 요약
웹 데이터 추출 과정에서 발생하는 복잡한 HTML 파싱과 봇 차단 문제는 전통적인 스크래핑의 주요 병목이다. Lightfeed Extractor는 Playwright 기반의 브라우저 자동화와 LangChain 호환 LLM을 결합하여 이 문제를 해결한다. 사용자는 Zod 스키마를 정의하고 자연어 프롬프트를 입력함으로써 웹 페이지에서 즉시 구조화된 JSON 데이터를 얻을 수 있다. 특히 손상된 JSON 출력을 복구하는 기능과 토큰 효율을 위한 본문 추출 옵션을 제공하여 프로덕션 환경에서의 안정성을 높였다.
배경
TypeScript/JavaScript 기본 지식, Playwright 브라우저 자동화에 대한 이해, OpenAI, Gemini 등 LLM API 키, Zod 라이브러리 사용법
대상 독자
프로덕션 환경에서 웹 데이터 추출 파이프라인을 구축하는 TypeScript 개발자 및 AI 엔지니어
의미 / 영향
이 라이브러리는 LLM을 활용한 데이터 추출의 실용성을 극대화하여 기존의 복잡한 스크래핑 코드를 자연어 프롬프트와 스키마 정의로 대체한다. 특히 JSON 복구와 토큰 최적화 기능은 소규모 팀도 대규모 웹 데이터를 저비용으로 안정적으로 수집할 수 있게 한다.
섹션별 상세
const productCatalogSchema = z.object({
products: z.array(
z.object({
name: z.string().describe("Product name or title"),
brand: z.string().optional().describe("Brand name"),
price: z.number().describe("Current price"),
productUrl: z.string().url().describe("Link to product detail page"),
})
).describe("List of bread and bakery products"),
});
const result = await extract({
llm: new ChatGoogleGenerativeAI({ model: "gemini-2.5-flash" }),
content: html,
format: ContentFormat.HTML,
schema: productCatalogSchema,
});Zod 스키마를 정의하고 LLM을 사용하여 HTML에서 구조화된 상품 데이터를 추출하는 기본 예시
const agent = new BrowserAgent({ browserProvider: "Local" });
const page = await agent.newPage();
await page.goto("https://amazon.com");
await page.ai("Search for 'organic coffee' and go to the second page of results");
const html = await page.content();
const result = await extract({
llm: myLLM,
content: html,
schema: mySchema,
prompt: "Extract all product listings from the search results",
});Browser Agent를 사용하여 자연어 명령으로 웹을 탐색한 후 데이터를 추출하는 예시
실무 Takeaway
- 이커머스 가격 비교 시스템 구축 시 Zod 스키마와 LLM을 결합하면 복잡한 셀렉터 작성 없이도 정확한 상품 정보를 JSON 형태로 추출할 수 있다.
- 데이터 파이프라인의 안정성을 위해 safeSanitizedParser 기능을 활용하여 LLM의 불안정한 출력을 실시간으로 보정하고 런타임 에러를 방지해야 한다.
- API 비용 절감을 위해 extractMainHtml 옵션을 활성화하여 불필요한 HTML 태그를 사전에 제거하고 핵심 컨텍스트만 LLM에 입력하는 것이 효율적이다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.