brunch

Notion+Slack 연결하여 스레드 내용 정리

Zapier, Make, Notion API, ChatGPT API

by sunju park

슬랙slack에서 어떤 안건에 대한 스레드가 생성되었을때,
이 내용을 간단한 명령어로 노션notion으로 보내고, 스레드의 요약까지 한번에 정리하려면 어떤 방법이 있을까?

회사에서 멘션되는 내용은 너무 많은데, 논의한 내용에 대해 최종 요약하는 사람이 없다. (분노)



Slack의 스레드를 Notion으로 자동 전송하고 요약까지 정리하는 방법은 몇 가지가 있는데
Slack 워크플로우 빌더, Zapier, Make, Notion API, ChatGPT API 같은 툴을 조합하면 효율적으로 구현할 수 있다.



1. 기본적인 방법:
Slack → Notion 자동 연동 (1-3)


방법 1: Zapier 또는 Make 활용 (비개발자용)

[!] Slack에서 특정 키워드가 포함된 스레드가 생성되면 자동으로 Notion에 등록


① Zapier/Make에서 Slack과 Notion 연결

Trigger: Slack → 새로운 스레드 생성 시 실행

Action 1: ChatGPT API 사용 → 스레드 요약 생성

Action 2: Notion의 특정 페이지/데이터베이스에 새로운 항목 추가 (제목, 요약, 링크 등 저장)


장점: 코딩 없이 쉽게 설정 가능
단점: Zapier/Make 무료 플랜에서는 실행 횟수 제한 있음




방법 2: Slack Workflow Builder + Notion API (커스텀 자동화)

[!] 간단한 /notion 명령어를 사용하여 특정 스레드를 Notion으로 전송


① Slack 커스텀 명령어 생성 (/notion)

Slack의 **"워크플로우 빌더"**에서 새로운 워크플로우 생성

트리거: /notion 입력 시 실행되도록 설정

스레드 URL, 메시지 내용을 자동으로 가져오기



② Notion API를 사용해 Slack 데이터를 Notion에 저장

Slack의 워크플로우에서 "HTTP 요청 보내기" 블록 추가

Notion의 데이터베이스에 제목, 내용(요약 포함), 링크를 저장

장점: Slack 내에서 쉽게 실행 가능 ( /notion 명령어)
단점: Notion API 설정이 필요함 (기본적인 API 활용법 알아야 함)




방법 3: ChatGPT API로 자동 요약 추가(밑에서 추가 설명)

[!] Slack 스레드를 요약한 후, Notion에 저장하는 고급 자동화

ChatGPT API를 활용하면 Slack 스레드를 자동 요약하고, Notion으로 정리하는 자동화가 가능하다.



① Slack에서 스레드 감지

특정 키워드(예: [논의], [결정])가 포함된 스레드 감지

해당 스레드의 모든 메시지를 수집



② ChatGPT API를 사용해 요약 생성

ChatGPT API에 스레드 메시지를 보내고 핵심 요약 생성

예: "이 스레드를 3줄로 요약해줘"



③ Notion API를 사용해 데이터 입력

제목: 스레드 제목

내용: 요약된 내용

원본 링크: Slack 메시지 URL

장점: 자동 요약 + Notion 연동으로 정보 정리 가능
단점: API 연결이 필요하고, 초반 설정이 필요함





2. 예제 실행 flow

[!] 이렇게 설정하면 Slack에서 Notion으로 빠르게 정보 정리 + 요약 가능

1️⃣ Slack에서 새로운 스레드 생성됨

2️⃣ /notion 명령어 → 해당 스레드 선택

3️⃣ ChatGPT API로 요약 생성 (3~5줄 요약)

4️⃣ Notion API로 데이터베이스에 자동 등록 (제목, 요약, 링크 포함)

5️⃣ Notion에서 자동 업데이트된 항목 확인




3. 정리

Zapier 사용 (Slack → OpenAI → Notion)
⭐⭐ (난이도)
코딩 없이 자동화 가능 (설정만 하면 됨)


Python + OpenAI API

⭐⭐⭐⭐

Slack에서 직접 메시지 가져오고 API 활용 가능


Slack Workflow + Notion API

⭐⭐⭐

명령어 기반으로 간편하게 전송 가능


⭐비개발자라면? → Zapier / Make 활용
⭐개발자라면? → Slack API + ChatGPT API로 직접 구현






근데 ChatGPT API는 어떻게 쓰는거?ㅠ

ChatGPT API를 사용하려면 OpenAI API 키를 발급받고, API 요청을 보내는 환경을 구축해야 한다.

Slack 스레드를 요약하고 Notion으로 보내는 자동화에 활용하려면 다음 단계를 따라가면 된다.


ChatGPT API 사용을 위한 사전 준비 1-3

1. OpenAI API 키 발급

OpenAI API 페이지에서 계정 생성 https://auth.openai.com/create-account

API 키 발급: API 키 관리 페이지 에서 새로운 API 키 생성 https://platform.openai.com/account/api-keys

이 키를 복사해서 안전하게 저장 (한 번만 표시됨)



2. API 요청하는 기본 코드 (Python 예제)

[!] Slack에서 받은 스레드 메시지를 요약하는 예제 코드!


import openai


# OpenAI API 키 설정

openai.api_key = "YOUR_API_KEY" # ← 여기에 발급받은 API 키 입력


def summarize_thread(messages):

prompt = f"다음 메시지 내용을 3줄로 요약해줘:\n\n{messages}"

response = openai.ChatCompletion.create(

model="gpt-4", # 또는 "gpt-3.5-turbo"

messages=[{"role": "user", "content": prompt}],

temperature=0.5

)

return response["choices"][0]["message"]["content"]


# 예제: Slack에서 가져온 스레드 메시지

thread_text = """

사용자1: 이번 주 금요일까지 디자인 초안 제출 가능할까요?

사용자2: 네, 초안 작업 중이고 목요일까지 공유할게요.

사용자3: 그럼 피드백을 금요일 오전까지 주시면 반영해서 최종본 만들겠습니다.

"""


summary = summarize_thread(thread_text)

print("요약된 내용:", summary)



실행 결과 예시:

요약된 내용: 디자인 초안을 금요일까지 제출할 예정이며, 목요일에 초안 공유 후 피드백을 받아 반영할 계획입니다.




3. Slack과 연결하기 (예: Slack Bot 연동) 방법 두 가지

[!] Slack 스레드에서 메시지를 가져와 자동으로 요약


방법 1: Zapier 사용 (비개발자용)

Zapier에서 "Slack → OpenAI → Notion" 자동화 설정

Trigger: Slack 스레드 감지

Action 1: ChatGPT API로 요약

Action 2: Notion API로 정리된 요약을 저장


→ 설정만 하면 자동으로 동작! (코딩 필요 없음)




방법 2: Python으로 직접 Slack 연동 (개발자용)

[!] Slack API를 사용해서 특정 채널/스레드의 메시지를 가져오고, ChatGPT로 요약한 뒤 Notion으로 전송


1️⃣* Slack API에서 메시지 가져오기 (아래 코드)

2️⃣* 가져온 메시지를 ChatGPT로 요약 (아래 코드)

3️⃣ 요약된 내용을 Notion에 저장




1️⃣

import requests


SLACK_BOT_TOKEN = "YOUR_SLACK_BOT_TOKEN"

CHANNEL_ID = "C12345678" # Slack 채널 ID

THREAD_TS = "1700000000.123456" # 특정 스레드의 timestamp


def get_slack_thread(channel, thread_ts):

headers = {"Authorization": f"Bearer {SLACK_BOT_TOKEN}"}

url = "https://slack.com/api/conversations.replies"

params = {"channel": channel, "ts": thread_ts}


response = requests.get(url, headers=headers, params=params)

data = response.json()


if data.get("ok"):

messages = [msg["text"] for msg in data["messages"]]

return "\n".join(messages)

return "메시지를 가져오는 데 실패했습니다."


# Slack 스레드 가져오기

thread_messages = get_slack_thread(CHANNEL_ID, THREAD_TS)



2️⃣

summary = summarize_thread(thread_messages)

print("Slack 스레드 요약:", summary)



(끝)

keyword
작가의 이전글figma 구글싱크 플러그인 에러나는 이유