상품명이 원본과 똑같은데 가공했다고요? — AI 자동화 반나절 검증기

📝 한줄 요약

완성됐다던 스마트스토어 상품 가공 파이프라인을 실제로 뜯어봤더니, 상품명은 원본 그대로였고 이미지는 어디에도 저장 안 되고 있었다. 반나절 동안 AI 감독관이 되어 하나씩 깎아낸 기록.


🏃 바쁜 사람용 요약

  • 지난주 "AI가 알아서 해줘서 놀라웠다"는 글을 썼다. 이번 주엔 정반대 얘기다.

  • 스마트스토어 500행(제품 120개) 수동 가공을 5단계 파이프라인으로 자동화해뒀다고 믿고 있었음

  • 오늘 뚜껑 열어봤더니 ①~④ 단계 전부 구멍이 있었음

  • ① 상품명 가공: D열은 원본 그대로였음. "수정상품명"이라는 새 열에만 넣어놓고 "완료"라고 보고

  • ② 키워드: AI가 창작한 키워드라 네이버 검색량 0짜리가 섞여 있었음

  • ③ 플랫폼 카테고리: 퍼지 매칭 버그로 164행 전부 "여성의류 > 코트" 로 찍힘

  • ④ 이미지: "164/164 성공" 이라는데 실제로는 메모리에서 그냥 버려지고 있었음

  • 하나씩 지적→수정→또 지적→또 수정. 반나절 만에 전부 정상화

  • 배운 것: "완료"라는 AI의 보고를 믿지 말고, 결과물을 직접 확인해라


🎯 이 글은 누구에게 좋나요?

  • AI에게 자동화 일을 맡긴 뒤 뭔가 찜찜한 분

  • "다 됐다"는 보고를 그대로 넘어가는 습관이 있는 분

  • Claude Code / Cursor / ChatGPT로 코드 쓰다가 "돌아간다"는 말에 안심하는 분

  • AI 감독관이라는 역할을 아직 어색해하는 분


😫 Before — "이미 다 됐다"는 착각

제 작업 폴더에는 이런 메모리가 저장되어 있었어요.

1203 스마트스토어 자동화 — 5단계 파이프라인, ①~④ 테스트 완료, ⑤ 커머스 API 키 필요

심지어 실행 결과 로그에도 이렇게 찍혀 있었습니다.

[입력] 원본_상품대장.xlsx
[정보] 총 500행 로드
[중복제거] 336개 → 164행
[결과] 판단 필요 항목: 0개
[완료] ① 상품명 가공 완료

"판단 필요 0개, 완료"라길래 저는 당연히 잘 돌아가고 있는 줄 알았어요.

오늘 뚜껑을 열어봤습니다.


🔍 의심의 시작 — "상품명이 원본과 똑같은데?"

엑셀을 열었습니다. D열(상품명)을 봤어요.

6P 파티컵 세트
부착형 타올행거
2P 메니큐어 헬퍼
다용도 컬러 깃발 플래그

원본이랑 완전히 똑같았습니다.

저: "상품명 가공은 어떻게 했다는거지? 상품명이 원본 상품명과 차이가 없는데"

Claude: "아, 스크립트는 D열을 건드리지 않습니다. 가공 결과는 맨 끝에 수정상품명 열을 새로 추가해서 거기에 넣어놨어요."

…그걸 누가 본다고요?

엑셀 행 수십 개를 오른쪽으로 스크롤해야 보이는 새 열에다 결과를 넣어놓고 "완료"라고 보고한 겁니다. 스마트스토어에 업로드할 때 쓰는 건 D열인데.

더 웃긴 건, 단계별로 어떤 열을 읽는지도 제각각이었습니다.

단계

읽는 열

② 키워드

수정상품명 (새 열) ✅

③ 플랫폼 카테고리

D열 (원본)

⑤ 네이버 속성

D열 (원본)

②만 깨끗한 상품명을 쓰고, ③⑤는 원본 "다용도 컬러 깃발 플래그"를 그대로 읽고 있었던 거죠. 이러면 ①에서 힘들게 청소한 게 뒷단에서 다 무시됩니다.

첫 번째 깎아내기: ①이 결과를 D열에 직접 덮어쓰도록 수정. 원본은 어차피 E열(원본상품명(참고용))에 이미 있었거든요.


🕳️ 파헤쳐보니 — 문제 다섯 개

문제 1. 상품명 가공이 너무 얌전함

규칙 기반 단순 치환이었어요. 다용도, 컬러, 프리미엄 같은 사전 등록된 단어만 걸러내고 나머진 원본 그대로. 164행 중 50행만 변경.

저: "상품명은 무조건 원본상품명과 다르게 조금이라도 수정해. 6p 파티컵 세트면 파티컵 세트 이런식으로라도 약간이라도 바꿔야 묶이지 않지."

(스마트스토어는 동일 상품명이 묶이는 정책이라 무조건 달라야 합니다.)

문제 2. "부착형 타올행거"가 "부착형"이 됨

강제 변형 로직을 추가했더니 이번엔 반대 방향으로 고장났어요. 2단어 상품명에서 첫 단어가 아니라 마지막 단어를 지워버린 겁니다.

저: "타올행거만 남기면 되잖아? 그게 핵심 단어인데 부착형을 남기면 어떡하냐. 강의에서도 형용사를 제거하고 명사를 남기라고 하지 않았어?"

한국어 상품명은 뒤쪽이 핵심 명사라는 걸 로직에 반영. 접미사 규칙(~형/~식/~타입)을 넣었더니 이번엔…

문제 3. "삼각형 모양 비너"가 "모양 비너"가 됨

삼각형~형 접미사에 걸려서 제거됐어요. 삼각형은 형태를 나타내는 핵심 수식어인데.

저: "2번으로 해" (접미사 규칙 빼고 명시 목록만)

문제 4. "키보드 스티커 1장 한글 영어 일본어" → "스티커 1장 한글 영어 일본어"

이것도 핵심 명사(키보드)가 날아갔어요.

저: "야 키보드 스티커에서 키보드를 삭제하고 그냥 스티커라고 하면 어떡하냐."

자동 변형 로직 자체를 폐기하고, 못 바꾸는 행은 그냥 플래그(수동 검토 필요)만 달도록 변경. 하지만 그러고 나니 164개 중 83개가 플래그였어요. 절반.

저: "네 추천대로 해. 내가 일일이 수정할꺼면 AI를 왜 쓰냐."

Claude가 사전을 대폭 확장했습니다. 부착형, 하드타입, 차량용, 여행용, PVC, 스텐, 리템, 시스맥스… 브랜드까지 포함해서 70개 이상. 플래그는 83 → 18개로 줄었고, 남은 18개는 진짜로 규칙으로 못 잡는 거라 AI가 한 줄씩 리라이트했어요.

원본

리라이트

원형 돌기 마사지볼

돌기 마사지볼

키보드 스티커 1장 한글 영어 일본어

한글 영어 일본어 키보드 스티커

방문 틈새막이

방문용 틈새막이

가구 받침대 60cm

60cm 가구 받침대

최종: 164행 전부 원본과 다름, 플래그 0개. ✅

문제 5. 키워드를 AI가 "창작"하고 있었음

②번 키워드 가공은 AI가 상품명을 보고 키워드 10개를 지어내는 구조였어요. 문제는 네이버에 아무도 안 치는 키워드가 섞여 있었다는 것.

저: "D열 → 핵심 단어 → 네이버 검색광고 API relKeyword → 월검색량 > 0만 필터 → 후보 중에서 AI가 선별. 창작 X, 선별 O."

이 방향으로 재설계. AI가 있지도 않은 키워드를 상상하는 대신, 네이버가 실제로 갖고 있는 키워드 풀에서 고르게 했습니다.

상품명 → 핵심어 추출 (마지막 1~2단어)
       → 네이버 relKeyword API + 쇼핑 자동완성
       → 월검색량 > 0 필터
       → 상품명 단어 포함 여부로 관련성 필터
       → volume 내림차순 상위 15개
       → L열 저장

처음 돌렸더니 164개 중 160개가 후보 0개. 참사였어요.

원인: 네이버 relKeyword API는 hintKeywords에 공백 포함 단어를 거부합니다. "파티컵 세트"는 400 에러. 수정 후 재실행: 평균 후보 77개/상품, 137개 상품이 만점 15개 확보. ✅


🕳️ 문제 6. 플랫폼 카테고리가 전부 "여성의류 > 코트"로 찍힘

③번 플랫폼 카테고리 가공. 상품명+키워드를 보고 카테고리를 추론한 뒤 rapidfuzz로 수천 개의 카테고리 중 가장 비슷한 걸 매칭하는 단계입니다.

돌려봤습니다.

파티컵 세트         → 여성의류 > 티셔츠 > 롱/루즈핏 티셔츠 (86%)
타올행거            → 여성의류 > 티셔츠 > 롱/루즈핏 티셔츠 (86%)
메니큐어 헬퍼       → 여성의류 > 코트 > 롱코트 (86%)
칼라 고무자석       → 여성의류 > 코트 > 모직 코트 (86%)

164행 전부여성의류 > 코트/티셔츠 언저리로 찍혀 있었습니다. 신뢰도는 전부 86%. AI가 사기치고 있는 줄 알았어요.

원인 파악하니 두 가지 버그.

  1. rapidfuzz의 기본 scorer(WRatio)가 이상하게 작동

  2. mycate_df.iloc[match_idx]dropna() 후 리스트로 만든 인덱스를 원본 DataFrame에 쓰니 엉뚱한 행을 가리키고 있었음

scorer를 token_set_ratio로 바꾸고, 텍스트 기반 딕셔너리 룩업으로 변경. 재실행:

파티컵 세트          → 취미 > 파티용품 > 파티컵/접시 (53%)
타올행거             → 인테리어소품 > 수건걸이 (50%)
메니큐어 헬퍼        → 네일케어 > 네일케어도구 (92%)
원형 마사지볼        → 안마용품 > 마사지볼 (80%)
꽃꽂이 고정 지지대   → 꽃/원예 > 원예용품 (100%)
나들이 매트          → 캠핑 > 매트 (100%)

맞는 매칭이 대부분 나왔어요. ✅


🚨 문제 7. "이미지 가공한걸 어떻게 확인해?"

④번 이미지 가공까지 다 끝나고 결과를 봤습니다.

[결과] 완료: 164 / 건너뜀: 0 / 실패: 0

저: "이미지 가공한걸 어떻게 확인해?"

Claude: "확인할 수 없습니다. 이미지는 PIL 메모리 객체로만 가공되고 어디에도 저장되지 않았어요."

네? 164장 "가공 성공"이라는 게 메모리에서 잠깐 존재했다가 버려졌다는 뜻이었어요. GDrive 업로드 분기가 꺼져 있으니까 저장할 곳이 없어서 그냥… 사라진 겁니다. 엑셀의 결과 열엔 "가공완료(업로드대기)"라는 글자만 찍혀 있고.

저는 그동안 이게 "진짜 완료"라고 알고 있었어요.

work/images/ 폴더에 로컬 저장하는 코드 3줄 추가하고 재실행. 164장 실제로 저장


✅ After — 검증 가능한 파이프라인

단계

상태

검증 가능한 숫자

① 상품명

164행 전부 원본과 다름, 플래그 0

② 키워드

163행에 실검색어 적용 (평균 14.7개/상품, 최대 15)

③ 플랫폼 카테고리

164행 매핑, 평균 신뢰도 80%

④ 이미지

164장 실제로 저장 (1000×1000 JPG)

⑤ 네이버 속성

커머스 API 키 대기 중

가장 중요한 건 제가 직접 확인할 수 있는 결과물이 생겼다는 겁니다. 엑셀 열면 D열이 바뀌어 있고, work/images/ 열면 164장이 있고, L열에는 검색량 기반 실검색어가 들어 있고.

"완료"라는 단어가 아니라 파일을 볼 수 있게 됐어요.


💡 이번에 진짜 배운 것

1. "완료"라는 AI의 보고를 믿지 마라

AI는 실행에 성공하면 "완료"라고 말합니다. 그 "완료"가 내가 원하는 결과물인지는 별개의 문제예요. 상품명이 새 열에 들어간 것도 완료, 이미지가 메모리에서 사라진 것도 완료. 스크립트는 exit 0으로 종료됐으니까.

2. 메모리는 과거의 스냅샷이다

Claude Code의 메모리에는 "①~④ 테스트 완료"라고 찍혀 있었습니다. 며칠 전의 기록이었어요. 그런데 제가 그 사이에 단 한 번도 결과물을 직접 확인한 적이 없었습니다. 메모리는 "과거 언젠가 이렇게 보였다"는 기록일 뿐, "지금도 맞다"는 보장이 아니에요.

3. 지적하는 게 협업이다

이번에 제가 한 말 중 몇 개:

  • "상품명이 원본과 차이가 없는데"

  • "타올행거만 남기면 되잖아"

  • "키보드 스티커에서 키보드를 삭제하고 그냥 스티커라고 하면 어떡하냐"

  • "내가 일일이 수정할꺼면 AI를 왜 쓰냐"

  • "이미지 가공한걸 어떻게 확인해?"

  • "그만 물어보고 그냥 진행해"

거칠죠. 그런데 거칠게 말할수록 Claude는 더 정확히 고쳤습니다. "죄송합니다"를 하지 않고 대신 로직을 다시 짰어요. 지적 → 수정 → 또 지적 → 또 수정. 반나절에 7번쯤 돌았습니다.

저는 이게 진짜 협업이라고 생각해요. 한 번에 맞추는 AI는 없고, 한 번에 맞추라고 요구하는 게 말이 안 됩니다. 제가 계속 찔러야 진짜 AI가 움직입니다.

4. "보여달라"고 해야 보여준다

이미지 164장이 "가공 성공"이라는데 어디서 볼 수 있느냐는 질문을 안 했다면, 저는 오늘도 모르고 있었을 겁니다. AI는 결과물을 보여주는 방식까지는 스스로 챙기지 않습니다. "어떻게 확인해?"를 항상 물어야 해요.

5. 규칙 기반 + AI 보완 조합이 강력하다

키워드 가공을 AI가 창작에서 AI가 선별로 바꾼 게 이번 세션의 가장 큰 수확이에요. AI한테 "상상해서 만들어라"고 하면 헛것을 내놓는데, "진짜 데이터에서 골라라"고 하면 훨씬 정확합니다.

Before: AI → 키워드 10개 (창작, 검색량 0 포함)
After: 네이버 API → 후보 80개 (검증된 실검색어) → AI → 상위 15개 선별

이 패턴은 다른 작업에도 써먹을 수 있습니다. 상품명 리라이트, 카테고리 추론, 속성값 입력 — 전부 "있는 것에서 고르게 하라"가 핵심입니다.


🛠️ 사용한 도구

  • Claude Code (Max 구독) — 감독자이자 실행자

  • Python — 파이프라인 스크립트

  • 네이버 검색광고 API (relKeyword) — 실검색어 + 월검색량

  • 네이버 쇼핑 자동완성 API — 실사용자 검색어 보강

  • rapidfuzz — 퍼지 매칭 (token_set_ratio)

  • PIL (Pillow) — 이미지 가공 (크롭/리사이즈/밝기)

  • pandas, openpyxl — 엑셀 입출력


🚀 다음 할 일

  1. ⑤ 네이버 속성 가공 — 네이버 커머스 API 키 찾으면 실행. 외부 솔루션 프로그램 설정에서 확인 예정

  2. ④ 이미지 업로드 — 구글 드라이브 credentials.json 발급해서 자동 업로드 붙이기

  3. 매일 아침 1회 전구간 자동화 — 지금은 단계별 수동 실행. cron 또는 스케줄러로 묶기

  4. ③ 플랫폼 카테고리 정확도 개선 — 카테고리에 적합한 게 없는 상품 10여 개는 여전히 수동 검토. 사례 쌓아서 매칭 사전 구축


📋 재사용 가능한 프롬프트

프롬프트 1. "완료"라고 보고받았을 때 첫 질문

방금 [작업명]이 완료됐다고 했는데, 내가 직접 눈으로 확인하려면 어디를 봐야 해? 
- 결과 파일 경로
- 확인해야 할 핵심 컬럼/항목
- 샘플 3개 보여줘

프롬프트 2. AI에게 "창작 말고 선별" 시킬 때

이 작업에서 AI가 [X]를 창작하지 말고, 
[실제 데이터 소스: API/DB/파일]에서 후보를 먼저 수집한 다음 
그 중에서 관련성 높은 것을 선별하도록 구조를 바꿔줘. 
창작은 환각이 섞이고 검증이 어렵기 때문.

프롬프트 3. 파이프라인 단계 불일치 점검

이 파이프라인의 각 단계가 어떤 열을 읽고 어떤 열을 쓰는지 
표로 정리해줘. 단계 간에 읽는 컬럼이 일치하지 않으면 빨간색으로 표시.

마지막으로

지난주 글에는 이렇게 썼습니다.

"AI가 알아서 해줘서 놀라웠다."

이번 주에는 정반대 얘기를 하고 싶어요.

AI는 알아서 해주지 않았습니다. 제가 계속 깎아내야 했어요. 부착형 타올행거에서 부착형만 남기는 실수, 상품명을 수정했다는데 D열은 그대로 두는 실수, 이미지를 "가공 완료"라고 하는데 어디에도 저장 안 된 실수. 전부 제가 지적하고 나서야 고쳐졌어요.

그런데 고치긴 합니다. 지적하면 정말로 고쳐요. 그게 이번 반나절의 결론입니다.

"AI가 알아서 한다"는 환상이고, "AI는 시킨 대로 한다"도 환상입니다. AI는 내가 감독하는 만큼만 합니다.

매일 아침 500행 수작업을 반나절로 줄이고 싶다는 욕심에서 시작한 자동화예요. 반나절이 15분이 되었습니다. 그 15분엔 제가 여전히 일하고 있어요 — 결과를 열어보고, 이상한 행을 찾고, AI에게 "이건 왜 이래?"라고 묻고. 감독하는 일.

자동화는 제가 일을 안 하는 게 아니라, 더 재미있는 일을 하는 겁니다. 반복 작업은 AI가, 판단과 감독은 제가.

1
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요