섹션별 상세
markdown-parser는 LLM의 스트리밍 출력을 처리하기 위해 설계된 증분형 마크다운 파서이다. stream: true 옵션을 사용하면 입력 데이터가 늘어남에 따라 내부 상태를 유지하며, 완전히 닫히고 안정화된 블록 노드만 순차적으로 배출한다.
javascript
// Parse with streaming mode (for incremental content)
const partialNodes = parser.parse("# Hello World
This", { stream: true });
// Emits heading, but not the paragraph (still open)
// Continue parsing as more content arrives
const moreNodes = parser.parse(" is a paragraph
This is another paragraph.", { stream: true });
// Emits the paragraph
const finalNodes = parser.parse("", { stream: false })
// Closes anything still open and emits remaining blocksLLM 스트리밍 응답 처리를 위한 증분 파싱 모드 사용 예시
CommonMark 사양을 완벽하게 준수하며 GitHub Flavored Markdown(GFM) 테이블도 지원한다. 헤딩, 단락, 코드 블록, 리스트 등 다양한 블록 노드와 강조, 링크, 이미지 등 인라인 노드를 모두 구조화된 타입 트리로 변환한다.
구현 방식은 commonmark.js와 유사한 구조를 가지지만, 스트리밍 모드에서 어떤 라인을 파싱할지 결정하는 로직에서 차별화된다. 특히 링크 참조 정의가 나중에 도착할 수 있는 상황을 고려하여 스트리밍 시의 참조 해결 로직을 포함하고 있다.
사용법은 간단하여 MarkdownParser 인스턴스를 생성한 후 parse 메서드에 텍스트와 스트림 옵션을 전달하면 된다. 스트리밍이 끝나면 stream: false로 호출하여 남아있는 모든 블록을 최종적으로 확정하고 출력한다.
javascript
import { MarkdownParser } from "markdown-parser";
const parser = new MarkdownParser();
// Parse complete markdown
const nodes = parser.parse("# Hello World
This is a paragraph.");기본적인 전체 마크다운 텍스트 파싱 예시
용어 해설
- 증분 파싱(Incremental Parsing)
- — 데이터 전체가 도착할 때까지 기다리지 않고, 입력되는 조각마다 즉시 분석하여 결과를 도출하는 방식이다. LLM의 스트리밍 응답처럼 실시간으로 길어지는 텍스트를 처리할 때 필수적이다.
- 커먼마크(CommonMark)
- — 마크다운 문법의 모호성을 제거하고 표준화하기 위해 만들어진 엄격한 사양이다. 다양한 파서와 플랫폼 간에 동일한 마크다운 입력에 대해 일관된 HTML 출력을 보장한다.
- 추상 구문 트리(AST (Abstract Syntax Tree))
- — 텍스트의 구조를 트리 형태로 나타낸 데이터 구조이다. 마크다운 파서는 일반 텍스트를 헤딩, 리스트, 코드 블록 등의 노드로 구성된 AST로 변환하여 프로그램이 이해하기 쉽게 만든다.
기술
- JavaScript
- TypeScript
- npm
- CommonMark
활용 사례
- LLM 챗봇 실시간 렌더링
- 스트리밍 마크다운 에디터
- 구조화된 마크다운 데이터 추출
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 07.수집 2026. 03. 07.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.