직원 두 명을 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를 넣어 배치 업로드.
이 섹션에서는 코드를 깊게 파고들기보다, “누가 언제 무엇을 눌러야 하는지”를 중심으로 설명해 주는 게 좋습니다.
예를 들어, 하루 작업 플로우를 이렇게 써볼 수 있습니다.
- 오전 10시 – GPT 봇에 프롬프트 입력 →
gpt_sourcing.csv받기 - 오전 10시 10분 – 미니 에이전트 스크립트 실행 →
candidate_for_upload.csv생성 - 오전 10시 15분 – 파일을 엑셀로 열어 필터링/정렬로 최종 후보만 남기기
- 오전 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
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. 단계별 구현 ② – 스크립트로 반자동 필터·계산 레이어 만들기”를 전체 원고처럼 한 번에 정리해 드릴까요?
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. 스크립트가 할 일 정의하기
스크립트의 로직은 대략 이렇게 설계합니다.
gpt_sourcing.csv읽기- 각 행에 대해:
- URL 기준으로 중복 제거
- 금지 키워드(제외 키워드) 체크
- 원화 기준 원가·판매가·마진율 계산
- 기준에 못 미치면 “제외” 플래그 달기
- 결과를
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. 이 스크립트가 만들어 주는 “반자동 경험”
이 구조까지 구현해 놓으면, 하루 작업 흐름이 이렇게 바뀝니다.
- GPT 프롬프트로
gpt_sourcing.csv받기 - 파이썬 스크립트 한 번 실행 →
candidate_for_upload.csv자동 생성 candidate_for_upload.csv를 엑셀/시트에서 열어필터_결과 != "제외_키워드"예상_마진율이 너무 낮은 상품 제외
- 남은 행만 가지고 마켓 대량 업로드 양식에 맞게 복사/붙여넣기
완전 자동까지는 아니지만, “후보 수집 + 1차 필터 + 가격 계산”이라는 가장 귀찮은 부분은 이미 AI+스크립트에게 넘긴 셈입니다. 사람은 그 결과를 보고 “마지막 승인만 하는 역할”로 내려앉습니다.
이 5번(스크립트 기준 구현) 섹션을 이런 식으로 본문에 넣으면, 독자가 “아, 나도 GPT CSV + 파이썬 파일 하나로 반자동까지는 금방 만들겠다”는 느낌을 받기 좋습니다.
혹시 여기서 더 보고 싶은 건:
- 마켓별 업로드 양식에 맞춰 컬럼을 리매핑하는 예시
- 이 스크립트를 매일 한 번 자동 실행하는 crontab 예시
둘 중 어떤 쪽을 먼저 풀어보면 도움이 될까요?
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:0030 23 * * * ...→ 매일 밤 23:300 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만 열어 보면 되는 상태”까지 자연스럽게 따라올 수 있습니다.





