📖 Language / 언어: English | 한국어 | 📋 Documentation: PRD (English) | PRD (한국어)
🚀 TDD로 구축된 고품질 Obsidian 플러그인 M4A 오디오 파일을 5가지 STT 엔진(OpenAI, Gemini, Groq, Local Whisper, Local MLX)을 통해 체계적인 회의록으로 자동 변환
| 제공자 | 속도 | 비용 | 파일크기 | 추천 |
|---|---|---|---|---|
| Local MLX | ⭐⭐⭐⭐⭐ | 무료 | 무제한 | Apple Silicon |
| Groq | ⭐⭐⭐⭐⭐ | 저렴 | 25MB | 빠른 처리 |
| Gemini | ⭐⭐⭐⭐ | 저렴 | 2GB | 긴 오디오 |
| OpenAI | ⭐⭐⭐ | 표준 | 25MB | 안정성 |
| Local Whisper | ⭐⭐ | 무료 | 무제한 | 오프라인 |
사용 가능한 플레이스홀더:
{{filename}} - 원본 오디오 파일명
{{summary}} - AI 생성 요약
{{transcript}} - 전체 텍스트 (향후 지원)
{{date:YYYY-MM-DD}} - 날짜 (다양한 형식 지원)
{{time:HH:mm}} - 시간 (다양한 형식 지원)
템플릿 예시:
📁 저장 폴더: "회의록/{{date:YYYY}}/{{date:MM월}}"
📄 파일명 템플릿: "{{date:MM-DD}}-{{filename}}"
📝 내용 템플릿:
# 📅 {{date:YYYY년 MM월 DD일}} 회의록
**🎵 원본 파일:** {{filename}}
**⏰ 생성 시각:** {{time:HH:mm}}
## 📋 요약
{{summary}}
---
*🤖 ATTN 플러그인으로 자동 생성됨*
GitHub 릴리스 페이지에서 최신 버전의 다음 파일들을 다운로드하세요:
manifest.jsonmain.jsstyles.css (있는 경우)또는 전체 소스를 원하는 경우:
scripts/ 디렉토리src/ 디렉토리Obsidian 볼트의 플러그인 디렉토리 찾기:
[볼트 경로]/.obsidian/plugins/
새 플러그인 폴더 생성:
[볼트 경로]/.obsidian/plugins/audio-to-tidied-notes/
다운로드한 파일들을 새로 생성한 폴더에 복사
필수 요구사항:
설치:
# Python 확인
python3 --version
# MLX Whisper 설치
cd /path/to/attn-obsidian/python
python3 -m venv venv
source venv/bin/activate
pip install mlx-whisper
ATTN 설정:
.../venv/bin/python3)medium (권장) 또는 다른 크기 선택성능: 16.45x realtime, 무료, 무제한 파일
📖 상세 가이드: MANUAL-ko.md 참조
FFmpeg 설치 (오디오 속도 조절용, 선택사항)
# macOS (Homebrew)
brew install ffmpeg
# Windows (Chocolatey)
choco install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
FFmpeg 경로 확인:
# 설치된 FFmpeg 경로 확인
which ffmpeg # macOS/Linux
where ffmpeg # Windows
Obsidian 설정 → Community Plugins → Audio To Tidied Notes
📝 기본 설정:
- OpenAI API Key: sk-... (필수)
- 저장 폴더 경로: / (루트)
- 파일명 템플릿: {{date:YYYY-MM-DD}}-{{filename}}-회의록
- 내용 템플릿: (기본 회의록 형식)
- 오디오 속도 배수: 1x (기본) / 2x / 3x
- FFmpeg 경로: (선택사항, 자동 감지 실패시 수동 설정)
비즈니스 미팅용 템플릿:
📁 저장 폴더: "Business/Meetings/{{date:YYYY}}"
📄 파일명: "{{date:MM-DD}}-{{filename}}"
📝 내용:
# 📊 비즈니스 미팅 - {{date:YYYY.MM.DD}}
**참석자 파일:** {{filename}}
**일시:** {{date:YYYY년 MM월 DD일}} {{time:HH:mm}}
## 🎯 핵심 요약
{{summary}}
## 📋 액션 아이템
- [ ] TBD (요약에서 추출)
---
**다음 미팅:** 미정
*🤖 Generated by ATTN*
스터디 그룹용 템플릿:
📁 저장 폴더: "Study/{{date:YYYY}}/{{date:MM월}}"
📄 파일명: "Week{{date:WW}}-{{filename}}"
📝 내용:
# 📚 스터디 노트
**날짜:** {{date:YYYY-MM-DD (ddd)}}
**시간:** {{time:HH:mm}}
**파일:** {{filename}}
## 💡 주요 내용
{{summary}}
## 📝 메모
-
---
*📖 Study Group*
✅ Jest 기반 종합 테스트 스위트 구축
✅ TypeScript 기반 type-safe 구현
✅ ESLint + Prettier 코드 품질 관리
✅ GitHub Actions CI/CD 자동화
✅ 모듈식 아키텍처 (확장성 & 유지보수성)
테스트 실행 방법:
# 의존성 설치 (최초 1회)
npm install
# 테스트 실행
npm test
# 커버리지 포함 테스트
npm test -- --coverage
# 타입 체크
npm run typecheck
# 린트 검사
npm run lint
# 리포지토리 클론
git clone https://github.com/bongho/attn-obsidian.git
cd attn-obsidian
# 의존성 설치
npm install
# 개발 모드 실행 (Hot reload)
npm run dev
# 프로덕션 빌드
npm run build
⚠️ npm 설치 시 권한 오류가 발생하는 경우:
# macOS/Linux
sudo chown -R $USER:$(id -gn $USER) ~/.npm
# 또는 강제 설치
npm install --force
품질 검증:
# 전체 테스트 실행
npm test
# 커버리지 포함
npm test -- --coverage
# 타입 체크
npm run typecheck
# 린트 검사
npm run lint
ATTN/
├── src/ # 📁 소스 코드
│ ├── main.ts # 🎭 오케스트레이터 (모든 모듈 조율)
│ ├── settings.ts # ⚙️ 설정 UI 관리
│ ├── templateProcessor.ts # 🎨 템플릿 엔진 (NEW!)
│ ├── apiService.ts # 🤖 OpenAI API 연동
│ ├── noteCreator.ts # 📝 노트 생성 (리팩토링됨)
│ └── types.ts # 📋 TypeScript 인터페이스
├── tests/ # 🧪 TDD 테스트 스위트
│ ├── TemplateProcessor.test.ts # 🆕 템플릿 엔진 테스트
│ ├── SettingsTab.test.ts # 📈 확장된 설정 테스트
│ ├── ApiService.test.ts # 🔄 API 로직 테스트
│ ├── NoteCreator.test.ts # 🔄 노트 생성 테스트
│ └── main.test.ts # 🔄 통합 테스트
├── package.json # 📦 의존성 관리
├── tsconfig.json # ⚙️ TypeScript 설정
├── jest.config.js # 🧪 테스트 설정
└── main.js # 🚀 빌드된 플러그인
OpenAI API 사용료:
예시: 30분 회의 → 약 $0.20~0.50
| 구분 | v1.0 (기존) | v2.0 (확장) |
|---|---|---|
| 파일명 | 고정: 파일명-회의록.md | 템플릿: {{date:MM-DD}}-{{filename}} |
| 저장 위치 | 루트 폴더만 | 자유로운 폴더 구조 |
| 노트 형식 | 고정 템플릿 | 완전 커스터마이징 가능 |
| 확장성 | 제한적 | 플레이스홀더 무제한 조합 |
🧪 Phase 1: Settings Enhancement & Template Engine
✅ ATTNSettings 인터페이스 확장
✅ SettingsTab UI 컴포넌트 추가
✅ TemplateProcessor 모듈 구현
🔄 Phase 2: Core Logic Refactoring
✅ NoteCreator 책임 단순화
✅ main.ts 오케스트레이터 패턴 적용
✅ 모듈 간 결합도 최소화
✨ Result: 확장 가능하고 유지보수가 용이한 아키텍처
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)MIT License - 자세한 내용은 LICENSE 파일 참조
테스트 환경: M2 Max, 50분 오디오 파일
| STT 제공자 | 처리 시간 | 실시간 배율 | 비용 | 파일 크기 제한 |
|---|---|---|---|---|
| Local MLX (medium) | 3분 2초 | 16.45x | 무료 | 무제한 |
| Groq | ~43초 | 70x | ~$0.30 | 25MB |
| Gemini | ~5분 | ~10x | ~$0.03 | 2GB |
| OpenAI | ~8분 | ~6x | ~$0.30 | 25MB |
| Local Whisper | ~25분 | ~2x | 무료 | 무제한 |
42 commits
TypeScript
88.7%
Python
9.8%
JavaScript
1.3%
📖 Language / 언어: English | 한국어 | 📋 Documentation: PRD (English) | PRD (한국어)
🚀 TDD로 구축된 고품질 Obsidian 플러그인 M4A 오디오 파일을 5가지 STT 엔진(OpenAI, Gemini, Groq, Local Whisper, Local MLX)을 통해 체계적인 회의록으로 자동 변환
| 제공자 | 속도 | 비용 | 파일크기 | 추천 |
|---|---|---|---|---|
| Local MLX | ⭐⭐⭐⭐⭐ | 무료 | 무제한 | Apple Silicon |
| Groq | ⭐⭐⭐⭐⭐ | 저렴 | 25MB | 빠른 처리 |
| Gemini | ⭐⭐⭐⭐ | 저렴 | 2GB | 긴 오디오 |
| OpenAI | ⭐⭐⭐ | 표준 | 25MB | 안정성 |
| Local Whisper | ⭐⭐ | 무료 | 무제한 | 오프라인 |
사용 가능한 플레이스홀더:
{{filename}} - 원본 오디오 파일명
{{summary}} - AI 생성 요약
{{transcript}} - 전체 텍스트 (향후 지원)
{{date:YYYY-MM-DD}} - 날짜 (다양한 형식 지원)
{{time:HH:mm}} - 시간 (다양한 형식 지원)
템플릿 예시:
📁 저장 폴더: "회의록/{{date:YYYY}}/{{date:MM월}}"
📄 파일명 템플릿: "{{date:MM-DD}}-{{filename}}"
📝 내용 템플릿:
# 📅 {{date:YYYY년 MM월 DD일}} 회의록
**🎵 원본 파일:** {{filename}}
**⏰ 생성 시각:** {{time:HH:mm}}
## 📋 요약
{{summary}}
---
*🤖 ATTN 플러그인으로 자동 생성됨*
GitHub 릴리스 페이지에서 최신 버전의 다음 파일들을 다운로드하세요:
manifest.jsonmain.jsstyles.css (있는 경우)또는 전체 소스를 원하는 경우:
scripts/ 디렉토리src/ 디렉토리Obsidian 볼트의 플러그인 디렉토리 찾기:
[볼트 경로]/.obsidian/plugins/
새 플러그인 폴더 생성:
[볼트 경로]/.obsidian/plugins/audio-to-tidied-notes/
다운로드한 파일들을 새로 생성한 폴더에 복사
필수 요구사항:
설치:
# Python 확인
python3 --version
# MLX Whisper 설치
cd /path/to/attn-obsidian/python
python3 -m venv venv
source venv/bin/activate
pip install mlx-whisper
ATTN 설정:
.../venv/bin/python3)medium (권장) 또는 다른 크기 선택성능: 16.45x realtime, 무료, 무제한 파일
📖 상세 가이드: MANUAL-ko.md 참조
FFmpeg 설치 (오디오 속도 조절용, 선택사항)
# macOS (Homebrew)
brew install ffmpeg
# Windows (Chocolatey)
choco install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
FFmpeg 경로 확인:
# 설치된 FFmpeg 경로 확인
which ffmpeg # macOS/Linux
where ffmpeg # Windows
Obsidian 설정 → Community Plugins → Audio To Tidied Notes
📝 기본 설정:
- OpenAI API Key: sk-... (필수)
- 저장 폴더 경로: / (루트)
- 파일명 템플릿: {{date:YYYY-MM-DD}}-{{filename}}-회의록
- 내용 템플릿: (기본 회의록 형식)
- 오디오 속도 배수: 1x (기본) / 2x / 3x
- FFmpeg 경로: (선택사항, 자동 감지 실패시 수동 설정)
비즈니스 미팅용 템플릿:
📁 저장 폴더: "Business/Meetings/{{date:YYYY}}"
📄 파일명: "{{date:MM-DD}}-{{filename}}"
📝 내용:
# 📊 비즈니스 미팅 - {{date:YYYY.MM.DD}}
**참석자 파일:** {{filename}}
**일시:** {{date:YYYY년 MM월 DD일}} {{time:HH:mm}}
## 🎯 핵심 요약
{{summary}}
## 📋 액션 아이템
- [ ] TBD (요약에서 추출)
---
**다음 미팅:** 미정
*🤖 Generated by ATTN*
스터디 그룹용 템플릿:
📁 저장 폴더: "Study/{{date:YYYY}}/{{date:MM월}}"
📄 파일명: "Week{{date:WW}}-{{filename}}"
📝 내용:
# 📚 스터디 노트
**날짜:** {{date:YYYY-MM-DD (ddd)}}
**시간:** {{time:HH:mm}}
**파일:** {{filename}}
## 💡 주요 내용
{{summary}}
## 📝 메모
-
---
*📖 Study Group*
✅ Jest 기반 종합 테스트 스위트 구축
✅ TypeScript 기반 type-safe 구현
✅ ESLint + Prettier 코드 품질 관리
✅ GitHub Actions CI/CD 자동화
✅ 모듈식 아키텍처 (확장성 & 유지보수성)
테스트 실행 방법:
# 의존성 설치 (최초 1회)
npm install
# 테스트 실행
npm test
# 커버리지 포함 테스트
npm test -- --coverage
# 타입 체크
npm run typecheck
# 린트 검사
npm run lint
# 리포지토리 클론
git clone https://github.com/bongho/attn-obsidian.git
cd attn-obsidian
# 의존성 설치
npm install
# 개발 모드 실행 (Hot reload)
npm run dev
# 프로덕션 빌드
npm run build
⚠️ npm 설치 시 권한 오류가 발생하는 경우:
# macOS/Linux
sudo chown -R $USER:$(id -gn $USER) ~/.npm
# 또는 강제 설치
npm install --force
품질 검증:
# 전체 테스트 실행
npm test
# 커버리지 포함
npm test -- --coverage
# 타입 체크
npm run typecheck
# 린트 검사
npm run lint
ATTN/
├── src/ # 📁 소스 코드
│ ├── main.ts # 🎭 오케스트레이터 (모든 모듈 조율)
│ ├── settings.ts # ⚙️ 설정 UI 관리
│ ├── templateProcessor.ts # 🎨 템플릿 엔진 (NEW!)
│ ├── apiService.ts # 🤖 OpenAI API 연동
│ ├── noteCreator.ts # 📝 노트 생성 (리팩토링됨)
│ └── types.ts # 📋 TypeScript 인터페이스
├── tests/ # 🧪 TDD 테스트 스위트
│ ├── TemplateProcessor.test.ts # 🆕 템플릿 엔진 테스트
│ ├── SettingsTab.test.ts # 📈 확장된 설정 테스트
│ ├── ApiService.test.ts # 🔄 API 로직 테스트
│ ├── NoteCreator.test.ts # 🔄 노트 생성 테스트
│ └── main.test.ts # 🔄 통합 테스트
├── package.json # 📦 의존성 관리
├── tsconfig.json # ⚙️ TypeScript 설정
├── jest.config.js # 🧪 테스트 설정
└── main.js # 🚀 빌드된 플러그인
OpenAI API 사용료:
예시: 30분 회의 → 약 $0.20~0.50
| 구분 | v1.0 (기존) | v2.0 (확장) |
|---|---|---|
| 파일명 | 고정: 파일명-회의록.md | 템플릿: {{date:MM-DD}}-{{filename}} |
| 저장 위치 | 루트 폴더만 | 자유로운 폴더 구조 |
| 노트 형식 | 고정 템플릿 | 완전 커스터마이징 가능 |
| 확장성 | 제한적 | 플레이스홀더 무제한 조합 |
🧪 Phase 1: Settings Enhancement & Template Engine
✅ ATTNSettings 인터페이스 확장
✅ SettingsTab UI 컴포넌트 추가
✅ TemplateProcessor 모듈 구현
🔄 Phase 2: Core Logic Refactoring
✅ NoteCreator 책임 단순화
✅ main.ts 오케스트레이터 패턴 적용
✅ 모듈 간 결합도 최소화
✨ Result: 확장 가능하고 유지보수가 용이한 아키텍처
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)MIT License - 자세한 내용은 LICENSE 파일 참조
테스트 환경: M2 Max, 50분 오디오 파일
| STT 제공자 | 처리 시간 | 실시간 배율 | 비용 | 파일 크기 제한 |
|---|---|---|---|---|
| Local MLX (medium) | 3분 2초 | 16.45x | 무료 | 무제한 |
| Groq | ~43초 | 70x | ~$0.30 | 25MB |
| Gemini | ~5분 | ~10x | ~$0.03 | 2GB |
| OpenAI | ~8분 | ~6x | ~$0.30 | 25MB |
| Local Whisper | ~25분 | ~2x | 무료 | 무제한 |
42 commits
TypeScript
88.7%
Python
9.8%
JavaScript
1.3%