본 시스템은 사용자가 입력한 텍스트(AI 생성 텍스트 포함)와 업로드한 샘플 .docx 문서를 분석하여, 샘플 문서의 서식(스타일, 글꼴, 여백, 헤더/푸터 등)을 동일하게 적용한 새로운 .docx 문서를 생성하는 에이전트입니다. 단순한 텍스트 병합을 넘어, LangGraph를 활용하여 상태 기반(Stateful)의 복잡한 에이전트 워크플로우를 구성하며, 업로드된 샘플 문서는 재사용 가능한 스킬(Skill)로 변환되어 지속적으로 관리됩니다.
이 시스템은 기존의 노트 데이터를 AI가 검색하고 활용하는 [[Vectorize]] 아키텍처와 유사하게, 문서 포맷팅이라는 특정 작업을 토큰 기반의 API 호출과 파일 처리 파이프라인으로 분리하여 처리합니다. 또한, Claude Code와 노트 시스템이 연동되었던 [[Mcp 연동 방법]]처럼, 에이전트가 외부 도구(문서 파서, 스타일 라이브러리)를 유기적으로 호출하여 최종 결과물을 도출하는 구조를 목표로 합니다.
LangGraph를 사용하여 각 단계를 명확한 노드(Node)와 엣지(Edge)로 정의합니다. 상태(State) 그래프를 통해 문서 생성 과정의 데이터 흐름을 추적하고, 오류 발생 시 특정 노드로 재진입할 수 있는 유연성을 확보합니다.
raw_text: 사용자가 입력한 원본 텍스트uploadedfilepath: 업로드된 샘플 docx 파일 경로parsed_styles: 샘플 문서에서 추출된 스타일 정보 (스킬 데이터)structured_content: 원본 텍스트를 문서 구조에 맞게 분해한 데이터finaldocxbuffer: 최종 생성된 docx 파일 바이트error: 예외 발생 시 에러 로그.docx 파일을 분석하여 스타일 정보(폰트, 크기, 정렬, 문단 간격, 표 스타일 등)를 추출합니다.python-docx 등의 라이브러리를 사용해 최종 문서를 생성합니다.File Parser로 이동하고, 기존 스킬을 선택한 경우 Skill Manager에서 바로 데이터를 로드하도록 분기합니다.업로드된 샘플 문서를 일회성으로 사용하는 것이 아니라, 재사용 가능한 '포맷팅 스킬'로 관리합니다. 이는 [[Hive note 소개]]에서 언급된 노트의 메타데이터 관리 및 확장성 개념과 맥락을 같이합니다.
{
"skill*id": "skill*corporate*report*v2",
"name": "기업 공시용 보고서 포맷",
"style_data": {
"heading_1": { "font": "NanumSquare", "size": 18, "bold": true, "color": "#1F4E79" },
"normal": { "font": "맑은 고딕", "size": 10, "line_spacing": 1.5 },
"table_style": "Grid Table 4 Accent 1"
},
"created_at": "2023-10-27T10:00:00Z"
}
에이전트의 실행 환경은 서버리스 또는 컨테이너 환경에서 구동되며, 문서 처리를 위한 안정적인 스토리지와 연동되어야 합니다.
POST /api/format-document: 텍스트와 샘플 파일(또는 스킬 ID)을 수신하여 LangGraph 워크플로우를 트리거합니다.GET /api/skills: 등록된 포맷팅 스킬 목록을 반환합니다.GET /api/download/{task_id}: 처리가 완료된 최종 .docx 파일을 다운로드합니다.Document Generator Node 내부에서 python-docx 라이브러리를 래핑(Wrapping)하여 사용합니다.docx 객체의 addparagraph*, *addheading, add_table 등의 메서드에 매핑합니다. 이때 미리 정의된 스킬의 스타일 속성을 주입합니다.사용자가 "AI가 작성한 시장 분석 보고서 텍스트"와 "사내 표준 양식 docx 파일"을 업로드했을 때의 처리 흐름은 다음과 같습니다.
parsed_styles 상태에 저장합니다..docx 파일로 물리적으로 작성합니다.이 설계를 통해 단순한 텍스트 복사-붙여넣기가 아닌, 문서의 맥락과 서식을 이해하고 재사용 가능한 자산(스킬)으로 축적하는 지능형 문서 자동화 시스템을 구축할 수 있습니다.