
완전 로컬 환경에서 실행 가능한 회의록 도구 「meetily」를 사용하여 Notion에 회의록을 정리하는 워크플로우를 만들어 보았다
요약
로컬 환경에서 실행 가능한 오픈 소스 AI 회의록 도구인 meetily를 활용하여, 회의 내용을 자동으로 Notion에 정리하는 워크플로우 구현 방법을 소개합니다. 데이터 유출 걱정 없는 오프라인 처리와 Notion API 연동을 통한 자동화 과정을 다룹니다.
핵심 포인트
- meetily를 활용한 로컬 기반 AI 회의록 작성 워크플로우 구축
- 데이터 외부 유출 없는 보안 중심의 오프라인 처리 방식
- Notion API를 이용한 요약 및 받아쓰기 결과 자동 전송 구현
- Tauri 및 Rust 환경을 활용한 로컬 앱 커스텀 및 확장
저는 기계지능 연구실에 소속되어 CV (Computer Vision) 분야의 연구를 하고 있습니다.
기계지능 연구실에서는 로봇의 시각 기능이나 자율적으로 행동하기 위한 지능 시스템에 관한 연구를 진행하고 있습니다 (HP는 이쪽에서 확인하세요!)
회의 등의 회의록을 일일이 직접 작성하는 것이 귀찮다고 느낀 경험은 누구나 있을 것이라고 생각합니다. 그것을 무료로 받아쓰기(Transcription)부터 파일 관리까지 할 수 있게 만든다면, 회의록을 작성하는 작업이 줄어드는 만큼 다른 일에 시간을 더 할애할 수 있을 것입니다.
이번에는 로컬에서 실행 가능한 오픈 소스 회의록 도구인 「meetily」를 사용하여, Notion에 회의록을 정리하는 워크플로우를 구상하였기에 이를 구현해 보겠습니다.
meetily란
Zackriya Solutions 사에 의해 작성된 오픈 소스 AI 회의록 도구입니다. 이 도구는 두 가지 장점이 있습니다.
기밀 유출 리스크 제로- 데이터가 인터넷을 통해 외부 클라우드 서버로 전송되지 않기 때문에, 정보 유출 리스크를 억제할 수 있습니다.
오프라인에서 사용 가능- Zoom이나 Google Meet 등에 「녹음 봇」을 초대하는 형식이 아니라, 녹음, 받아쓰기, 요약까지의 처리가 PC 내부에서 완결됩니다.
이 도구는 커뮤니티 버전의 소스 코드가 GitHub에 공개되어 있어, 자신의 PC 상에서 실행 및 개량할 수 있습니다 (상표 목적의 경우에는 라이선스 관련 주의가 필요합니다). 또한 커뮤니티 버전의 상위 기능을 갖춘 「PRO 버전 (SaaS 또는 유상 버전)」도 제공하고 있습니다.
이번에는 meetily의 소스 코드에 약간의 개량을 가하여, Notion에 회의록을 정리할 수 있도록 만들고자 합니다.
참고로, 이번에는 GitHub의 README에 기재되어 있던 내용을 바탕으로 Macbook Air의 터미널을 사용하여 meetily를 실행하고, 앱 UI 상에서 실행해 나갑니다. (PC 앱으로서 다운로드 및 실행도 가능합니다)
실행할 PC 환경을 정리해 둡니다.
| 항목 | 내용 |
|---|---|
| 칩 | Apple M3 |
| ... |
GitHub 리포지토리의 코드를 로컬에 다운로드해 둡니다.
다음으로 이 도구를 구동하기 위해 필요한 환경을 준비합니다.
-
Node.js
-
pnpm 또는 npm
-
공식적으로는 pnpm 권장
-
Rust / Cargo
-
CMake
-
Xcode Command Line Tools
다음 명령어로 컴파일 및 앱의 기동 확인을 수행합니다.
./dev-gpu.sh
실행이 완료되면 이미지와 같은 화면이 표시됩니다.
여기까지 왔다면 기동 확인은 일단 끝입니다.

다음으로 Notion에 요약과 받아쓰기 결과를 보내기 위한 코드를 작성해 나가겠습니다. 해야 할 일은 다음 세 가지입니다.
- 요약 내용 등을 Notion API를 사용하여 전송할 수 있도록 하기
- 요약이 완료된 후, 자동으로 Notion에 전송되도록 하기
- UI 일부를 변경
이번에는 변경해야 할 코드가 많았기 때문에 일부를 발췌하여 설명하겠습니다.
다음 코드는 Notion으로 보낼 때의 템플릿을 작성하고 있는 부분입니다. 2000자 제한에 걸리지 않도록 AI의 요약이나 받아쓰기 텍스트를 개행 코드 단위로 분할하여, 한 줄마다 독립된 단락 블록(Paragraph Block)으로서 배열에 추가하고 있습니다.
또한, CORS 에러가 발생하지 않도록 Tauri의 invoke 기능을 사용하여 OS의 Rust로 통신하게 하고 있습니다.
import { invoke } from '@tauri-apps/api/core';
export async function exportToNotion(
title: string,
...
그 외에도 UI의 일부 변경이나 전송 처리 설정 등을 수행했습니다.
이것은 Meetily의 기존 앱과 동일한 설정 방법입니다. 설정 (톱니바퀴 버튼)에서 모델을 선정할 수 있습니다. 다수 중에서 자신의 용도에 맞춰 모델을 선택하고 다운로드함으로써 해당 모델을 사용할 수 있게 됩니다.
이번에는 Whisper의 Medium을 사용했습니다. (로컬 환경에서 실행하기 때문에 용량과 PC 스펙은 주의하면서 모델을 선택해 주세요)

또한, 요약 시의 모델 설정은 Summary에서 수행할 수 있습니다. 앞서와 마찬가지로 로컬에서 사용할 수 있는 모델을 선택하고 다운로드하는 방식입니다. 추가로 Claude, Ollama와 같은 모델의 API를 사용함으로써 요약도 가능합니다 (이 경우에는 완전 로컬 실행이 아니게 되므로 주의하십시오).
이번에는 Qwen2.5 4B(High)를 사용했습니다.

모델 선정과는 별개로, 요약 시 사용할 템플릿도 결정할 수 있습니다.
회의 사용을 전제로 하고 있기 때문에 그에 따른 템플릿만 제공되지만, 템플릿을 추가하는 것도 가능한 것 같습니다.

또한, 마이크를 무엇으로 할지, 음성 출력을 무엇으로 할지에 더해, 어느 폴더에 녹음 파일을 저장할지 등도 지정할 수 있게 되어 있었습니다.
다음으로, Notion으로 보낼 수 있도록 설정을 진행합니다. 이 부분은 방금 전 제가 직접 작성한 부분입니다.
Notion 측에서 API를 생성할 때는 기본적으로 기본 설정(default setting) 그대로 두어도 괜찮다고 생각합니다. 또한, 데이터베이스 설정은 데이터베이스 ID(workspace/ 와 ?v= 사이에 있는 32자리의 영문 및 숫자 문자열)를 입력하는 방식으로 진행합니다.

이번에는 월드컵 결승전을 보면서 작성했기 때문에, 그때의 해설 일부를 받아쓰기(transcription)하여 요약했습니다.
원하는 동작은 실행할 수 있었지만, PC 마이크를 사용한 탓인지 받아쓰기 정밀도가 그리 좋지는 않았습니다. 이 부분은 Whisper의 성능에 의존하는 부분이라 단정 지을 수는 없지만, 실제로 사용할 때는 환경에도 신경을 쓰는 것이 좋을지도 모르겠습니다.
또한, 이번에는 '월드컵 해설'이라는 배경 소음(background noise)이 많았고, 화자가 말을 빨리 하는 경향이 있었다는 점도 요인 중 하나라고 생각합니다. 다만 실제 회의에서도 그러한 상황은 많을 것이라 생각하므로, 환경을 개선하면서 소음이나 말하기 속도에 성능이 좌우되지 않는 모델을 구축해 나갈 필요가 앞으로 있을 것이라고 생각합니다.
이번에는 로컬에서 실행 가능한 오픈 소스(open source) 회의록 도구인 「meetily」를 사용하여, Notion에 회의록을 정리하는 워크플로우를 구현했습니다.
지금까지 수동으로 했던 요약 등을 일괄적으로 처리하고 저장까지 할 수 있으므로 시간 단축에도 도움이 될 것이라고 생각합니다. 하지만 직접 사용해 본 느낌으로는 텍스트 받아쓰기(특히 실시간)의 성능은 그리 좋지 않았습니다. 주변 환경을 정비한다면 이야기가 달라지겠지만, 무작정 사용할 수 있을 정도의 성능에는 도달하지 못했기에 아직 모델의 개선 여지는 남아 있는 것 같습니다.
또한, Meetily는 로컬에 음성 파일을 저장하므로, 실시간으로 처리한 후에도 다시 한번 음성을 정돈할 수 있다는 점이 강점이라고 사용하면서 느꼈습니다.
여러분도 꼭 한번 시도해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기