# Notion Notification System 노션(Notion)의 페이지 및 데이터베이스 변경 사항을 감지하고, 이를 Mattermost로 전송하는 웹훅 기반 알림 시스템입니다. --- ## 🔧 주요 기능 - Notion Webhook 수신 서버 구현 (Flask 기반) - 변경 이벤트를 파싱하여 메시지 생성 - Mattermost에 메시지를 전송 (웹훅 또는 봇 API 방식 모두 지원) - .env 환경 설정 기반 유연한 구성 - 향후 다양한 웹훅 소스 확장을 고려한 구조 --- ## 📁 프로젝트 구조 ```bash notion_noti/ ├── app.py # Flask 진입점 ├── config.py # .env 기반 설정 로드 및 검증 ├── views.py # 웹훅 라우트 정의 ├── lib/ │ ├── notion_api.py # 노션 이벤트 파싱/처리 │ └── send_message.py # Mattermost 메시지 전송 기능 ├── .env # 환경 설정 파일 ├── requirements.txt # 의존 패키지 목록 ``` --- ## ⚙️ 설치 및 실행 ### 1. 의존 패키지 설치 ```bash python -m venv .venv source .venv/bin/activate # (Windows: .venv\Scripts\activate) pip install -r requirements.txt ``` ### 2. 환경 설정 `.env` 파일을 아래와 같은 형식으로 작성합니다. ```env # 서버 설정 SERVER_DOMAIN=example.com SERVER_PROTOCOL=https WEBHOOK_SERVER_HOST=0.0.0.0 WEBHOOK_SERVER_PORT=5000 # Notion API NOTION_API_SECRET=secret_xxxxx #NOTION_WEBHOOK_SECRET=your_webhook_secret # (선택사항) # Mattermost 설정 (둘 중 하나 이상) MATTERMOST_WEBHOOK_URL=https://mattermost.example.com/hooks/abc123 # 또는 MATTERMOST_BOT_TOKEN=your_token MATTERMOST_CH_ID=channel_id_here # 기타 DEBUG=true LOG_LEVEL=INFO ``` ### 3. 실행 ```bash python app.py ``` Flask 서버가 다음과 같이 실행됩니다. ```csharp * Running on http://0.0.0.0:5000 ``` ## 🧪 테스트 ### curl로 웹훅 테스트 ```bash curl -X POST http://localhost:5000/webhook/notion \ -H "Content-Type: application/json" \ -d '{ "event": "test_event", "page_id": "abc123", "action": "created" }' ``` ### Postman 또는 테스트 스크립트도 사용 가능 ## 📌 확장 계획 - Mattermost 슬래시 명령어 처리 - 다른 서비스(GitHub, Jira 등)의 웹훅 수신 처리 - 메시지 템플릿 설정 지원 - Docker 이미지 제공 - Synology NAS 환경에서 안정화 운영 지원