Discord 웹훅으로 나만의 AI 비서 만들기 (w.Github Actions)

2026. 6. 18. 14:31·🗂️ 자료실/실험 기록
728x90

매일 특정 시간에 알아서 실행되는 자동화 워크플로우는 참 편리하다. 필자 역시 현재 진행 중인 개인 프로젝트에서 Supabase의 자동 정지를 막으려고 스케줄 워크플로우를 구축해 두었다. 하지만 이 녀석이 제대로 일했는지 확인하려면, 매번 직접 깃허브 레포지토리의 Actions 탭을 열어봐야 하는 번거로움이 있었다.

예전에 Gist를 이용한 커밋 수 자동 갱신 워크플로우가 며칠간 미작동했음에도 알림을 받지 못해 뒤늦게 발견했던 경험이 있어서, 만약 이번 Supabase 워크플로우가 어느날 갑자기 미작동하거나 실패했는데 내가 모르고 있는 상황이 생긴다면 문제가 커진다고 생각했다. 그래서 워크플로우의 상태를 지켜보다가 실시간으로 알려줄 나만의 AI 비서를 도입하기로 했다. 이번 포스팅에서는 GitHub Actions와 Discord 웹훅을 연동하여, 터치 한 번 없이도 완벽한 자동 알림 비서를 구축한 과정을 기록해본다.✍️


작업순서 및 구현과정

추후 진행할 다른 프로젝트들의 알림까지 체계적으로 관리할 수 있도록 확장성을 고려하여 작업을 진행했다.

1. Discord 채널 생성 및 독립성 확보

우선 Discord에서 '00의 개발센터' 라는 서버를 오픈하고, 이번 프로젝트 전용 채널을 개설했다. 채널을 프로젝트명으로 분리해두면, 미래에 다른 프로젝트를 추가하더라도 확장성 있게 관리할 수 있겠다고 생각했다.

2. Discord Webhook 발급

해당 채널의 설정에서 웹훅 URL을 생성하고 복사했다. 이 웹훅 주소만 알면 누구나 내 디스코드 채널에 스팸 메시지를 보낼 수 있으므로, 절대 유출되어서는 안 된다.

3. Github Secrets 등록

복사한 웹훅 주소를 안전하게 관리하기 위해, github 저장소의 시크릿으로 등록했다. [Settings > Secrets and variables > Actions] 경로로 이동하여 DISCORD_WEBHOOK_URL이라는 이름으로 주소를 안전하게 숨겨주었다.

4. yml 워크플로우 파일에 step 추가

기존 워크플로우 파일 맨 아래쪽에 알림을 보내주는 단계를 추가했다. 앞선 스텝들이 성공/실패했을 경우에만 실행되도록 조건을 걸어주었으며, 알림이 도착했을때 사람이 보낸 메시지처럼 보이면 좋을 것 같아서 '에이든'이라는 이름을 지어주었다.

실제 코드는 아래와 같다.

- name: Discord Notify (Success)
  if: success()
  env: 
    DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
  run: |
    CURRENT_TIME=$(TZ='Asia/Seoul' date '+%Y-%m-%d %H:%M (KST)')
    curl -H "Content-Type: application/json" \
      -d "{
        \"content\":\"✅ 에이든의 일일보고 [성공]\n (이하 생략) \n현재 시스템은 정상 상태입니다.\"
      }" \
      $DISCORD_WEBHOOK_URL
      
- name: Discord Notify (Failure)
  if: failure()
  env: 
    DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
  run: |
    CURRENT_TIME=$(TZ='Asia/Seoul' date '+%Y-%m-%d %H:%M (KST)')
    curl -H "Content-Type: application/json" \
      -d "{
        \"content\":\"🚨 에이든의 일일보고 [실패]\n (이하 생략) \n확인이 필요한 이벤트가 발생했습니다.\nGitHub Actions 실행 로그를 확인해주세요.\"
      }" \
      $DISCORD_WEBHOOK_URL

그런데 이 코드를 쓰면서, 실무에서 다뤄봤지만 너무 오랜만이라 개념이 흐릿했던 옵션들을 발견했다.

curl, -H, -d 옵션인데 이번 기회에 확실하게 짚고 넘어가는게 좋을 것 같아서 정리하고자 한다.

일단 전체 코드의 의미는 "Discord 서버가 요구하는 형식(JSON)으로 데이터를 포장해서 깃허브 시크릿에 설정해둔 웹훅 주소로 보낸다" 라는 의미이다.

  • curl (Client URL):
    cli(터미널) 환경에서 HTTP 요청을 보낼 수 있는 명령어.
    여기서는 Discord 웹훅 URL을 수신자로 지정하여, 터미널 환경에서 백그라운드로 HTTP POST 요청을 생성하고 발송하는 트리거 역할을 수행한다.
  • -H (Header):
    HTTP 요청의 헤더(Header) 정보를 지정한다.
    여기서는 Discord API 서버에게 "지금 보내는 데이터는 JSON 구조"라고 알려주는 역할을 한다. (만약 이 헤더를 누락하면 Discord 서버는 데이터 형식을 알지 못해 400 Bad Request 에러를 반환한다.)
  • -d (Data):
    POST 요청으로 보낼 실제 데이터 내용(body)을 지정한다. 이 옵션을 사용하면 curl은 기본적으로 요청 메서드를 POST로 변경하여 전송한다.
    여기서는 Discord 웹훅 API 스펙이 요구하는 최상위 Object의 content 키값에 맞추어 {"content": "보낼 메시지"} 형태의 JSON 문자열을 바디에 담아 보냈고, 서버는 이 데이터를 받아서 실제 Discord 채널에 메시지로 전송하게 된다.

실행 결과 및 자동 알림 확인

오전 10시반쯤, 모든 설정을 마치고 main 브랜치로 PR까지 끝냈다. 기존 실행 기록을 보니 매일 낮 12시반쯤 자동으로 스케줄러가 작동했기 때문에, 설레는 마음으로 오늘의 자동 실행을 기다렸다.

몇 시간 뒤, 예정된 시간에 핸드폰에 Discord 알림이 등장했다. 알림을 확인하고, 바로 깃허브에서 Actions 탭을 클릭해서 상태 확인까지 마쳤다.👍

예전에는 매번 직접 레포지토리에 들어가서 Actions 탭을 클릭해봐야 한다는게 번거로웠는데, 이렇게 눈 앞에서 실시간으로 성공 보고를 받으니 마음이 놓였다. 이제 내 코드에 어떤 상황이 발생해도 Discord가 알려줄거라 생각하니 안심이 된다.


이번 작업을 통해 단순히 코드를 자동화하는 것에 그치지 않고, 시스템이 나에게 찾아와 직접 상태를 보고하는 능동적인 모니터링 환경을 구축할 수 있었다. 게다가 그동안 종종 헷갈렸던 cURL 명령어와 HTTP 통신 구조의 기본기까지 다시 한번 탄탄하게 짚고 넘어갈 수 있는 좋은 시간이었다.

Discord 채널명을 명확하게 분리해두었으니, 앞으로 다른 프로젝트들도 이 서버에서 체계적으로 관리해봐야겠다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'🗂️ 자료실 > 실험 기록' 카테고리의 다른 글

Github Actions 사용해보기  (0) 2026.02.15
SSH 서버와 github 연결하기  (0) 2025.11.15
맥북 개발환경 설정 (홈브루, git, node.js 설치)  (0) 2025.02.27
맥북 주요 단축키 정리  (0) 2025.02.15
IDE의 종류 (VS code 에러 해결)  (0) 2025.02.13
'🗂️ 자료실/실험 기록' 카테고리의 다른 글
  • Github Actions 사용해보기
  • SSH 서버와 github 연결하기
  • 맥북 개발환경 설정 (홈브루, git, node.js 설치)
  • 맥북 주요 단축키 정리
yjinn
yjinn
풀스택으로 진화 중인 Junior FE
  • 전체
    오늘
    어제
    • 분류 전체보기 (193) N
      • 💻 Frontend (92)
        • UI.UX.Figma (5)
        • HTML, git (12)
        • CSS, Tailwind (9)
        • JS, TS (26)
        • React (21)
        • Redux, Zustand (5)
        • Next.js (14)
      • 💾 Backend (47)
        • SQL, Supabase (15)
        • Java, PHP (9)
        • Python, FastAPI (22)
      • 🎨 프로젝트 회고 (21)
      • 🗂️ 자료실 (33) N
        • 실험 기록 (11) N
        • 기본 상식 (17)
        • 개발도서 읽기 (3)
  • 블로그 메뉴

    • 태그
    • GitHub
    • Portfolio
    • Linkedin
    • Codepen
  • hELLO· Designed By정상우.v4.10.0
yjinn
Discord 웹훅으로 나만의 AI 비서 만들기 (w.Github Actions)
상단으로

티스토리툴바