채널톡 대신 슬랙 무료 플랜으로 같은 아이디어 수집함을 만듭니다. #아이디어 채널에 글이나 사진을 올리면 Make가 옵시디언용 md 파일과 구글 시트 한 줄을 만들고, 원래 메시지에 ✅ 반응을 붙입니다.
채널톡 버전과 비교
| 항목 | 채널톡 | 슬랙 |
|---|---|---|
| 요금 | 채널톡 요금제 | 무료 플랜으로 충분 (메시지 90일 보관, 앱 연결 10개. 아이디어는 드라이브·시트로 옮겨지니 문제없음) |
| 시작 모듈 | Custom webhook (즉시) | Slack › Watch Public Channel Messages (몇 분 간격 확인) |
| 사진 받기 | 주소 받기(HTTP) → 다운로드(HTTP) | Slack › Download a File 하나 |
| 사진 + 글 | 한 메시지 | 한 메시지, 여러 장 모두 |
| 완료 표시 | 방에 일반 메시지 | 원래 메시지에 ✅ 반응 (또는 스레드 답글) |
| 링크 | 글자 그대로 | <https://…>처럼 꺾쇠로 감싸서 옴 → 꺾쇠 제거 필요 |
| 무한 반복 | 봇 필터 필요 | 반응은 메시지가 아니라 반복 없음 |
사전 준비
슬랙
- slack.com에서 무료 워크스페이스를 만듭니다. 혼자 써도 됩니다.
- 공개 채널
#아이디어를 만듭니다. - 내 멤버 ID를 확인합니다. 내 프로필 → ⋮ → 멤버 ID 복사 (
U0…형태, 필터에 사용)
Make
- Slack 모듈을 처음 추가할 때 Create a connection → 슬랙 워크스페이스 로그인 → 허용.
- 연결 후
#아이디어채널에서/invite @Make를 입력합니다. 반응·파일 받기 권한 때문에 필요할 수 있습니다.
구글 드라이브·시트
채널톡 버전과 같습니다.
- md 폴더: 옵시디언 볼트의
00. Inbox - 사진 폴더:
99. Setting/99. Attachment(링크가 있는 모든 사용자 뷰어로 공유) - 시트 헤더:
메시지ID | 일시 | 내용 | 작성자 | md링크 | 사진URL | 상태
입력 규칙은 채널톡 버전과 같습니다. 정규식이 없는 수식은 {{ }}째로 붙여넣고, 항목은 매핑 패널에서 클릭하고, 정규식은 직접 타이핑합니다. 칸에 {{일시}}처럼 글자 그대로 보이면 실패입니다.
전체 구조
모듈 번호는 채널톡 버전을 복제해 고친 번호라 순서대로가 아닙니다. 슬랙으로 바뀐 곳은 [1], [8], [5]이고, 채널톡의 사진 주소 받기(HTTP)와 다운로드(HTTP)가 [8] 하나로 합쳐집니다.
1st 경로 · 사진 있음
2nd 경로 · 항상
모듈별 설정
1Slack › Watch Public Channel Messages
Channel은 #아이디어, Limit은 10.
- 처음 저장할 때 어디서부터 볼지 물으면 From now on을 고릅니다. 예전 메시지를 전부 가져오지 않게 합니다.
- 몇 분 간격으로 새 메시지를 확인합니다. 간격은 화면 아래 시계 아이콘(스케줄)에서 정하며, Make 무료 요금제는 최소 15분입니다.
- 실제 항목 이름은 첫 실행 뒤 HISTORY에서 확인하세요. 주로 쓰는 항목:
Text,User,Timestamp(ts),Files[],Bot ID,Subtype.
필터[1] → [2] 내 메시지만
| 위 칸 | 연산자 | 아래 칸 |
|---|---|---|
1. User | Text operators: Equal to | 내 멤버 ID (U0…) |
1. Thread Timestamp | Basic operators: Does not exist | (비워둠) |
- 두 번째 조건은 스레드 답글을 새 아이디어로 저장하지 않게 막습니다. 스레드 답글도 받으려면 빼세요.
- 봇 메시지와 ✅ 반응은 첫 번째 조건에서 걸러집니다.
2Tools › Set variables
| 변수 | 값 (붙여넣기) |
|---|---|
| 일시 | {{formatDate(parseDate(first(split(1.ts; ".")); "X"); "YYYY-MM-DD HH:mm"; "Asia/Seoul")}} |
| 파일일시 | {{formatDate(parseDate(first(split(1.ts; ".")); "X"); "YYYYMMDD-HHmmss"; "Asia/Seoul")}} |
| 본문 | {{ifempty(replace(replace(replace(trim(1.text); "<"; ""); ">"; ""); "&"; "&"); "(사진)")}} |
| 제목 | {{ifempty(substring(first(split(replace(replace(trim(1.text); "<"; ""); ">"; ""); newline)); 0; 40); "사진메모")}} |
1.ts,1.text가 블록이 안 되면 매핑 패널의 [1] Timestamp, Text를 클릭해 넣으세요.- 슬랙 시각(
ts)은1727340000.123456처럼 초 단위라 점 앞만 떼어 씁니다. 감시 간격 때문에 늦게 처리돼도 실제로 보낸 시각이 들어갑니다. 본문: 슬랙은 링크를<https://…>로 감싸고&를&로 바꿔 보냅니다. 이걸 원래대로 돌립니다. 정규식이 없어서 붙여넣어도 깨지지 않습니다.
본문md는 본문 속 모든 링크를 로 바꿉니다. 정규식이 있으니 직접 구성합니다.
- 함수 패널에서
replace클릭 - 첫 칸: 붙여넣기
{{replace(replace(replace(trim(1.text); "<"; ""); ">"; ""); "&"; "&")}} - 둘째 칸 (타이핑):
/https?:\/\/[^\s)\]]+/g - 셋째 칸 (타이핑, 따옴표 없이):

필터[6] → [7] 사진 있음
Router의 1st 경로에 겁니다. 위 칸 1. Files[], 연산자 Array operators: Length greater than, 아래 칸 0. 2nd 경로엔 필터가 없습니다.
7Flow Control › Iterator
Array에 1. Files[].
8Slack › Download a File
모듈이 요구하는 칸에 맞춰 Iterator [7] › ID 또는 Iterator [7] › URL Private Download를 넣습니다. 슬랙 파일은 로그인이 필요한 주소라 HTTP 모듈로는 받을 수 없고, 이 모듈이 인증까지 처리합니다. 결과로 File name, Data가 나옵니다.
11Google Drive › Upload a File 사진 저장
폴더는 99. Setting/99. Attachment, File은 Map, Data는 8. Data. File Name은 이렇게 조립해 20260926-172015_1.png를 만듭니다.
- Tools [2] › 파일일시 클릭 → 뒤에
_타이핑 - Iterator [7] › Bundle order position 클릭 → 뒤에
.타이핑 - Iterator [7] › Filetype 클릭 (없으면
{{last(split(7.name; "."))}}붙여넣기)
12Tools › Array aggregator
Source Module은 Iterator [7]. Aggregated fields는 [11]의 Name, Web View Link.
13Tools › Set variables 사진md · 사진URL
사진md는 사진마다 옵시디언 임베드 ![[파일명]] 한 줄을 만듭니다.
- Value 칸에
![[타이핑 {{join(map(12.array; "name"); newline)}}붙여넣기- join 안
newline블록 앞에]], 뒤에![[타이핑 - 맨 끝
)뒤에]]타이핑
![[ join( map( 12. Array[] ; name ) ; ]] newline ![[ ) ]]
사진URL은 {{join(map(12.array; "webViewLink"); newline)}}를 붙여넣습니다.
14Tools › Get multiple variables
2nd 경로 맨 앞에 둡니다. 변수 사진md, 사진URL을 꺼냅니다. 사진이 없으면 둘 다 빈 값이 됩니다.
3Google Drive › Upload a File md 생성
폴더는 00. Inbox, File Name은 2. 파일일시 + _ + 2. 제목 + .md. Data는 아래 템플릿에서 [ ] 자리를 매핑 패널에서 클릭해 넣습니다.
---
created: [2. 일시]
source: slack
author: 석대표
status: 대기
tags: [idea]
message_id: [1. Timestamp]
---
[2. 본문md]
[14. 사진md]
4Google Sheets › Add a Row
Raw, Overwrite 같은 설정은 채널톡 버전과 같고, 칸만 이렇게 넣습니다.
| 칸 | 값 |
|---|---|
| 메시지ID | 1. Timestamp |
| 일시 | 2. 일시 |
| 내용 | 2. 본문 |
| 작성자 | 석대표 직접 입력 |
| md링크 | 3. Web View Link |
| 사진URL | 14. 사진URL |
| 상태 | 대기 |
5Slack › Add a Reaction ✅
| Channel | #아이디어 (또는 1. Channel) |
| Message timestamp | 1. Timestamp |
| Emoji name | white_check_mark (콜론 없이) |
- 저장이 모두 끝난 뒤 원래 메시지에 ✅가 붙습니다. ✅가 없으면 실패한 것이니 HISTORY를 보세요.
- 스레드 답글이 좋으면 이 모듈 대신 Slack › Create a Message를 씁니다. Channel
#아이디어, Text완료!, Thread message ID(ts) =1. Timestamp.
즉시 처리가 필요하면
[1]은 몇 분 간격으로 확인하므로, 메시지를 보내고 ✅가 붙기까지 최대 한 간격(무료 요금제 15분)이 걸립니다. 바로 처리하려면 슬랙 앱을 직접 만들어 Event Subscriptions로 Make 웹훅에 보내는 방법이 있습니다. 설정이 훨씬 복잡해서 따로 다루겠습니다.