LLM 마크다운을 깨지지 않게 채팅 채널로
mdwire 는 마크다운을 완성된 화면으로 바꾸지 않습니다. 에이전트가 쓴 마크다운을 채널에 맞게 다듬어 넘깁니다. 문제가 되는 곳을 고쳐 채널이 받는 문법으로 바꾼 뒤 길이 제한 안에서 나눕니다. 화면에 렌더링하는 일은 채널이 맡습니다.
npm install @minjun0219/mdwire
LLM 마크다운 → 정규화 → 채널별 렌더링 → 안전한 분할 → 전송- 정규화. 에이전트가 쓴 마크다운은 표준 마크다운 변환으로는 제대로 표현되지 않을 수 있습니다. 짝 없는
**, 줄을 접어 쓴 글에서 줄을 넘는 강조, 닫히지 않은 코드펜스가 흔합니다. 렌더링하기 전에 고칩니다. - 렌더링. 채널이 받는 문법으로 출력합니다. 텔레그램 HTML 은 태그 아홉 개만 받고, 슬랙
markdown_text는 표준 마크다운을 그대로 받습니다. - 분할. 채널의 길이 제한을 지키되 마크업 한가운데를 자르지 않습니다. 스트리밍할 때도 청크
경계가
**굵게**안에 걸리면 안 됩니다.
답변 하나, 채널 다섯
모델이 쓴 실제 봇 답변 원문과 mdwire 가 채널마다 보내는 결과입니다.
**상품 상세 화면**은 `web-app` 에 있어요. **첫 줄 설명이 둘째 줄까지** 이어져요. **영향 범위: 세 화면 예시: ```ts const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] |
- 조사 옆 굵게
- 줄을 넘는 굵게
- 닫히지 않은 굵게
- 닫히지 않은 코드펜스
<b>상품 상세 화면</b>은 <code>web-app</code> 에 있어요. <b>첫 줄 설명이 둘째 줄까지</b> 이어져요. <b>영향 범위: 세 화면 예시:</b> <pre><code class="language-ts">const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] |</code></pre>
telegram-html
**상품 상세 화면**은 `web-app` 에 있어요. **첫 줄 설명이 둘째 줄까지** 이어져요. **영향 범위: 세 화면 예시:** ```ts const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] | ```
slack-markdown
**상품 상세 화면**은 `web-app` 에 있어요. **첫 줄 설명이 둘째 줄까지** 이어져요. **영향 범위: 세 화면 예시:** ```ts const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] | ```
github-markdown
**상품 상세 화면**은 `web-app` 에 있어요. **첫 줄 설명이** **둘째 줄까지** 이어져요. **영향 범위: 세 화면** **예시:** ```ts const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] | ```
notion-markdown
상품 상세 화면은 web-app 에 있어요. 첫 줄 설명이 둘째 줄까지 이어져요. 영향 범위: 세 화면 예시: const a = 1; | 화면 | 경로 | |---|---| | 상품 상세 | /items/[id] |
plain
테스트 케이스: chat-bot-answer
왜 또 만들었나
기존 도구에서 실제로 확인한 빈틈은 세 가지입니다. 줄을 넘는 강조가 흔합니다. 한국어에서 자주 쓰는 표기는 마크다운과 부딪힙니다. 채팅 채널용 변환기는 스트리밍을 고려하지 못합니다. 자세한 내용은 왜 또 만들었나에, 실제로 겪은 고장은 사례에 있습니다.
대상
텔레그램 HTML, 슬랙 markdown_text, GitHub 코멘트(GFM), 노션 페이지, 평문, 브라우저용 HTML 을
지원합니다. Rust 코어, CLI, npm 패키지(WASM), Go 구현이 있고, 모두 같은 테스트 케이스를 통과합니다.
- Telegram
telegram-htmlparse_mode HTML, 태그 아홉 개제한 4,096 - Slack
slack-markdownmarkdown_text, 고치고 나누기만제한 12,000 - GitHub
github-markdown코멘트 · PR 본문(GFM)제한 65,536 - Notion
notion-markdown노션식 마크다운제한 65,536 - Plain text
plain표시를 모두 걷은 평문제한 12,000 - Browser
htmlinnerHTML 에 바로 넣어도 안전제한 없음
데모
데모는 npm 패키지를 브라우저에서 실행합니다.
- Telegram vs. Slack
에이전트 답변 하나를 텔레그램용과 슬랙용으로 나란히 변환합니다. - Streaming
같은 답변을 렌더러 다섯 개에 스트리밍합니다. - 깨진 마크다운 고치기
깨진 에이전트 출력을 고치기 전과 후로 비교합니다.
설치
npm install @minjun0219/mdwire # npm — 번들러, Node, Bun
cargo add mdwire-core # Rust 라이브러리 (`use mdwire::…`)
cargo install mdwire-cli # `mdwire` CLI
go get github.com/minjun0219/mdwire/go@latest
문서에서 네 구현이 함께 쓰는 규칙(Concepts)과 언어별 API 를 볼 수 있습니다: npm, Rust, Go, CLI.