reopt designreopt design
DocsExploreToolsPricingBuilder
Start
Start
Playground
Core Concepts
Core Concepts
Editor
Editor 개요
Block Types
Streaming
Markdown Conversion
Build & Operate
Skills
App Composition Guide
AI Integration
Authoring Playbook
Custom Blocks
Release Notes
Oopt-editor
reopt designreopt design

A design system for the AI era

  • Docs
  • Pricing
  • Releases
  • GitHub
  • Terms of Service
  • Privacy Policy

© 2026 reopt-ai. All rights reserved.

Editor
  1. Docs
  2. /
  3. Editor
  4. /
  5. Markdown Conversion

Markdown 변환

specToMarkdown와 markdownToSpec으로 EditorSpec ↔ Markdown 양방향 변환. AI 컨텍스트 전달과 마크다운 가져오기에 사용합니다.

reopt design · Updated Jun 26, 2026

시작하기Playground핵심 개념개요블록 타입스트리밍Markdown 변환Skills앱 조합 가이드AI 연동Authoring 플레이북커스텀 블록릴리즈 노트

1. 개요

두 함수 모두 zero-dependency이며 15개 블록 타입을 지원합니다. 인라인 마크(**bold**, *italic* 등)는 텍스트에 그대로 보존됩니다.

EditorSpec  ─── specToMarkdown() ──→  Markdown string
                                                 ↓
             AI 에이전트 컨텍스트 / 파일 내보내기
                                                 ↓
Markdown    ─── markdownToSpec() ──→  EditorSpec

2. specToMarkdown

EditorSpec을 Markdown 문자열로 변환합니다. AI 에이전트에게 현재 문서 상태를 전달할 때 사용합니다.

tsx
import { specToMarkdown } from "@reopt-ai/opt-editor";

const markdown = specToMarkdown(store.getSpec());
// → "# Title\n\nSome **bold** text\n\n| Name | Age |\n| --- | --- |\n| Alice | 30 |"

// AI 에이전트에게 컨텍스트 전달
const messages = [
  { role: "system", content: catalog.prompt() },
  { role: "user", content: `현재 문서:\n${markdown}\n\n이 문서에 결론을 추가해줘.` },
];

3. markdownToSpec

Markdown 문자열을 EditorSpec으로 변환합니다. 기존 마크다운 콘텐츠를 에디터로 가져올 때 사용합니다.

tsx
import { markdownToSpec, createEditorStore } from "@reopt-ai/opt-editor";

const markdown = `# Getting Started

Welcome to the **editor**.

- Feature one
- Feature two

> [!WARNING]
> This is important!
`;

const spec = markdownToSpec(markdown);
const store = createEditorStore(spec);
// → 에디터에 heading + paragraph + list + callout 렌더링

4. 지원 블록 매핑

MarkdownBlock type비고
# ~ ######headinglevel 1-6
plain textparagraph
```lang ... ```codelanguage 자동 감지
---divider
> textquote
> [!TYPE]calloutGitHub admonition 형식
- / 1.list + list-itemordered/unordered
| ... | ... |table familyGFM 테이블
![alt](src)image다음 줄 *caption* 감지

video, file, embed는 마크다운 표준 문법이 없으므로 specToMarkdown에서 링크 형태로 출력되지만, markdownToSpec에서는 일반 링크와 구분이 불가하여 paragraph로 파싱됩니다.

5. 왕복 변환

대부분의 블록은 왕복 변환이 정확합니다. 아래는 테스트로 검증된 왕복 지원 블록입니다:

  • paragraph, heading, code, divider, quote
  • unordered list, ordered list
  • table (GFM separator 포함)
  • image (caption 포함)
  • callout (멀티라인 지원)
  • 인라인 마크 (bold, italic, code, strikethrough, link)
PreviousStreamingRFC 6902 NDJSON patches, StreamCompiler, useEditorStream, retry, and resume.Editor
Go to Streaming
NextSkillsopt-editor 설치, 환경 진단, Plate 마이그레이션, 업그레이드, release용 action skill을 정리합니다.Build & Operate