직원 두 명을 AI로 고용하기 – 프롬프트 하나로 2단계 반자동 소싱 시스템 만들기

직원 두 명을 AI로 고용하기 – 프롬프트 하나로 2단계 반자동 소싱 시스템 만들기

다음은 이 글을 보고 “바로 2단계 반자동까지 구현해보자”는 흐름으로 가려면, 구조를 개념 → 설계 → 구현 예시 → 체크리스트 순으로 잡고 시작합니다. 이 글의 구조는 아래와 같습니다.


1. 왜 완전 자동보다 반자동이 먼저인가

처음부터 “완전 자동”을 노리면, 실제 운영에서는 생각보다 빨리 벽을 만납니다. 특히 이커머스 쪽은 정책 위반, 잘못된 상품 정보, 가격 오류 등이 한 번 사고 나면 바로 계정·브랜드에 타격이 들어옵니다.

완전 자동의 대표적인 리스크는 세 가지 정도로 정리할 수 있습니다.

  • 정책 위반·잘못된 상품 등록 위험
    • AI가 만든 설명/번역·카테고리가 마켓 정책과 어긋나면, 판매 중지·패널티로 이어질 수 있습니다.
  • 디버깅 난이도
    • “어느 단계에서 잘못됐는지”를 찾기 어렵기 때문에, 문제가 생기면 전체 자동화를 멈춰야 할 때가 많습니다.
  • 데이터 품질 문제
    • 초기에는 소스 데이터·룰이 덜 정제되어 있기 때문에, 자동으로 돌릴수록 “엉뚱한 결과를 크게 키워버리는” 경우가 생깁니다.

반대로, 반자동으로 시작하면 얻는 장점이 분명합니다.

  • 기존 업무 플로우를 크게 바꾸지 않는다.
    • 여전히 엑셀/CSV, 기존 대량 등록 도구를 쓰면서, 중간 몇 단계를 AI로 치환하는 수준입니다.
  • 중요한 결정은 사람이 쥐고 있다.
    • “마지막으로 올릴 상품을 고르는 일”은 사람이 하기 때문에, 사고가 나도 범위가 제한적입니다.
  • 실패해도 회복이 쉽다.
    • GPT/스크립트가 만들어낸 중간 결과가 마음에 안 들면, 그냥 그 회차 파일만 버리면 되고, 기존 방식으로 다시 하면 됩니다.

그래서 이 글의 목표는 거창하지 않습니다.

“오늘 저녁에라도 써볼 수 있는, GPT 프롬프트 + CSV + 간단 스크립트 기반의 반자동 구조 하나 만들기.”

완전 자동은 그다음 단계의 이야기로 남겨 두고, 먼저 2단계 반자동을 돌려보면서 룰과 데이터를 다듬는 것이 현실적인 순서입니다.


2. 우리가 이미 갖고 있는 것: GPT 프롬프트 + CSV

2편까지 따라왔다면, 사실 반자동에 필요한 재료는 거의 다 갖고 있습니다.

  • 재사용 가능한 GPT 프롬프트 템플릿
    • 입력: 카테고리, 키워드, 가격대, 리뷰 수, 평점, 제외 키워드/브랜드
    • 출력: CSV 형식의 상품 리스트
  • 기본 CSV 구조
    • 최소형: 상품명,URL
    • 확장형: 상품명,URL,가격,평점,리뷰수

블로그에서는 여기서 실제 CSV 한 덩어리를 예시로 보여주면 좋습니다. 예를 들어:

상품명,URL,가격,평점,리뷰수
Example Cordless Vacuum A,https://www.amazon.com/dp/AAAAAAA,199.99,4.5,1234
Example Cordless Vacuum B,https://www.amazon.com/dp/BBBBBBB,149.00,4.3,845
Example Cordless Vacuum C,https://www.amazon.com/dp/CCCCCCC,219.50,4.6,532

이때 강조하고 싶은 메시지는 딱 하나입니다.

“GPT가 내보내는 이 CSV 한 파일이, 앞으로 우리가 만들 반자동 시스템의 입력 표준(Input Schema)이 된다.”

입력이 표준화되어 있으면,

  • 중간에 낀 스크립트/툴을 갈아끼우기 쉽고
  • 나중에 완전 자동으로 갈 때도 API·에이전트가 이 포맷만 맞춰서 읽으면 되기 때문에
  • 전체 시스템이 훨씬 단순해집니다.

3. 반자동 구조 전체 그림: 사람과 에이전트의 역할 분리

이제 2단계 반자동 구조를 한 문장으로 정리해 봅니다.

“GPT는 후보를 모으고, 미니 에이전트(스크립트)는 1차 필터와 계산을 해주고, 사람은 마지막으로 올릴 상품만 고른다.”

조금 더 구체적으로 나누면 역할은 이렇게 됩니다.

  • GPT 봇
    • 프롬프트를 받아 후보 URL CSV를 만든다.
  • 미니 에이전트(스크립트/툴)
    • gpt_sourcing.csv를 읽는다.
    • 중복·금지 키워드·기본 마진 기준으로 1차 필터링.
    • 환율·마진율을 고려해 예상 판매가 계산.
    • 사람이 보기 편한 형태의 candidate_for_upload.csv를 생성.
  • 사람
    • candidate_for_upload.csv를 열어 필터를 돌려 보고, 이상한 상품을 제외.
    • “이건 올리자” 싶은 상품만 남긴 final_upload.csv를 만든다.
    • 기존에 쓰던 “대량 등록 프로그램/마켓 양식”에 final_upload.csv를 넣어 배치 업로드.

이 섹션에서는 코드를 깊게 파고들기보다, “누가 언제 무엇을 눌러야 하는지”를 중심으로 설명해 주는 게 좋습니다.

예를 들어, 하루 작업 플로우를 이렇게 써볼 수 있습니다.

  1. 오전 10시 – GPT 봇에 프롬프트 입력 → gpt_sourcing.csv 받기
  2. 오전 10시 10분 – 미니 에이전트 스크립트 실행 → candidate_for_upload.csv 생성
  3. 오전 10시 15분 – 파일을 엑셀로 열어 필터링/정렬로 최종 후보만 남기기
  4. 오전 10시 30분 – final_upload.csv로 저장 후, 마켓 대량 등록 양식에 업로드

즉, 사람이 하는 일은 “맨 앞 GPT 프롬프트 한 번 + 맨 끝 최종 승인 한 번”으로 줄어드는 대신, 중간의 반복적인 필터링·계산 작업은 스크립트가 눌러주는 구조입니다.^7


4. 단계별 구현 ① – GPT 봇으로 후보 리스트 받기

이제 실제로 반자동 구조를 만들기 위한 첫 단계, 후보 리스트 받기를 정리해 보겠습니다.

4-1. 프롬프트 템플릿 다시 한 번

우리가 사용할 프롬프트는 2편에서 만든 템플릿의 “간단 버전”입니다. 예를 들어:

너는 아마존 상품 소싱을 위한 리서처다.

목표:
아래 조건에 맞는 상품을 아마존에서 찾아,
상품 30개의 리스트를 만들어라.

검색 조건:
- 마켓: amazon.com 기준으로 생각한다.
- 카테고리: [카테고리명]
- 핵심 키워드: [키워드1], [키워드2]
- 가격대: [최소 가격] ~ [최대 가격] 달러
- 최소 리뷰 수: [리뷰 수]개 이상
- 최소 평점: [평점]점 이상
- 제외 브랜드: [브랜드1], [브랜드2]
- 제외 키워드: [키워드1], [키워드2]

출력 형식:
- 설명 없이 CSV 형식으로만 출력해라.
- 첫 줄에는 "상품명,URL,가격,평점,리뷰수" 헤더를 넣어라.
- 각 줄에는 다섯 개 값을 쉼표(,)로 구분해 넣어라.
- 예시:
  상품명,URL,가격,평점,리뷰수
  Example Product,https://www.amazon.com/dp/xxxxxxx,199.99,4.5,1234

지금부터 결과만 출력해라.

실제 사용할 때는 대괄호 부분만 바꿔 쓰면 됩니다.

  • 오늘은: 카테고리 = “cordless vacuum”, 키워드 = “cordless vacuum, stick vacuum”
  • 내일은: 카테고리 = “monitor arm”, 키워드 = “monitor arm, desk mount”

이렇게 카테고리와 키워드만 바꿔 돌려도, 매번 같은 형식의 CSV를 안정적으로 받는 게 핵심입니다.

4-2. 실제 사용 시나리오 예시

글에서는 한 번쯤 이런 식으로 시나리오를 써주면 좋습니다.

  • “월요일에는 무선 청소기, 화요일에는 모니터 암, 수요일에는 게이밍 체어…”
  • 매일 아침 10시에 프롬프트에 카테고리·가격대를 바꿔 넣고 한 번씩만 돌린다.
  • GPT가 내놓은 CSV를 그대로 저장해서 gpt_sourcing.csv로 쓴다.

여기서 중요한 포인트는:

“GPT와의 대화는 매번 다르지만, 결과 파일 형식은 항상 같다.”

라는 걸 강조하는 것입니다. 그래야 뒤에 붙는 스크립트/툴이 흔들리지 않습니다.

4-3. GPT 결과를 CSV로 저장하는 방법

기술에 익숙하지 않은 독자를 위해, “GPT 결과 → 엑셀/구글 시트 → CSV 저장”을 아주 간단히 짚고 넘어가면 좋습니다.^8^10

  • 엑셀 기준:^9^10

  • GPT가 출력한 내용을 통째로 복사

  • 엑셀 새 시트에 A1 셀부터 붙여넣기
  • 메뉴에서 파일 → 다른 이름으로 저장 → 파일 형식 ‘CSV UTF-8(쉼표로 분리)’ 선택 → 저장
  • 구글 시트 기준:^11

  • 새 스프레드시트에 붙여넣기

  • 파일 → 다운로드 → CSV(쉼표로 구분) 선택

이렇게 저장한 파일 이름을 gpt_sourcing.csv로 맞추면, 다음 단계의 미니 에이전트 스크립트가 매번 같은 파일 이름으로 읽어올 수 있어서 편합니다.

4-4. 이 단계까지 끝나면 갖게 되는 것

여기까지가 1단계입니다. 이 단계가 끝나면, 폴더 안에는 이런 상태가 됩니다.

  • gpt_sourcing.csv
    • 헤더: 상품명,URL,가격,평점,리뷰수
    • 내용: 오늘 소싱할 후보 30개~100개 정도

즉, “사람이 직접 아마존을 뒤져서 엑셀에 적어 넣던 작업”이 “GPT 프롬프트 한 번 + 복붙 + CSV 저장”으로 바뀐 것입니다.

이제 다음 단계에서는, 이 gpt_sourcing.csv를 읽어서 중복/금지 키워드/마진 기준으로 1차 필터링하고, 사람이 보기 편한 후보 리스트로 바꿔주는 미니 에이전트(스크립트)를 얹으면, 2단계 반자동 구조가 완성됩니다.

원하시면 바로 이어서 “5. 단계별 구현 ② – 스크립트로 반자동 필터·계산 레이어 만들기”를 전체 원고처럼 한 번에 정리해 드릴까요? ^12^14


5. 단계별 구현 ② – 반자동 필터링/계산 레이어 만들기

이 부분이 “반자동 구현의 핵심”입니다. 툴 종류에 따라 예시를 나눌 수 있습니다. (엑셀·구글 시트 vs 간단 스크립트)

5-1. 엑셀/구글 시트로 구현하는 경우

  • 시트 구조 예시:
    • A열: 상품명
    • B열: URL
    • C열: 원화 환산 가격(수식으로 계산)
    • D열: 예상 마진율
    • E열: 필터 결과(예: “OK/제외”)
    • F열: 최종 등록 여부(체크박스)
  • 수식 예:
    • 달러 → 원화 환산
    • 마진율 계산
    • 특정 키워드가 상품명에 있으면 “제외” 표시
  • 사람이 하는 일:
    • 필터/정렬로 “마진율 낮은 상품, 키워드 포함 상품” 한 번 훑기
    • F열 체크박스로 “등록할 상품”만 TRUE로 만들기

5-2. 간단 스크립트(파이썬 등)로 구현하는 경우

  • 입력: gpt_sourcing.csv
  • 처리:
    • 중복 URL 제거
    • 금지 키워드 포함 상품 필터링
    • 가격·마진 계산
    • 결과에 “추천/주의/제외” 플래그 달기
  • 출력: candidate_for_upload.csv
    • 여기에는 사람이 볼 컬럼만 넣기(상품명, URL, 계산된 판매가, 플래그 등)

이 섹션에서는 “코드 전체”보다는, 입력·출력 구조와 필터링 로직을 개념 위주로 설명하는 게 좋습니다. 

스크립트 기준으로 구현하는 5번 파트부터 본문처럼 살을 붙여 보겠습니다. (언어는 “파이썬 + 하루 한 번 수동 실행/크론”을 전제로 씁니다.)


5. 단계별 구현 ② – 스크립트로 반자동 필터·계산 레이어 만들기

엑셀/시트로도 어느 정도는 버틸 수 있지만, 소싱 규모가 조금만 커져도 “수동 필터링”이 금방 한계에 옵니다. 이때 제일 가볍게 도입할 수 있는 게 파이썬 스크립트 한 파일입니다.

역할은 단순합니다.

GPT가 만든 gpt_sourcing.csv를 읽어서, 중복·금지 키워드·기본 마진 조건을 1차로 걸러 준 뒤 사람이 검토하기 쉬운 candidate_for_upload.csv로 정리해 주는 작은 에이전트.

5-1. 파일 구조부터 먼저 정한다

먼저, 스크립트가 다룰 파일 이름을 고정해 두는 게 좋습니다.

  • GPT 출력 파일: gpt_sourcing.csv
    • 예: 상품명,URL,가격,평점,리뷰수
  • 스크립트 출력 파일: candidate_for_upload.csv
    • 예: 상품명,URL,원가_원화,예상_판매가,예상_마진율,필터_결과,메모

블로그에서는 이 두 파일의 헤더를 텍스트로 한 번 보여주고, “오늘 우리가 하는 일은 이 입력을 이 출력으로 바꾸는 아주 작은 봇 하나 만드는 것”이라고 잡아 주면 독자가 전체 구조를 쉽게 이해합니다.

5-2. 스크립트가 할 일 정의하기

스크립트의 로직은 대략 이렇게 설계합니다.

  1. gpt_sourcing.csv 읽기
  2. 각 행에 대해:
    • URL 기준으로 중복 제거
    • 금지 키워드(제외 키워드) 체크
    • 원화 기준 원가·판매가·마진율 계산
    • 기준에 못 미치면 “제외” 플래그 달기
  3. 결과를 candidate_for_upload.csv로 저장

블로그에서는 “완전한 파이썬 강의”까지는 필요 없고, “이 정도 스크립트 하나면 반자동이 된다”는 수준의 예시를 보여주는 게 핵심입니다.

5-3. 예시 스크립트 구조(설명용)

아래는 개념을 보여주기 위한 의사코드/예시에 가깝게 작성하면 좋습니다.

import csv

INPUT_FILE = "gpt_sourcing.csv"
OUTPUT_FILE = "candidate_for_upload.csv"

# 환경/설정 값
EXCHANGE_RATE = 1350      # 1달러 → 1,350원
TARGET_MARGIN = 0.3       # 목표 마진율 30%
MARKET_FEE = 0.12         # 마켓 수수료 12%
EXTRA_COST = 0.05         # 기타 비용 5%
EXCLUDE_KEYWORDS = ["adult", "sex", "weapon"]
EXCLUDE_BRANDS = ["Dyson"]  # 필요시 상품명에서 브랜드 필터링

def has_excluded_word(name: str) -> bool:
    lowered = name.lower()
    return any(word in lowered for word in EXCLUDE_KEYWORDS)

def estimate_prices(usd_price: float) -> tuple[float, float, float]:
    # 아주 단순화한 예시: 달러 가격 하나만 기준으로 계산
    base_cost_krw = usd_price * EXCHANGE_RATE
    total_cost = base_cost_krw * (1 + MARKET_FEE + EXTRA_COST)
    # 목표 마진율을 맞추는 판매가 역산
    sale_price = total_cost / (1 - TARGET_MARGIN)
    margin = (sale_price - total_cost) / sale_price
    return base_cost_krw, sale_price, margin

def main():
    seen_urls = set()
    rows_out = []

    with open(INPUT_FILE, newline="", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        for row in reader:
            name = row["상품명"]
            url = row["URL"]
            price_str = row.get("가격", "").replace(",", "").strip()

            # 1) URL 중복 제거
            if url in seen_urls:
                continue
            seen_urls.add(url)

            # 2) 금지 키워드 필터
            if has_excluded_word(name):
                result = "제외_키워드"
                memo = "금지 키워드 포함"
            else:
                result = "검토필요"
                memo = ""

            # 3) 가격/마진 계산
            try:
                usd_price = float(price_str) if price_str else 0.0
            except ValueError:
                usd_price = 0.0

            cost_krw, sale_price, margin = estimate_prices(usd_price) if usd_price > 0 else (0, 0, 0)

            rows_out.append({
                "상품명": name,
                "URL": url,
                "원가_원화": round(cost_krw),
                "예상_판매가": round(sale_price, -1),  # 10원 단위 반올림 예시
                "예상_마진율": round(margin * 100, 1),
                "필터_결과": result,
                "메모": memo,
            })

    fieldnames = ["상품명", "URL", "원가_원화", "예상_판매가", "예상_마진율", "필터_결과", "메모"]
    with open(OUTPUT_FILE, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(rows_out)

if __name__ == "__main__":
    main()

블로그에서는 이 코드 전체를 그대로 붙이기보다는:

  • 상단 설정 값(EXCHANGE_RATE, TARGET_MARGIN 등)만 따로 강조하고
  • “여기를 본인 숫자에 맞게 바꾸면 된다”는 설명을 달아주면 좋습니다.

또, 파이썬에 익숙하지 않은 독자를 위해:

  • INPUT_FILE는 GPT에서 받은 CSV 파일 이름
  • OUTPUT_FILE는 사람이 열어볼 후보 리스트 파일 이름
  • 필터_결과검토필요인 것만 골라서 최종 업로드 대상으로 쓴다

이 정도만 풀어서 설명해 주면 충분합니다.

5-4. 이 스크립트가 만들어 주는 “반자동 경험”

이 구조까지 구현해 놓으면, 하루 작업 흐름이 이렇게 바뀝니다.

  1. GPT 프롬프트로 gpt_sourcing.csv 받기
  2. 파이썬 스크립트 한 번 실행 → candidate_for_upload.csv 자동 생성
  3. candidate_for_upload.csv를 엑셀/시트에서 열어
    • 필터_결과 != "제외_키워드"
    • 예상_마진율이 너무 낮은 상품 제외
  4. 남은 행만 가지고 마켓 대량 업로드 양식에 맞게 복사/붙여넣기

완전 자동까지는 아니지만, “후보 수집 + 1차 필터 + 가격 계산”이라는 가장 귀찮은 부분은 이미 AI+스크립트에게 넘긴 셈입니다. 사람은 그 결과를 보고 “마지막 승인만 하는 역할”로 내려앉습니다.


이 5번(스크립트 기준 구현) 섹션을 이런 식으로 본문에 넣으면, 독자가 “아, 나도 GPT CSV + 파이썬 파일 하나로 반자동까지는 금방 만들겠다”는 느낌을 받기 좋습니다.

혹시 여기서 더 보고 싶은 건:

  • 마켓별 업로드 양식에 맞춰 컬럼을 리매핑하는 예시
  • 이 스크립트를 매일 한 번 자동 실행하는 crontab 예시

둘 중 어떤 쪽을 먼저 풀어보면 도움이 될까요? ^1^11^13^15^3^5^7^9


6. 단계별 구현 ③ – 반자동 등록 플로우 설계

여기는 각자 쓰는 “등록 도구”에 따라 다르기 때문에, 구조 위주로 씁니다.

  • 공통 아이디어:
    • 에이전트/스크립트가 만들어 준 candidate_for_upload.csv
      • 사람 눈으로 한 번 훑고
      • OK 상품만 남긴 뒤
      • 기존에 쓰던 “대량 등록 도구”나 “직접 만든 업로드 스크립트”에 넣는다.
  • 예시 플로우:

  • candidate_for_upload.csv 열기

  • 의심스러운 상품(브랜드, 이미지, 가격대)을 필터해서 제거
  • 최종 파일을 final_upload.csv로 저장
  • 마켓에서 제공하는 대량 등록 양식에 맞게 열 순서·컬럼 맞추기
  • 마켓 셀러센터에서 final_upload.csv 업로드

이렇게 하면, 지금 쓰는 툴/프로그램은 그대로 두고, 중간 레이어만 AI로 갈아끼우는 구조가 됩니다.


7. 실제 운영 팁 – 반자동 단계에서 검증해야 할 것들

  • GPT 후보 품질 체크
    • “3일 정도 돌려 봤을 때, 사람이 매번 지우게 되는 패턴” 기록
    • 그걸 다시 프롬프트/필터 규칙으로 올려서 튜닝
  • 마진·가격 계산 검증
    • 초반 1~2주는 에이전트 계산값과 사람 계산값을 비교해서, 오차/리스크가 없는지 확인
  • 정책/위험 상품 체크
    • 반자동 단계에서는 정책 위험성이 있는 카테고리는 무조건 수동 검수 필수로 분류

이 부분은 실제 경험을 덧붙여서 “내가 직접 써보니 이런 부분은 꼭 사람 눈으로 한 번 보자” 스타일로 써주면 신뢰도가 올라갑니다.


8. 완전 자동으로 넘어가기 위한 체크리스트

마지막으로, “이제 완전 자동으로 넘어가도 되나?”를 판단하는 체크리스트를 한 섹션으로 두면 좋습니다.

  • [ ] GPT 프롬프트가 5회 이상 안정적으로 같은 형식을 출력한다.
  • [ ] 반자동 필터링/계산 결과를 2주 이상 검증했을 때, 큰 문제 없이 통과한다.
  • [ ] 정책 위반/이상 상품이 시스템을 빠져나간 사례가 없거나, 매우 낮다.
  • [ ] 내가 직접 보는 건 “후보 리스트 전체”가 아니라 “예외 상황 몇 건” 정도로 줄어들었다.
  • [ ] 이 구조를 다른 카테고리/마켓에도 복붙해서 적용할 수 있겠다 싶은 확신이 생겼다.

이 체크리스트를 모두 만족할 때쯤이면, 3편에서 설명한 “05:00 자동 루틴”으로 넘어가는 게 훨씬 부담이 줄어듭니다.


이 구조대로라면, 글 전체가 “개념→반자동 설계→엑셀/시트 or 간단 스크립트로 구현 예시→완전 자동으로 가는 판단 기준”까지 깔끔하게 이어집니다.

이 스크립트를 매일 한 번 자동 실행하는 crontab 예시로, 스크립트를 “매일 새벽 5시에 한 번 자동 실행”시키는 crontab 예시는 블로그에서 딱 한 섹션으로 정리해 두면 좋습니다. 아래와 같습니다.

부록: 파이썬 스크립트를 매일 새벽 5시에 자동 실행(crontab)

반자동 구조를 어느 정도 테스트해 보고 나면, 이제는 매번 터미널을 열어서 python candidate_builder.py를 치지 않아도 되게 만들고 싶어집니다. 리눅스/macOS 환경이라면 crontab으로 아주 쉽게 스케줄을 걸 수 있습니다.

1. crontab 시간 표현 맛보기

crontab은 한 줄이 이렇게 생겼습니다.

분 시 일 월 요일  실행할_명령어

예를 들어:

  • 0 5 * * * ... → 매일 새벽 05:00
  • 30 23 * * * ... → 매일 밤 23:30
  • 0 0 * * * ... → 매일 자정

우리가 원하는 건 “매일 05:00에 파이썬 스크립트 한 번 실행”입니다.


2. 파이썬 실행 경로와 스크립트 경로 확인

터미널에서 아래를 입력해서 파이썬 경로를 확인합니다.

which python3

예를 들어 /usr/bin/python3 또는 /Users/username/.pyenv/versions/3.11.2/bin/python3 같은 값이 나옵니다.

그리고 우리가 만든 스크립트(예: candidate_builder.py)의 절대 경로도 알아둡니다.

예시:

  • 파이썬: /usr/bin/python3
  • 스크립트: /home/username/projects/auto_sourcing/candidate_builder.py

3. crontab에 등록하기

터미널에서 다음을 입력합니다.

crontab -e

처음이면 에디터 선택 화면이 나오고, vi/nano 중 하나를 선택합니다. 편집 화면이 열리면 맨 아래 줄에 다음 한 줄을 추가합니다.

0 5 * * * /usr/bin/python3 /home/username/projects/auto_sourcing/candidate_builder.py >> /home/username/projects/auto_sourcing/logs/candidate_builder.log 2>&1

의미:

  • 0 5 * * * → 매일 새벽 05:00
  • /usr/bin/python3 → 파이썬 실행 파일 경로
  • /home/.../candidate_builder.py → 우리가 만든 스크립트
  • >> .../candidate_builder.log 2>&1 → 실행 결과와 에러를 로그 파일에 계속 누적 기록

저장 후 빠져나오면(crontab 편집기에서 :wq 또는 Ctrl+O, Ctrl+X), 이제 서버/PC가 켜져 있는 한, 매일 새벽 5시에 이 스크립트가 자동 실행됩니다.


4. 잘 돌고 있는지 확인하는 방법

  • 등록된 크론 목록 보기
crontab -l
  • 로그 파일 확인
tail -n 50 /home/username/projects/auto_sourcing/logs/candidate_builder.log

여기에서 에러 메시지나 프린트된 내용이 보이면, 스크립트가 실제로 실행됐는지, 어디서 문제가 나는지를 쉽게 확인할 수 있습니다.


이 정도만 블로그에 넣어 두면, 독자가 “스크립트를 하루에 한 번 자동으로 돌려서, 매일 아침에는 바로 candidate_for_upload.csv만 열어 보면 되는 상태”까지 자연스럽게 따라올 수 있습니다. ^10