Kanary 녹음 파일로 회의록 자동 생성: Claude Code를 활용한 프로세스 구축기
요약
본 글은 Mac 녹음 앱 Kanary와 Claude Code를 결합하여 회의록 자동 생성 프로세스를 구축한 과정을 설명합니다. 사용자는 녹음을 중지하고 제목을 붙이는 것만으로, Claude Code가 자동으로 전사(transcription) 및 회의록 작성, 프로젝트 폴더 분류까지 처리하도록 시스템을 간소화했습니다.
핵심 포인트
- Kanary와 Claude Code를 결합하여 자동화된 회의록 생성 파이프라인 구축
- Claude에게는 오직 '작성' 역할만 맡기고 파일 조작은 셸 스크립트가 담당
- 자동화 과정에 기존의 `CLAUDE.md` 및 전사 스크립트를 활용하여 시스템 완성도 높임
이제는 당연해진 일처럼 느껴지지만, Google Meet에서는 주최자 측에서 Gemini의 회의록 작성 기능이 활성화되어 있으면, 회의가 끝나면 자동으로 회의록을 만들어 줍니다.
반면에 Zoom이나 Gemini의 회의록 기능이 꺼져 있거나, 대면으로 진행된 회의에서는 아무것도 남지 않습니다...
이런 종류의 회의는 Mac용 녹음 앱 Kanary로 녹음한 후, 끝난 뒤에 Claude Code에게 '녹음을 정리해서 회의록을 만들어 줘'라고 매번 일일이 부탁하고 있었습니다. (꽤 번거로운 과정입니다.)
이를 Kanary에서 제목을 붙여 녹음을 중지하는 것만으로 간소화했습니다. 그 외에는 그냥 두기만 하면, Claude Code가 회의록을 작성하고 해당 프로젝트 폴더로 분류하며, 완료되면 macOS 알림이 옵니다.
자동화를 진행하면서 가장 신경 쓴 부분은, Claude에게 파일 조작까지 맡기지 않은 것입니다. Claude가 하는 역할은 오직 회의록 작성과 어떤 프로젝트에 속하는지를 판단하는 것뿐입니다. 파일 이동이나 삭제는 셸(shell) 측에서 확인한 후에 실행합니다.
Kanary는 Mac용 회의 녹음 앱입니다. 자신의 마이크 소리와 상대방 목소리(시스템 음성)를 별도의 트랙으로 녹음할 수 있습니다. Zoom이든 Meet이든, 브라우저로 재생되는 음성이든 상관없이 앱에 구애받지 않고 녹음할 수 있습니다.
마이크 소리도 잡을 수 있어 대면 회의에서도 사용할 수 있습니다. 녹음에 제목을 붙일 수 있고, 목록은 커맨드라인에서 가져올 수 있습니다. 이번 자동화에는 딱 적합했습니다.
| 전 (Before) | 후 (After) |
|---|---|
| 녹음 후 해야 할 일: Kanary에서 추출 → Claude Code 실행 → 요청 → 프로젝트 폴더 분류 | 제목을 붙여 녹음을 중지하는 것만 하면 끝 |
| ... | |
| 매번 완전히 똑같은 과정을 반복하고 있었기 때문에, 여기에 내가 개입할 필요가 없다는 생각이 들었던 것이 계기입니다. |
처음 시도한 것은 두 가지였습니다.
- Kanary를 설치하여 녹음을 할 수 있는 상태로 만드는 것 - 회의록 폴더에서 Claude Code를 열고, 'Kanary 녹음 파일로부터 자동으로 회의록을 만들어 줘'라고 지시하는 것
Claude Code는 Kanary의 녹음 위치나 CLI(Command Line Interface)를 조사하여, 전사(transcription)와 claude -p를 결합한 셸 스크립트, 그리고 이를 15분마다 실행하도록 설정된 launchd 설정까지 만들어 주었습니다. 제가 직접 한 일은 실제로 작동하면서 '프로젝트 폴더는 이렇게 분류해라', '처리용 녹음 파일은 지워라'와 같이 수정하는 정도였습니다.
하지만 이 두 가지 절차만으로 누구나 똑같은 것을 할 수 있는 것은 아닙니다. 저의 회의록 폴더에는 이전부터 사용하던 CLAUDE.md (회의록 작성 방법/명명 규칙)와 transcribe.sh (whisper.cpp를 호출하는 스크립트)가 있었습니다. 이번 자동화는 이 두 가지 파일을 활용하여 구성되었습니다.
셸 스크립트는 15분마다 실행됩니다. 녹음을 중지한 직후에 시작되는 것이 아니라, 다음 실행 타이밍에 처리가 시작됩니다.
- Kanary의 녹음 목록에서 제목이 붙어 있고 미처리된 항목을 가져옵니다.
- whisper.cpp로 전사(transcription)를 수행합니다 (여기까지는 로컬에서 완료되어 음성 파일을 외부로 빼내지 않습니다).
claude -p(Claude Code의 비대화형 모드)가 회의록을 작성하고 어떤 프로젝트 폴더에 넣을지 판단합니다. -
프로젝트명/YYYY-MM-DD_회의명/
에 전사본과 회의록을 배치하고, 알림을 띄웁니다. 처리에 사용된 녹음 파일은 여기서 삭제합니다.
'제목이 붙어 있는 것만'으로 한정한 이유는, Kanary 측의 조작만으로 '이것은 회의록이 필요 없다'는 것을 표현할 수 있기 때문입니다. 별도의 설정 화면이나 목록을 만들 필요가 없었습니다.
처리용 녹음 파일은 1시간 기준으로 약 150MB 정도 되므로, 그대로 두면 용량을 차지합니다. 회의록과 전사본 작성이 완료되면 처리용 파일만 삭제하고, 원본은 Kanary 측에 남기도록 했습니다. 필요할 때 거기서 꺼내 쓸 수 있습니다.
음성에서 전사본까지의 처리는 로컬에서 완료되지만, 회의록을 작성할 때는 전사 텍스트를 Claude Code에게 전달합니다. 회의를 녹음할 때는 참가자들의 동의를 얻고, 사내 규칙이나 기밀 정보 취급 여부를 확인한 후에 사용하고 있습니다.
사람의 개입 없이 작동하는 것이므로, 만들기 전에 'Claude가 처리하지 못하게 할 범위'를 정했습니다.
- 파일 이동・이름 변경・삭제는 Claude에게 맡기지 않습니다. 허용하는 것은 읽기・쓰기・찾기만 가능하며, 작성할 위치도
회의록.md
와, '어떤 건인지'에 답하는 JSON의 2개 파일로 제한 - 새로운 프로젝트 폴더는 만들지 않음. 기존 폴더에서 선택만 하면 되기 때문에, 막히면 _미분류/ 에 넣어서 사람이 직접 움직임 - 녹취록은 Claude에게 맡기지 않음. 정해진 처리는 whisper.cpp에 맡김
Claude가 반환한 프로젝트명과 같은 폴더가 없으면, 쉘(shell) 측에서 _미분류 에 넣습니다. Claude의 답변을 그대로 사용하지 않고, 마지막에는 쉘에서 확인한 후에 배치하는 형태입니다. 이렇게 하면 방치해도 이상한 장소에 파일이 만들어질 걱정이 없습니다.
또 효과적이었던 것이 프롬프트 맨 처음에 적었던 이 문장입니다.
자동 처리에서 호출되었습니다. 사람은 보고 있지 않습니다. 질문하지 말고, 아래를 끝까지 실행해 주세요.
이것이 없으면 '프로젝트 폴더는 무엇으로 할까요?'라고 물으며 멈춥니다.
여기는 만들어보길 의외였습니다. 회의록 폴더에는 전부터 CLAUDE.md가 있었고, 여기에 '결정 사항・숙제・기한・담당을 최우선으로 추출', '녹취록 전문은 붙이지 않음', '자신 없는 고유명사에는 (요확인)을 붙인다' 같은 규칙들을 대화하면서 조금씩 추가했습니다.
claude -p는 실행한 폴더의 CLAUDE.md를 읽기 때문에, 자동화를 위해 규칙을 다시 쓸 필요가 없었습니다. 대화로 만들었던 회의록과 똑같은 방식으로 그대로 이어질 수 있었습니다.
쌓여있던 녹음 8건을 돌렸습니다 (M1 Pro).
- 프로젝트 폴더 분류는 8건 중 8건 모두 정답. 다만, 제목 맨 앞에 프로젝트명을 넣었기 때문에 거의 제목만으로 결정됩니다. 내용만으로 판단하게 하면 흔들릴 것 같습니다.
- 소요 시간은 거의 녹취록 생성에 따라 결정되며, 1시간 분량의 녹음으로는 10
15분 정도입니다. Claude의 처리는 모두 12분 걸립니다. - Claude 비용은 건당 $0.4~$0.6입니다. 이는 2026년 9월에 제 환경에서 표시된 사용액입니다.
- 8건 중 2건은 Claude가 첫 번째 시도 때 아무것도 출력하지 않고 종료되었습니다. 15분 후에 재시도하는 장치를 넣어두었기 때문에, 두 번째 시도에서 성공했습니다. 리트라이(retry)는 처음부터 넣어두길 잘했습니다.
- 상대방 목소리가 작은 녹음은 녹취록이 단편적이 되고, 회의록도 빈약해집니다. 이는 녹음 품질의 문제라 시스템으로는 해결할 수 없었습니다. 회의록 맨 앞에 '듣기 어려웠던 부분'을 주석으로 달도록 설정했기 때문에 읽으면 알 수 있도록 했습니다.
다음 정기 실행을 기다리는 시간까지 포함하면, 녹음을 멈춘 후 완성될 때까지는 10~30분 정도 걸렸습니다. 이는 1시간 분량의 녹음을 M1 Pro로 처리했을 경우이며, 녹음 길이와 Mac 성능에 따라 달라집니다.
사내 기술 스터디를 녹음했을 때는, 약 14분의 발표로부터 다음 회의록이 만들어졌습니다.
전문은 길어서 일부만 올립니다. 공개용으로 연사 이름이나 서비스명은 대체했지만, 제목과 요점 정리 방식은 자동 생성된 그대로입니다.
| 항목 | 내용 |
|---|---|
| 일시 | 2026년 8월・약 14분 |
| ... | |
| ※본 회의록은 Kanary 녹음에서 자동 생성되었습니다. 사람 이름, 고유명사, 수치는 청취 기반이므로 요확인 필요. |
녹음은 발표 중간부터 시작했기 때문에, 초반부는 포함되어 있지 않을 가능성이 있습니다.
-
AI로 개인 작업 속도는 빨라졌지만, 팀 전체로 보면 따라잡는 횟수는 줄지 않았습니다.
-
GitHub・문서・과제 관리 도구에는 '지금 어떻게 되어 있는지'가 남아있습니다.
-
Slack이나 Teams에는 '왜 그렇게 되었는지'가 남지만, 타임라인에 흘러가 묻힙니다.
-
나중에 참여한 사람은 '이 기능은 왜 이렇게 되었지?'를 추적하기 어렵습니다.
-
멤버별로 같은 조사를 반복하고, 같은 작업이 여러 번 발생합니다.
-
이해도가 개인의 AI 스킬에 의존합니다.
-
프로젝트의 공통 인식이 개인에게 의존합니다.
-
흩어져 있는 정보를 연결한 상태를 만들고, 그곳에서 질문할 수 있게 합니다.
-
경험이 적은 사람도 '이 경우는 어떻게 될까요?'라고 물을 수 있는 상태를 만듭니다.
-
AI뿐만 아니라, 멤버 간의 질문과 답변도 같은 장소에 남깁니다.
-
이전에는 리포지토리, 최신 자료, 과제 관리 도구, Slack 기록 순서로 확인해야 했습니다.
-
요청하는 쪽에서도 전제를 처음부터 설명하는 비용이 들었습니다.
-
정보가 집약되어 있다면, URL을 1개 공유하고 모르는 부분만 AI나 멤버에게 질문할 수 있습니다.
요약 내용 외에도 녹음에 포함되지 않은 부분이나, 듣는 데 자신이 없는 부분까지 주석이 달려 있습니다. 나중에 다시 읽어볼 때 어디까지 신뢰해도 되는지 알 수 있어서 도움이 되었습니다.
가장 달라진 점은 회의 중에 이야기 자체에 집중할 수 있게 되었다는 것입니다.
전에는 회의 중에 메모를 했지만, 메모를 따라가다 보면 대화의 흐름을 놓치는 경우가 있었습니다. 지금은 핵심 내용만 메모하고, 다 받아 적지 못하는 부분은 녹음에 맡기고 있습니다.
며칠 후에 '그 숫자 몇이었더라', '담당자는 누구였더라' 같은 질문이 생겨도, 회의록의 TODO 표를 보거나 녹취록을 검색하면 나옵니다. 녹음을 다시 듣는 것보다 압도적으로 빠릅니다.
클라이언트와의 정기 미팅, 사내외 스터디 모임, 인수인계 MTG 등에서 사용하고 있습니다. 대면 회의에서도 같은 방식으로 회의록을 만들 수 있다는 것이 은근히 큰 장점입니다. 온라인인지 아닌지를 신경 쓰지 않고 '제목을 붙이고 녹음을 멈추기'만 하면 되었습니다.
- launchd로부터
~/Documents
이 접근할 수 없게 되었습니다. macOS의 개인 정보 보호 기능 때문에Operation not permitted가 발생했습니다. 전체 디스크 액세스를 허용하는 것은 너무 광범위해서,osascript를 통해 실행하여 우회했습니다 - 쉘 변수의 경계가 모호해졌습니다. 변수 바로 뒤에 문자를 붙이는 부분을$title에서${title}로 수정하니 해결되었습니다. 일본어 포함 파일명을 구성하는 부분은 모두 이 형태로 처리하고 있습니다 - 알림이 처음에는 오지 않았습니다. launchd로 알림을 보내려면 '시스템 설정 > 알림'에서 한 번 허용해야 했습니다.
Kanary로 녹음을 멈추면, 이후 whisper.cpp, claude -p, launchd가 작동하여 회의록을 프로젝트 폴더에 넣어줍니다. 회의 중에는 핵심 내용만 메모하고, 세부적인 이야기는 녹음에 맡기고 있습니다. '무슨 말을 했었지' 하더라도, 녹취록을 검색하면 알 수 있습니다.
자동으로 실행되기 전에, Claude에게 맡길 범위를 정했습니다. 이번에는 '쓰기'와 '판단하기'만 맡겼습니다. 파일 조작과 최종 확인은 쉘에 남겨두었습니다.
Claude Code를 자동으로 돌리고 싶다면, 먼저 'Claude가 하지 않을 것'을 결정하는 것부터 시작하면 안심할 수 있습니다.
- Google Meet 도움말:
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기