Fall in IT.

매주 금요일 반복되는 주간보고서, AI에 맡겼다. 본문

Artificial Intelligence

매주 금요일 반복되는 주간보고서, AI에 맡겼다.

D.Y 2026. 2. 22. 16:31
반응형

1. 프로젝트를 시작하게 된 이유

회사에서 소프트웨어 개발자로 일하면서 코드를 작성하는 시간만큼이나 보고서를 쓰는 시간이 많다는 사실을 부정하기 어렵다. 

특히 매주 금요일이면 어김없이 찾아오는 주간보고서는 간단한 듯(?) 보이지만 매번 상당한 시간을 잡아먹는 작업이다.

 

필자가 현재 다니는 회사에서는 매주 금요일마다 주간보고서를 업로드한다.

이번 주에 무엇을 했는지 되돌아보고, 다음 주에는 무엇을 할 것인지 정리하고, 이슈가 있었다면 현황을 기록한다. 이것을 회사 양식에 맞춰 Confluence 페이지로 만들어서 올린다. 단순하지만 번거로운 이 과정을 매주 반복하고 있었다.

 

그런데 돌이켜보면, 이 보고서의 재료는 이미 존재하고 있었다. 필자는 매일 업무를 시작하기 전과 퇴근 전에 Notion에 일일 업무일지를 기록하는데 월요일부터 금요일까지 쓴 (팽팽 놀지 않았다면..) 일일 업무일지들이 바로 그것이다. 재료는 이미 존재하는데 매번 수작업으로 조합하고 있었던 셈이다.

 

이 반복 작업을 자동화할 수 없을까? 하는 생각에서 이 프로젝트가 시작되었다.

(사실.. 금요일에 깜빡하고 주간보고서 작성을 누락했을때 자동화해야겠다고 생각한건 안비밀 :0)

 

2. 해결하고 싶었던 문제

기존의 주간보고서 작성 과정을 정리하면 다음과 같다.

  1. Notion을 열어 이번 주 월요일부터 금요일까지 업무일지를 하나씩 확인한다.
  2. 날짜별로 흩어진 업무 내용을 프로젝트별로 재분류한다.
  3. 중복되거나 유사한 항목을 통합하여 "이번 주 한일"을 정리한다.
  4. 이번 주 업무 흐름을 보고 "다음 주 할일"을 구상한다.
  5. Confluence에 접속하여 회사 템플릿에 맞는 페이지를 생성한다.
  6. 정해진 폴더 구조(연도 > 월 > 주) 아래에 보고서를 배치한다.

이 과정에서 가장 시간이 많이 드는 부분은 2~4번의 "재분류와 요약" 작업이었다. 나머지는 단순 반복이지만 실수가 나기 쉬운 작업이었다. 폴더를 잘못 선택하거나, 날짜 범위를 틀리거나, 양식을 빠뜨리는 일이 종종 발생했다.

 

자동화의 목표는,

"Notion에 이미 기록된 일일 업무일지를 자동으로 수집하고, AI가 요약하고, 회사 양식에 맞춰 Confluence에 올리는 것"

사람이 해야 할 일은 최종 결과물을 확인하고 "올려줘"라고 말하는 것 뿐이다. 

 

3. 전체 아키텍처

완성된 시스템의 데이터 흐름은 다음과 같다.

Notion (일일 업무일지)
    |
    |  Notion MCP -- Claude Desktop에서 날짜 범위로 조회
    v
Claude Desktop
    |  1. 업무일지 5건을 프로젝트별로 재분류
    |  2. "이번 주 한일" 요약 생성
    |  3. "다음 주 할일" AI 추천
    |  4. 사용자에게 초안 제시, 수정 반영
    v
n8n Webhook (POST /webhook/weekly-report)
    |  1. 연도/월/주 폴더 계층 확인 및 생성
    |  2. Markdown → Confluence HTML 변환
    |  3. 회사 템플릿에 맞는 페이지 생성
    v
Confluence
    루트 페이지
      └── 주간보고 2026           (폴더)
            └── 주간보고 2026-02      (폴더)
                  └── 주간보고 2026-02-17 ~ 2026-02-21  (폴더)
                        └── 홍길동 2026-02-17 ~ 02-21   (페이지)

시스템은 네 개의 컴포넌트로 구성되며, 각각의 역할이 명확하게 분리되어 있다.

 

컴포넌트 역할
Claude Desktop 전체 흐름을 조율하는 오케스트레이터. 사용자와 대화하며 Notion 조회, 요약 생성, webhook 호출을 수행한다.
Notion MCP Claude Desktop이 Notion API를 호출할 수 있게 해주는 다리 역할
n8n Workflow Confluence API 호출, 폴더 관리, HTML 변환 등을 처리
Confluence 최종 보고서가 저장되는 목적지

 

4. 왜 이 조합인가?

Claude Desktop

자동화 시스템의 중심에는 Claude Desktop을 두기로 했다. 이유는 간단하다.

이 시스템에서 가장 핵심적인 작업이 "일일 업무일지 5건을 읽고 주간 보고서로 요약하는 것"이고 이것은 LLM이 가장 잘하는 일이기 때문이다. 또 필자는 Claude Code MAX 플랜을 사용하고 있기 때문에 자연스럽게 Claude Desktop을 오케스트레이터로 선택하게 되었다.

 

Claude Desktop은 MCP(Model Context Protocol)를 지원한다. MCP는 AI 모델이 외부 도구를 직접 호출할 수 있게 해주는 프로토콜이다. 덕분에 Claude Desktop이 Notion에서 데이터를 조회하고, 요약을 생성한 뒤, n8n webhook을 호출하는 전체 흐름을 하나의 대화 안에서 처리할 수 있다. 별도의 스크립트를 작성하거나 여러 애플리케이션을 오가며 복사-붙여넣기를 할 필요가 없다.

 

Notion MCP

Notion은 이미 일일 업무일지를 기록하는 용도로 사용하고 있었기 때문에 AI Agent(Claude Desktop)에서 Notion에 기록된 데이터를 조회하기 위해서 Notion이 공식적으로 제공하는 notion MCP를 사용하였다.

 

n8n

Confluence에 페이지를 생성하는 작업은 단순히 API를 한 번 호출하는 것으로 끝나지 않는다. 연도, 월, 주 단위의 폴더 계층 구조를 확인하고, 없으면 생성하고, 그 하위에 보고서 페이지를 만들어야 한다. Markdown을 Confluence 저장 형식(HTML)으로 변환하는 작업도 필요하다.

이 복잡한 로직을 Claude Desktop의 MCP 도구 하나로 처리하기에는 한계가 있었다. 그래서 n8n이라는 워크플로우 자동화 도구를 중간 계층으로 도입했다. n8n의 Code 노드에서 JavaScript로 Confluence API 호출, 폴더 계층 관리, HTML 변환 등의 무거운 작업을 처리하고, Claude Desktop은 webhook을 통해 이 워크플로우를 트리거하기만 하면 된다.

이 구조의 장점은 관심사의 분리에 있다. Claude Desktop은 "무엇을 보고서에 담을 것인가"에 집중하고, n8n은 "어떻게 Confluence에 올릴 것인가"에 집중한다.

 

5. n8n 워크플로우 상세 

n8n 워크플로우는 세 개의 노드로 구성된 단순한 파이프라인이다.

[Webhook Trigger] --> [Process Report (Code)] --> [Respond to Webhook]

 

핵심은 가운데의 Code 노드이다. 이 노드가 수행하는 작업을 순서대로 정리하면 다음과 같다.

 

1단계: 입력 파싱 및 환경 변수 로드

Webhook으로 전달받은 JSON에서 보고서 내용(이번 주 계획, 이번 주 한일, 차주 계획 등)을 추출하고, $env에서 Confluence 자격 증명을 읽는다.

 

2단계: 폴더 계층 생성

weekStartDate와 weekEndDate를 기반으로 연도, 월, 주 단위 폴더를 자동 생성한다. 이미 존재하는 폴더는 건너뛰고, 없는 폴더만 새로 만든다. 이 과정에서 Confluence API의 동시성 문제(409 Conflict)도 고려하여, 생성 실패 시 다시 한번 검색을 시도하는 방어 코드를 포함했다.

루트 페이지
  └── {접두어} 2026               -- 연도 폴더
        └── {접두어} 2026-02          -- 월 폴더
              └── {접두어} 2026-02-17 ~ 2026-02-21  -- 주 폴더

 

3단계: Markdown에서 Confluence HTML로 변환

Claude Desktop이 생성한 보고서 내용은 Markdown 형식이다. Confluence는 자체적인 저장 형식(XHTML 기반의 Storage Format)을 사용하므로, 변환이 필요하다. 헤더, 볼드, 중첩 목록 등을 Confluence가 이해할 수 있는 HTML로 변환한다.

 

4단계: 회사 템플릿에 맞는 페이지 생성

변환된 HTML을 회사의 주간보고서 양식에 맞춰 조립한다. 3열 테이블(이번 주 계획 | 이번 주 한일 | 차주 계획), 이슈 테이블, 연차 계획, 하고 싶은 말 등의 섹션을 포함하는 Confluence 페이지를 생성한다.

 

중복 방지: 같은 제목의 보고서가 이미 존재하면 새로 생성하지 않고 기존 페이지의 링크를 반환한다. 실수로 같은 보고서를 두 번 올리는 일을 방지하기 위함이다.

 

 

6. Claude Desktop 프롬프트 설계 

Claude Desktop의 프로젝트 지침(Project Instructions)에는 보고서 생성의 전체 절차를 9단계로 정의해두었다. 이 프롬프트가 사실상 시스템의 행동 명세서 역할을 한다.

 

핵심적인 설계 원칙은 다음과 같다.

 

날짜별이 아닌 프로젝트별 그룹핑. 일일 업무일지는 날짜 순서로 기록되지만, 주간보고서에서는 프로젝트별로 묶어서 보여주는 것이 읽기 편하다. Claude에게 이 변환 규칙을 명시적으로 지시했다.

 

사용자 검토 단계. AI가 생성한 초안을 바로 Confluence에 올리지 않고, 반드시 사용자에게 보여주고 확인을 받는 단계를 포함시켰다. 자동화의 목적은 사람의 시간을 절약하는 것이지, 사람의 판단을 대체하는 것이 아니기 때문이다.

 

유연한 명령어. "주간보고서 생성해줘"라고 하면 전체 흐름이 실행되지만, "이번주 한일만 정리해줘"라고 하면 요약까지만 수행한다. "Confluence에 올려줘"라고 하면 이미 만들어진 보고서를 업로드만 한다. 상황에 따라 부분적으로 사용할 수 있도록 설계했다.

 

7. 실제 사용 흐름 (As-is -> To-be)

시스템이 완성된 후의 주간보고서 작성 과정은 이렇게 바뀌었다.

 

이전 (수동)

  1. Notion에서 이번 주 업무일지 5건을 하나씩 열어 확인 (5분)
  2. 프로젝트별로 재분류하며 보고서 초안 작성 (15분)
  3. Confluence에 접속, 폴더 찾기/생성, 페이지 생성 (5분)
  4. 양식에 맞게 내용 입력 (10분)
  5. 검토 및 수정 (5분)

총 소요 시간: 약 40분

 

이후 (자동화)

  1. Claude Desktop에서 "주간보고서 생성해줘"라고 입력
  2. Claude가 Notion에서 자동 조회, 요약 생성, 초안 제시 (약 30초)
  3. 초안 확인 후 수정 요청 또는 "올려줘" (2분)
  4. Confluence에 자동 업로드, 링크 확인 (5초)

총 소요 시간: 약 3분

 

매주 40분이 3분으로 줄었다. 연간으로 환산하면 약 30시간을 절약하는 셈이다. 하지만 시간 절약보다 더 큰 효과는 금요일 오후의 심리적 부담이 사라졌다는 점이다. "보고서 써야 하는데"라는 생각 없이 본업에 집중할 수 있게 되었다.

 

8. 마치며

이 프로젝트를 통해 몇 가지를 배웠다.

 

첫째, AI 자동화의 핵심은 프롬프트 설계다.

코드를 작성하는 시간보다 Claude Desktop의 프로젝트 지침을 설계하고 다듬는 시간이 더 많이 들었다. "날짜별이 아니라 프로젝트별로 그룹핑하라", "완료형으로 작성하라", "사용자 확인 없이 업로드하지 마라" 같은 지시사항을 얼마나 명확하게 전달하느냐에 따라서 결과의 품질이 달라졌다.

 

둘째, 도구 간의 접착제 역할이 중요하다.

Notion, Claude, n8n, Confluence는 각각 독립적인 도구인데, 이들을 매끄럽게(매끈매끈하다~ 매끈매끈한~ ..) 연결하는 것이 프로젝트의 본질이었다. MCP라는 프로토콜이 이 접착제 역할을 훌륭하게 수행해주었다.

 

셋째, 완전 자동화보다 반자동화가 현실적이다.

처음에는 크론잡으로 매주 금요일 자동 실행까지 고려했으나 주간보고서는 최종적으로 사람이 훑어보고 상황에 맞게 조정하는 과정이 필요하기 때문에 반자동화로 구성하였다. 사용자가 "올려줘"라고 명시적으로 말할 때만 업로드되는 현재 구조가 가장 적절한 수준의 자동화라고 판단했다.

 

넷째, 작은 자동화가 큰 차이를 만든다.

매주 금요일 퇴근시간이 다가오면 부랴부랴 주간보고서를 작성하려고 애를 썼다면 이제 그럴 필요가 없어졌다.

금요일 오후에 보고서 걱정 없이 마지막까지 개발에 집중할 수 있게 된 건 이 프로젝트의 최대 성과다.

 

 

이 프로젝트는 거창한 시스템이 아니다. AI 모델, 워크플로우 엔진, 클라우드 문서 도구라는 이미 존재하는 것들을 MCP라는 접착제로 연결한 것에 불과하다. 그런데 이 조합이 매주 금요일의 40분을 만들어 주었다. 앞으로 이런 작은 자동화들이 모여 개발자의 일하는 방식을 조금씩 바꿔나갈 것이라고 생각한다. 

 

 

추가+) 이 시스템을 구축하려면

관심이 있는 분들을 위해, 이 시스템을 구축하기 위해 필요한 것들을 정리한다.

 

사전 준비물

  • Notion 워크스페이스와 일일 업무일지 데이터베이스
  • Confluence 접근 권한과 API 토큰
  • Claude Desktop (MCP 지원 버전)
  • n8n (Docker 또는 npm global 설치)

핵심 설정 단계

  1. .env.template을 복사하여 .env를 만들고 실제 자격 증명을 입력한다.
  2. n8n을 실행하고 워크플로우 JSON을 import한다.
  3. Claude Desktop의 MCP 설정에 Notion MCP와 n8n MCP를 등록한다.
  4. Claude Desktop 프로젝트 지침에 프롬프트를 설정한다.
  5. 테스트 스크립트(./scripts/test-webhook.sh)로 webhook이 정상 동작하는지 확인한다.

프로젝트 저장소에 각 단계의 상세 가이드와 템플릿을 모두 포함해두었으므로, 자신의 환경에 맞게 환경 변수만 수정하면 동일한 시스템을 구축할 수 있다. 자세한 코드는 아래 Github 주소에서 확인 가능하다.

 

기타

반응형
Comments