Notion Notification System

노션(Notion)의 페이지 및 데이터베이스 변경 사항을 감지하고, 이를 Mattermost로 전송하는 웹훅 기반 알림 시스템입니다.


🔧 주요 기능

  • Notion Webhook 수신 서버 구현 (Flask 기반)
  • 변경 이벤트를 파싱하여 메시지 생성
  • Mattermost에 메시지를 전송 (웹훅 또는 봇 API 방식 모두 지원)
  • .env 환경 설정 기반 유연한 구성
  • 향후 다양한 웹훅 소스 확장을 고려한 구조

📁 프로젝트 구조

notion_noti/
├── app.py # Flask 진입점
├── config.py # .env 기반 설정 로드 및 검증
├── views.py # 웹훅 라우트 정의
├── lib/
│ ├── notion_api.py # 노션 이벤트 파싱/처리
│ └── send_message.py # Mattermost 메시지 전송 기능
├── .env # 환경 설정 파일
├── requirements.txt # 의존 패키지 목록

⚙️ 설치 및 실행

1. 의존 패키지 설치

python -m venv .venv
source .venv/bin/activate   # (Windows: .venv\Scripts\activate)
pip install -r requirements.txt

2. 환경 설정

.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. 실행

python app.py

Flask 서버가 다음과 같이 실행됩니다.

 * Running on http://0.0.0.0:5000

🧪 테스트

curl로 웹훅 테스트

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 환경에서 안정화 운영 지원
Description
mattermost 에 업무용 노티를 보냄
Readme 48 KiB
Languages
Python 98.6%
Dockerfile 1.4%