👉 핵심 결론: 유료 클라우드 서버나 24시간 켜둔 PC 없이도, GitHub Actions의 무료 크론(cron) 스케줄러(월 2,000분 무료)를 활용해 매일 정해진 시각에 파이썬 크롤러를 자동 실행하고 결과를 저장하는 서버리스 무인 자동화 구축 가이드입니다.
- 매일 아침 파이썬 스크립트를 돌리기 위해 컴퓨터를 켜고 터미널을 띄우느라 번거로우셨나요?
- 무인 자동화를 하려고 AWS나 라이트세일 서버를 빌리자니 매월 청구되는 달러 요금이 아까우셨나요?
- 깃허브 액션(GitHub Actions)은 개발자 배포용인 줄만 알고 웹 크롤링이나 스케줄러로 쓰는 법을 모르셨나요?

1. [서버리스 혁신] 왜 유료 클라우드 대신 깃허브 액션을 써야 하는가

매일 아침 특정 사이트의 뉴스나 환율, 쇼핑몰 최저가를 긁어오는 파이썬 코드를 작성하고 나면 가장 먼저 고민되는 것이 "이걸 매일 어떻게 자동으로 돌릴까?"입니다. 내 컴퓨터를 24시간 켜두자니 전기세와 소음이 걱정되고, AWS나 라이트세일 같은 클라우드 서버를 빌리자니 매월 청구되는 비용이 아깝습니다.
이때 전 세계 수많은 개발자들이 사용하는 치트키가 바로 깃허브 액션(GitHub Actions)입니다. 깃허브 액션은 단순한 코드 배포 툴이 아니라, 마이크로소프트가 제공하는 강력한 리눅스 가상머신을 원하는 스케줄(cron)에 따라 완전 무료로 돌릴 수 있는 서버리스 엔진입니다.
| 비교 항목 | 유료 클라우드 서버 (AWS/VPS) | 깃허브 액션 (GitHub Actions) |
|---|---|---|
| 월 이용 요금 | 월 7,000원 ~ 20,000원 | 완전 무료 (월 2,000분 무료 / Public 무제한) |
| 인프라 유지보수 | OS 보안 패치, 방화벽 세팅 직접 관리 | 서버리스 (깃허브가 100% 자동 관리) |
| PC 상시 가동 | 필요 없음 (클라우드 상시 구동) | 필요 없음 (내 PC 꺼져 있어도 자동 실행) |
| 결과물 저장 | DB 구축하거나 별도 스토리지 연결 | 내 깃허브 저장소에 CSV 파일로 자동 커밋 |
지금부터 단 2개의 파일(파이썬 코드 1개 + 워크플로우 YAML 1개)로 평생 무료 무인 크롤러를 구축하는 전 과정을 살펴보겠습니다.
💡 깃허브 액션은 우분투(Ubuntu) 최신 환경 위에서 실행되므로 복잡한 리눅스 설정 없이 pip 명령어 한 줄로 모든 파이썬 라이브러리를 설치해 실행할 수 있습니다.
2. [크롤러 작성] 원하는 웹 데이터를 1초 만에 긁어오는 파이썬 스크립트

먼저 매일 아침 웹에서 데이터를 수집해 CSV 파일로 저장할 파이썬 크롤링 코드를 작성합니다. 예제로 네이버 증권의 주요 환율(USD, EUR, JPY) 정보를 긁어오는 코드를 main.py로 저장합니다.
import os
import csv
from datetime import datetime
import requests
from bs4 import BeautifulSoup
def crawl_exchange_rates():
url = "https://finance.naver.com/marketindex/"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
# 달러 환율 추출
usd = soup.select_one("#exchangeList > li.on > a.head.usd > div > span.value").text
now_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now_str}] 현재 미국 달러(USD) 환율: {usd}원")
# data 폴더 생성 및 CSV 저장
os.makedirs("data", exist_ok=True)
csv_file = "data/exchange_rates.csv"
file_exists = os.path.exists(csv_file)
with open(csv_file, "a", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow(["수집일시", "통화", "환율"])
writer.writerow([now_str, "USD", usd])
print("✅ CSV 데이터 저장 완료")
if __name__ == "__main__":
crawl_exchange_rates()
그리고 이 코드가 필요로 하는 라이브러리를 명시하기 위해 requirements.txt 파일에 두 줄을 적어둡니다.
requests
beautifulsoup4
이제 이 두 파일을 깃허브 저장소에 올려두기만 하면 됩니다.
✨ `utf-8-sig` 인코딩으로 저장하면 한글이 포함된 CSV 파일을 한국어 윈도우 엑셀에서 더블 클릭해 열었을 때 글자가 전혀 깨지지 않고 깔끔하게 열립니다.
3. [스케줄링 YAML] cron 문법과 파이썬 가상환경 자동 세팅 워크플로우

이제 깃허브 서버에게 "매일 아침 몇 시에 이 파이썬 코드를 돌려라"고 지시하는 워크플로우 파일을 만들 차례입니다.
프로젝트 폴더 안에 .github/workflows/crawler.yml 파일을 만들고 아래 내용을 그대로 복사해 붙여넣습니다.
name: Daily Automated Web Crawler
on:
schedule:
# ⏰ 한국 시간(KST) 매일 아침 08:00 실행 (UTC 기준 23:00)
- cron: '0 23 * * *'
# 🚀 깃허브 웹에서 [Run workflow] 버튼을 눌러 언제든 즉시 테스트 실행 가능
workflow_dispatch:
jobs:
crawl:
runs-on: ubuntu-latest
steps:
# 1. 깃허브 저장소의 코드를 가상머신으로 내려받기
- name: Checkout Repository
uses: actions/checkout@v4
# 2. 파이썬 최신 런타임 셋업
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
# 3. 필수 패키지 설치
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
# 4. 크롤러 스크립트 실행
- name: Run Crawler
run: |
python main.py
이 파일을 깃허브에 푸시하고 깃허브 웹 화면의 [Actions] 탭에 들어가 보면 Daily Automated Web Crawler라는 워크플로우가 등록되어 있는 것을 확인할 수 있습니다. 우측 상단의 [Run workflow]를 누르면 10초 만에 초록색 체크 표시(✅)와 함께 코드가 성공적으로 실행됩니다.
✨ `workflow_dispatch:` 키워드를 넣어두면 매일 정해진 시간까지 기다릴 필요 없이, 코드를 수정할 때마다 웹에서 파란색 버튼 하나로 즉시 테스트해 볼 수 있어 디버깅이 매우 편해집니다.
4. [자동 커밋 & 푸시] 수집된 데이터(CSV)를 내 깃허브 저장소에 영구 보관

여기서 아주 중요한 포인트가 있습니다. 깃허브 가상머신은 코드가 끝나면 자동으로 폐기되기 때문에, 방금 파이썬이 생성한 data/exchange_rates.csv 파일도 함께 날아가 버립니다.
수집된 데이터를 영구 보관하려면 crawler.yml 파일의 맨 아래에 "새로 생긴 CSV 파일을 깃허브 저장소에 커밋하고 푸시하라"는 단계를 추가해야 합니다.
# 5. 수집된 CSV 파일을 내 깃허브 저장소로 자동 커밋 & 푸시
- name: Commit and Push Changes
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add data/
git diff --quiet && git diff --staged --quiet || (git commit -m "🤖 [Auto] 환율 데이터 자동 수집 완료 ($(date +'%Y-%m-%d'))" && git push)
이제 매일 아침 크롤러가 돌 때마다 깃허브가 스스로 코드를 커밋하고 푸시하여 내 레포지토리의 data/ 폴더에 최신 데이터가 누적됩니다. 내 깃허브 프로필에 예쁜 초록색 잔디가 매일 자동으로 심어지는 짜릿한 보너스까지 얻게 됩니다.
🎉 이 데이터에 GitHub Pages(무료 웹 호스팅)를 연결하면, 매일 아침 수집된 최신 환율이나 주가 차트를 보여주는 나만의 무료 웹 대시보드가 자동으로 운영됩니다.
5. [트러블슈팅] UTC 9시간 시차 계산법과 GitHub 토큰 쓰기 권한 활성화

마지막으로 깃허브 액션을 처음 세팅할 때 겪는 가장 흔한 2가지 오류와 해결책입니다.
- 403 Permission Denied 에러 발생 시: 깃허브 저장소 상단 [Settings] ➔ 왼쪽 [Actions] ➔ [General]로 이동합니다. 화면 아래로 스크롤하여
Workflow permissions항목을 찾은 뒤, 기본값인 'Read repository contents permission' 대신 'Read and write permissions'를 선택하고 [Save]를 누릅니다. 이 설정을 켜야 깃허브 봇이 CSV 파일을 커밋할 수 있습니다. - 정확한 정각에 안 돌고 10분 늦게 도는 경우: 전 세계 수백만 개발자가
00분에 스케줄을 걸어두기 때문에 깃허브 대기열(Queue)이 생겨 5~10분 지연 실행될 수 있습니다. 이를 피하려면13분이나42분처럼 애매한 분(예:13 23 * * *)으로 크론을 걸어두면 대기열 없이 총알처럼 즉시 실행됩니다.
| 원하는 한국 시간 (KST) | 계산 공식 (KST - 9시간) | GitHub cron 설정값 |
|---|---|---|
| 매일 아침 07:00 | 전날 22:00 UTC | 0 22 * * * |
| 매일 아침 08:30 | 전날 23:30 UTC | 30 23 * * * |
| 매일 점심 12:00 | 당일 03:00 UTC | 0 3 * * * |
| 매일 저녁 18:00 | 당일 09:00 UTC | 0 9 * * * |
이제 유료 서버 구독료 결제일을 걱정할 필요가 없습니다. 깃허브 액션과 파이썬의 강력한 조합으로 여러분만의 완전 무인 데이터 파이프라인을 마음껏 누려보세요!
🎉 이 워크플로우에 텔레그램 봇이나 슬랙 웹훅 코드만 한 줄 추가하면, 크롤링이 완료되는 즉시 내 스마트폰으로 '오늘의 핵심 데이터 요약본'이 띵동 날아오는 완벽한 모바일 관제 시스템이 완성됩니다.
GitHub 공식 액션 페이지에서 무제한 무료 자동화의 강력함을 확인해 보세요!
GitHub Actions 공식 포털 바로가기 →자주 묻는 질문 (FAQ)
Q1. 깃허브 액션 무료 계정으로 매일 크롤링을 돌려도 비용이 안 나오나요?
A. 네, 깃허브 퍼블릭(Public) 저장소는 깃허브 액션 실행 시간이 '완전 무제한 무료'이며, 비공개(Private) 저장소도 매월 2,000분의 무료 실행 시간을 제공하므로 하루 2~3분 걸리는 크롤러는 평생 100% 무료로 운용됩니다.
Q2. 컴퓨터를 완전히 꺼두어도 정해진 시간에 자동으로 크롤링이 도나요?
A. 네, 코드가 내 컴퓨터가 아니라 마이크로소프트 GitHub의 클라우드 서버(Ubuntu 가상머신) 위에서 실행되므로 내 PC를 끄든 외출을 하든 1년 365일 정확하게 자동 실행됩니다.
Q3. cron 스케줄 시간을 한국 시간(KST)으로 바로 지정할 수 있나요?
A. 깃허브 액션의 cron은 전 세계 표준시인 UTC 기준입니다. 한국 시간(KST)은 UTC보다 9시간 빠르므로, 한국 시간 아침 8시(08:00)에 실행하고 싶다면 9시간을 뺀 '전날 23:00 UTC'(`0 23 * * *`)로 설정해야 합니다.
Q4. 크롤링한 결과 데이터를 내 컴퓨터로 내려받지 않아도 바로 볼 수 있나요?
A. 네, 워크플로우 내에 'git commit & push' 명령을 넣어두면 수집된 CSV나 JSON 파일이 내 깃허브 저장소로 자동 커밋되므로 스마트폰 브라우저나 PC 어디서든 즉시 최신 데이터를 확인할 수 있습니다.
Q5. 텔레그램이나 슬랙으로 크롤링 결과를 전송받을 수 있나요?
A. 네, 파이썬 코드에 텔레그램 봇 API 호출 코드만 넣어두고, 깃허브 저장소의 [Settings ➔ Secrets]에 봇 토큰을 등록해 두면 크롤링 완료 즉시 스마트폰으로 요약 알림이 날아옵니다.
📌 함께 보면 도움되는 알짜 정보
'IT프리랜서' 카테고리의 다른 글
| GPT-6 Astra 심층 추론 프롬프트 데이터 분석법 (0) | 2026.11.01 |
|---|---|
| AI 이미지와 캡컷 연동 쇼츠 영상 10분 자동 제작법 (0) | 2026.10.31 |
| 커서 AI와 수파베이스 연동 풀스택 Todo 웹앱 만들기 (0) | 2026.10.31 |
| 엑셀 XLOOKUP 함수 VLOOKUP 대체 완벽 사용법 (0) | 2026.10.31 |
| 클로드 아티팩트 활용 인터랙티브 기획서 작성 프롬프트 (0) | 2026.10.31 |