Slack + TickTick + GPT로 만드는 아침 일정 비서 구상기
소개
"지금 너가 하는 기능을 Activepieces를 통해 자동화를 하려고 해"라는 생각에서 이 프로젝트가 시작됐습니다. 😊
평소에는 GPT를 직접 열어서 아침 스케줄을 함께 짰지만,
GPT 앱을 켜지 않아도
슬랙이나 카카오톡 같은 메신저에서
TickTick과 연동된 나만의 아침 일정 비서
를 만들고 싶어졌어요.
그런데 막상 자동화를 만들려고 보니, 제가 스스로도
"정확히 어떤 기능을, 어떤 흐름으로 구현하고 싶은지"
가 명확하지 않다는 걸 깨달았습니다.
그래서 먼저 GPT와 긴 대화를 나누면서,
어떤 시나리오부터 만들지
어떤 메신저 채널을 쓸지 (텔레그램 vs 슬랙 vs 카카오톡)
각 단계에서 봇이 어떤 질문을 하고, 내가 무엇을 입력할지
TickTick, GPT, Activepieces가 각각 어떤 역할을 할지
를 텍스트로 하나씩 정리해 나간 과정이 바로 이 사례입니다.
진행 방법
1. 문제 정의: "GPT를 밖으로 꺼내고 싶다"에서 시작
처음 제가 GPT에게 던진 요구는 아주 단순했습니다.
지금 너가 하는 기능을 Activepieces를 통해 자동화를 하려고 해.
ticktick과 연동도 하고, GPT에 들어오지 않고 슬랙/카카오톡/텔레그램 메시지로도 같은 경험을 하고 싶어.
여기서 GPT와 대화를 나누며 자연스럽게 기능이 쪼개졌습니다.
아침 스케줄링
컨디션 질문
오늘 고정 일정 확인 및 스케줄 조정
Obj1~3 (핵심 업무) 설정
기타 업무 수집 및 오전/오후 배치
Markdown 요약 생성
핵심업무(Obj1~3) 진행 보조
"Obj 1 시작" 같은 트리거 → Worklog 템플릿 질문 → .md 정리
TickTick 연동
오늘 Obj1~3를 TickTick에 태스크로 생성
기타 업무와 동기화
메신저 인터페이스
텔레그램/슬랙/카톡에서 문자를 보내면 → GPT가 답변 → 다시 같은 채널로 응답
GPT는 이 기능들을 바탕으로 전체 구조를 이렇게 잡아줬습니다.
메신저 ↔ Activepieces ↔ (OpenAI API + TickTick API + 상태 저장 DB)
이 구조를 기준으로 세부 시나리오를 하나씩 좁혀가기 시작했습니다.
2. 시나리오 선택: Daily Schedule v1부터
너무 많은 걸 한 번에 만들기보다는, GPT와 상의해서 다음 3가지 후보 중 하나를 먼저 만들기로 했습니다.
아침 Daily Schedule (컨디션 → 스케줄 → TickTick 생성)
Obj 1~3 Worklog 플로우 (작업 시작 시 질문 & 정리)
TickTick 태스크를 메신저로 빠르게 추가/관리하는 최소 기능
이 중에서 1번: 아침 Daily Schedule을 v1으로 먼저 잡았습니다.
"하루의 시작 의식"을 먼저 자동화하고,
그 위에 Worklog/리마인더 같은 기능을 나중에 얹는 전략으로.
3. 채널 선택: 텔레그램에서 슬랙으로 방향 전환
초기 구상은 텔레그램 봇 기준이었지만, 제가 실제로는 텔레그램을 거의 쓰지 않는다는 문제가 있었습니다.
그래서 GPT에게 이렇게 말했습니다.
텔레그램을 안 쓰는데, 굳이 텔레그램으로 해야 할까?
슬랙이나 카카오톡으로 구현할 수 있으면 더 좋겠다.
GPT는
구현 난이도
Activepieces와의 연동 난이도
을 고려해서 1차 채널은 슬랙으로 정하는 방향을 제안했고, 저도 이에 동의했습니다.
정리하면:
v1: 슬랙 DM을 통해 아침 스케줄을 함께 짠다.
나중에: 텔레그램 혹은 카카오톡으로 확장 가능성을 열어둔다.
4. 0단계 – 전체 아키텍처 구상
GPT와 대화를 통해 정리된 전체 구조는 아래와 같습니다.
입력/출력 채널: 슬랙 봇 DM
오케스트레이션: Activepieces 플로우
두뇌(로직): OpenAI API (GPT)
작업 관리: TickTick API
상태 저장소: Activepieces Data Store 또는 별도 DB (예: Airtable/Notion)
흐름을 텍스트로 표현하면:
슬랙에서
/day또는 "시작하기"를 입력하거나, 08:30 알림에서 버튼 클릭Activepieces가 슬랙 이벤트를 받아서 해당
user_id와 오늘 날짜로 세션 조회세션 상태(phase, answers)에 따라 어떤 질문을 할지 결정 → GPT 호출
GPT가 다음에 보낼 메시지 + 업데이트된 상태를 JSON으로 반환
Activepieces가 JSON을 파싱해서
슬랙으로 메시지 전송
상태를 Data Store에 저장
스케줄이 완성되면 TickTick에 태스크 생성
이때 GPT에게는 매번 이런 형식의 응답을 요구하는 설계까지 했습니다.
{
"reply_text": "사용자에게 보낼 다음 질문 또는 최종 요약",
"phase": "ASK_CONDITION",
"answers_delta": {
"condition": {
"sleep_hours": 6.5,
"body_score": 7,
"condition_score": 6,
"focus_score": 5
}
},
"is_finished": false,
"schedule_structured": null
}
스케줄 이 완성되는 마지막 단계에서는 is_finished: true와 함께 아래처럼 구조화된 결과를 돌려주도록 구상했습니다.
{
"reply_text": "오늘 스케줄 정리했어요:\n```markdown\n# Daily Schedule...\n```",
"phase": "FINISHED",
"answers_delta": { ... },
"is_finished": true,
"schedule_structured": {
"core": [
{ "title": "Obj1 제목", "block": "10:00-11:30" },
{ "title": "Obj2 제목", "block": "14:00-15:30" },
{ "title": "Obj3 제목", "block": "16:00-17:30" }
],
"misc_am": ["업무 A", "업무 B"],
"misc_pm": ["업무 C"]
}
}
이 JSON을 기반으로 TickTick에 태스크를 만드는 단계까지 구상했습니다.
5. 1단계 – 아침 08:30 슬랙 알림 & 시작 방식
제가 GPT와 함께 정의한 v1 시나리오에서, 사용자는 이렇게 하루를 시작합니다.
1) 08:30 자동 DM 알림
매일 08:30, 슬랙 봇이 DM으로 메시지를 보냅니다.
🌅 좋은 아침이에요!
오늘 09:00~18:00 일정 같이 짜볼까요?[시작하기] [오늘은 패스]
이 알림은 시간 기반 트리거(크론)로 Activepieces에서 실행
슬랙에서는 Block Kit 버튼으로 구현 → 버튼 클릭이 다시 Activepieces 트리거가 됨
2) 수동 시작도 가능해야 함
알림을 놓쳤거나 아예 보지 못한 날을 위해, GPT와 이렇게 합의했습니다.
슬래시 커맨드
/day또는/schedule혹은 봇 DM에 그냥 "시작하기", "오늘 일정 시작" 같은 키워드를 보내도 플로우 시작
그래서 “푸시 + 풀” 둘 다 열어둔 구조로 설계했습니다.
6. 2단계 – 컨디션 체크 개편: 숫자 기반 입력
처음 GPT가 제안했던 컨디션 질문은 감정 위주의 서술형이었는데,
저는 나중에 데이터를 쌓아서 패턴을 보고 싶어서 숫자 기반으로 바꾸자고 요청했습니다.
그래서 아래와 같이 재정의했습니다.
수면시간
질문: "어제 총 수면시간은 몇 시간이었나요? 숫자로 적어주시고, 잘 모르겠으면
?를 입력해주세요."입력:
6,7.5, 혹은?저장:
sleep_hours: 6.0또는null
몸 상태 (body_score)
질문: "지금 몸 상태를 1~10으로 표현하면 몇 점인가요?\n1: 거의 방전 / 10: 완전 쌩쌩"
입력:
1~10
컨디션(종합 느낌, condition_score)
질문: "오늘 전반적인 컨디션(기분/에너지)을 1~10으로 표현하면 몇 점일까요?"
집중력 (focus_score)
질문: "지금 집중력은 1~10 중 몇 점 같아요?"
GPT와 정의한 컨디션 데이터 구조는 아래와 같습니다.
"condition": {
"sleep_hours": 6.5,
"body_score": 7,
"condition_score": 6,
"focus_score": 5
}
이 값들은
Daily Schedule 마크다운 상단에 그대로 노출하고,
나중에는 "컨디션 vs 하루 성과"를 보기 위한 지표로도 활용할 계획입니다.
7. 3단계 – TickTick에서 오늘 고정 일정 불러오기
컨디션을 기록한 다음 단계로, 저는 이렇게 제안했습니다.
2단계 고정일정은 TickTick에서 확인하고 알려주면 좋을 것 같다.
TickTick에 오늘 날짜 스케줄을 확인하고 이미 잡힌 일정이 있으면/없으면 각각 다르게 안내했으면 좋겠다.
이에 맞춰 GPT와 함께 다음과 같이 설계했습니다.
1) TickTick에서 오늘 일정 조회
Activepieces가 TickTick API를 통해 오늘 날짜 기준 일정/태스크 조회
그 중에서
시간 정보가 있는 일정
혹은 "고정일정"으로 분류된 리스트/태그만 필터링
내부적으로는 예를 들어 이런 형태로 가지고 있도록 구상했습니다.
"fixed_events_from_ticktick": [
{ "title": "팀 회의", "start": "11:00", "end": "12:00" },
{ "title": "병원", "start": "15:30", "end": "16:00" }
]
2) 슬랙에 사용자 친화적으로 보여주기
고정 일정이 있을 때
"현재 TickTick에 오늘 잡힌 일정이 확인됩니다.\n\n11:00~12:00 팀 회의\n15:30~16:00 병원\n\n추가로 더 있는 일정이나, 변경하고 싶은 일정이 있으신가요?"
고정 일정이 없을 때
"현재 TickTick에 기록된 오늘의 고정 일정은 확인되지 않습니다.\n추가 일정이나 변경사항이 있으신가요?\n(예: 11:00~12:00 팀 미팅, 15:00 치과 등)\n없으면 '없어요'라고 답해주세요."
사용자가 여기서
"변경 없어요"
"13:00~14:00 점심 약속 있어요"
"팀 회의는 11:30~12:30으로 변경됐어요"
같이 답하면, GPT가 이를 파싱해서 최종 고정 일정 리스트를 확정하는 그림입니다.
3) 기본 타임블록과의 자동 재배치
이후에는
09~18시 기본 타임블록(버퍼, Obj1~3, 점심 등)
고정 일정 리스트
를 가지고 ScheduleAdjustMechanism 규칙에 따라 자동 재배치를 하도록 구상했습니다.
예를 들어 이런 규칙들입니다.
점심, 퇴근 시간은 최대한 고정
고정 일정이 버퍼 시간을 침범하면 버퍼부터 줄이기
Obj 블록이 60분 이상 잘리면 다른 블록으로 이동/재배치
30분 미만이면 앞뒤로 당겨붙이기 등
이 재배치 결과는 나중에
핵심 업무(Obj1~3)
기타 업무(오전/오후)
입력까지 모두 받은 뒤, 최종 Daily Schedule 마크다운에 표 형태로 정리해서 보여주는 것까지 함께 설계해 두었습니다.
결과와 배운 점
이번 대화와 구상 과정을 통해 느낀 점을 정리해보면:
"무엇을 만들지"를 글로 쓰는 것 자체가 큰 일이다 🧠
처음에는 그냥 "GPT를 Activepieces로 옮겨서 자동화하고 싶다"는 한 줄짜리 욕망뿐이었습니다.
GPT와 시나리오를 쪼개다 보니,
→ 아침 Daily Schedule, Worklog, 리마인더 등 여러 기능 덩어리가 보이기 시작했습니다.
시나리오를 먼저 잡으니, 구현은 그 다음이었다
"유저 입장에서 아침에 어떤 흐름으로 대화가 흘러가야 자연스러운지"를 먼저 정리했습니다.
그래서 v1을 "아침 08:30 알림 + 컨디션 + 고정 일정까지"로 딱 잘라서 정의할 수 있었고,
나머지 기능들은 v2로 미뤄두는 의사결정이 쉬워졌습니다.
채널 선택도 요구사항의 일부라는 걸 깨달았다
텔레그램이 예시로 많이 나오지만, 저는 텔레그램을 거의 쓰지 않습니다.
실제 사용하는 도구(슬랙)를 기준으로 다시 설계하니,
"내가 정말 내일 아침부터 쓸 수 있는 흐름"이 그려졌습니다.
GPT는 자동화 설계의 파트너로 쓰기 좋다
GPT가 자동화 플로우를 "다 짜주는" 도구가 아니라,
생각을 구조화해주는 파트너라는 느낌이 들었습니다.특히 JSON 스키마, 상태 필드, 단계 이름(phase) 같은 것들을 함께 논의하면서
제가 머릿속으로만 갖고 있던 흐름이 문서화되었습니다.
다음 단계가 자연스럽게 보인다
지금까지의 구상 덕분에, 다음에 무엇을 하면 될지가 명확합니다.
예를 들어:
슬랙 기준
/dayvs 버튼 중심 중 1차 구현 방식 선택GPT 시스템 프롬프트를 실제로 작성
Activepieces에서
슬랙 트리거
Data Store 구조
OpenAI 호출 액션
을 블록 단위로 만들기
도움 받은 글
🤖 ChatGPT 대화 공유 링크(요구사항 구체화 전 과정)
🧩 Activepieces 공식 Slack / TickTick 연동 페이지
📚 TickTick, 슬랙, OpenAI API 문서 및 Activepieces 관련 블로그 글들
이번 사례는 "아직 구현 전" 단계지만,
어떻게 생각을 구조화하고, 어떤 기준으로 v1의 범위를 자를지에 집중한 구상기입니다.
앞으로 실제 Activepieces 플로우를 만들면서 겪는 시행착오도 이어서 정리해볼 예정입니다. 😊