N잡/구매대행

스마트스토어 자동화 2편 — 출고 엑셀 → 체크리스트

ch__ 2026. 7. 21. 21:04
 


지난 편 에서 네이버 출고 엑셀을 한미택배 업로드 양식으로 변환하는 걸 Claude로 자동화했습니다. 송장 입력하는 시간이 확 줄었죠.

그런데 며칠 돌려보니, 송장 찍는 게 출고일 작업의 전부가 아니더라고요.

출고 한 번 나가는 데 실제로 하는 일을 쭉 늘어놓으면 이렇습니다.

  1. 네이버에서 발주발송 엑셀 받기
  2. 한미택배 송장 만들기 ← 이건 1편에서 끝냄
  3. 이 주문들 물건을 사러 가기 (코스트코, 월마트, 마트 등)
  4. 수취인별로 나눠서 포장하기

이 중 3번(사입)은 보통 출고일 전날에 필요한 걸 모아서 한 번에 다녀옵니다. 마트를 여러 번 가면 시간이 아까우니까요. (주문이 라스트미닛에 훅 들어오면 그때만 출고날 아침에 급하게 한 번 더 가고요.) 그러니 "이번 출고에 뭘 사야 하나"를 미리 딱 뽑아둘 수 있으면 제일 좋습니다.

3번과 4번이 은근히 손이 많이 갑니다. 그리고 재밌는 건, 이 둘이 정반대 방향이라는 거예요.

  • 사러 갈 때는 → "이 상품 총 몇 개 사야 해?" (누가 샀든 상관없이 상품 기준으로 합산)
  • 포장할 때는 → "이 사람한테는 뭐뭐 들어가?" (사람 기준으로 묶음)

그러니까 같은 엑셀을 두 번, 그것도 서로 다른 방식으로 훑어야 합니다. 주문이 몇 건이면 괜찮은데 폭주하면 이것도 일이죠.

그래서 1편에서 배운 걸 그대로 써먹었습니다. 같은 출고 엑셀 하나를 던져서, 관점만 두 개로 뽑아내자.


첫 프롬프트

"이 스마트스토어 출고 엑셀로 Todoist에 두 개 만들어줘. 하나는 전 주문을 상품별로 다 합친 '사야 할 제품' 리스트, 다른 하나는 '수취인별'로 묶은 리스트."


입력은 1편이랑 똑같습니다. 네이버 발주발송관리 엑셀을 다운받아 토스해줍니다.
이미 얘가 이 엑셀 구조를 아니까 설명이 길 필요도 없었습니다.

그랬더니 두 개의 부모 태스크가 생겼습니다.

  • 사야 할 제품들 — 모든 주문을 상품 기준으로 합산한 장보기 리스트
  • 수취인별 주문 — 수취인마다 묶고, 그 아래에 그 사람 주문 품목

이슈 1 — 왜 엑셀도, 구글 태스크도 아니고 Todoist냐

처음엔 저도 "그냥 엑셀 시트 두 장 뽑으면 되잖아?" 했는데, 실제 동선을 생각하니 아니었습니다.

  • 마트에서는 카트 밀면서 폰으로 하나씩 체크하고 싶습니다. 엑셀을 폰으로 보면서 체크하긴 불편하죠.
  • 포장할 때는 박스 싸면서 수취인별로 하나씩 지워나가고 싶고요.

Todoist는 이 두 가지가 자연스럽습니다. 장 볼 때는 "사야 할 제품들"을 체크, 포장할 때는 "수취인별 주문"을 체크. 손에 뭘 들고 있어도 폰 하나로 됩니다.

"결과는 엑셀 말고 Todoist 태스크로 만들어줘. 마트에서 폰으로 체크하면서 살 거라서."

그런데 여기서 한 번 더 갈렸습니다. "이왕 할 거면 구글 태스크로 하지 왜 Todoist냐?"

솔직히 구글 태스크로도 됐을 겁니다. 근데 Todoist를 고른 이유가 몇 개 있어요.

  • Claude가 직접 꽂을 수 있는 연결(MCP/API)이 깔끔했습니다. 이 작업의 핵심은 "내가 손으로 태스크를 만드는 게 아니라 Claude가 알아서 만들어주는 것"이라, Claude가 태스크를 프로그램적으로 생성·조회할 수 있느냐가 제일 중요했습니다. Todoist는 그게 바로 됐어요.
  • 2단계 중첩이 필요했습니다. "수취인별 주문"은 수취인 → 그 사람 품목 구조라 들여쓰기 두 단계가 자연스러워야 하는데, Todoist는 서브태스크 안에 또 서브태스크가 깔끔하게 들어갑니다. 구글 태스크는 이 중첩이 약하죠.
  • 폰 앱 UX·프로젝트 분리·자연어 마감일 같은 소소한 것들도 장보기·포장 체크엔 Todoist가 편했고요.

그리고 사실 제일 중요한 건 이겁니다 — 어차피 도구에 묶이는 구조가 아닙니다. 구글 태스크든 노션이든, "이런 관점으로 이런 구조의 리스트를 만들어줘"라고 설명만 바꾸면 Claude가 그쪽 도구로 갈아 끼워줍니다. 저는 이미 Todoist를 쓰고 있어서 골랐을 뿐이에요.


이슈 2 — 대표 상품명만 믿었다가 엉뚱한 걸 사왔습니다

이게 제일 크게 데인 부분입니다.

네이버 엑셀에는 대표 상품명이 있고, 그 옆에 옵션 컬럼이 따로 있습니다. 같은 상품이라도 맛·용량·색상 옵션이 다르면 실제로는 다른 걸 사와야 하죠.

처음엔 이걸 모르고 상품명만 보고 리스트를 만들었습니다. 그랬더니 "커피크리스프 바"라고만 떠서 저는 50g짜리 바를 사왔는데, 실제 주문은 스낵사이즈 11g × 8개입이었습니다. 옵션을 안 본 거죠. 결국 반품했습니다. 잘못된 리스트 = 잘못된 사입 = 그냥 손실이더라고요.

그래서 규칙을 박았습니다.

"상품명만 보지 말고 옵션 컬럼도 같이 봐. 맛·용량이 다르면 다른 줄로 나누고, 상품명 (옵션) × 수량 형식으로 써줘."

이제 리스트가 이렇게 나옵니다.

□ 커피크리스프 (11g x 8 스낵사이즈) × 6
□ 킷캣 F1 레이싱카 밀크초콜릿 693g × 2
□ 다우니 언스토퍼블 퓨전 (트와일라잇자스민) × 3

구매 리스트든 수취인별 묶음이든 둘 다 옵션 단위로 쪼갭니다. 사람이 실수하기 딱 좋은 부분을 규칙 한 줄로 막은 셈이죠.


이슈 3 — 출고일 사이에 주문이 계속 들어옵니다

한 번 리스트를 뽑아도 끝이 아닙니다. 사입하러 가기 전(보통 전날)에 리스트를 뽑아두는데, 그 이후로도 마감 전까지 주문이 계속 추가로 들어와요. 그때마다 새 엑셀을 받는데, 이미 넣은 건 또 넣으면 안 됩니다.

더 골치 아픈 건, 저는 장 보면서/포장하면서 항목을 하나씩 체크(완료) 해버린다는 겁니다. 그러니 "이미 산 것"은 리스트에서 이미 지워져 있죠. 단순히 "지금 남아 있는 리스트"랑만 비교하면, 이미 사서 지운 걸 신규로 착각해서 또 사러 가게 됩니다.

그래서 이렇게 시켰습니다.

"주문이 나중에 더 들어오면 기존 리스트에 신규만 더해줘. 새로 만들지 말고, 이미 체크해서 지운 항목까지 확인해서 중복 없게."

지금은 추가 주문 엑셀을 던지면, 미완료 항목뿐 아니라 완료 처리한 항목까지 대조해서 "정말 새로운 것만" 기존 리스트 밑에 붙여줍니다. 부모 태스크를 매번 새로 만들지도 않고요.


미리보기 먼저, 그다음에 생성

이건 안전장치인데, 얘가 바로 Todoist에 쓰지 않고 먼저 텍스트로 미리보기를 보여줍니다.

[사야 할 제품들] — 9줄
  □ 커피크리스프 (11g x 8) × 6
  □ 킷캣 F1 레이싱카 693g × 2
  ...

[수취인별 주문] — 5명
  ▸ 한O주
      □ 커피크리스프 (11g x 8) × 2
  ▸ 김O빈
      □ 킷캣 F1 레이싱카 693g × 1
  ...

마감일: 오늘 / 프로젝트: 스마트스토어

 

제가 훑어보고 "그대로 만들어줘" 하면 그때 실제로 Todoist에 올립니다. 잘못된 리스트가 그대로 올라가는 걸 한 번 걸러주는 거죠.


그래서 지금은

출고 엑셀 하나 던지면 → 미리보기 확인 → "GO" → 폰에 체크리스트 두 개.

마트에서는 "사야 할 제품들"을 카트에 담으면서 체크, 집에 와서는 "수취인별 주문"을 포장하면서 체크. 종이에 적어가며 상품 세던 거, 사람별로 다시 정리하던 거, 이제 안 합니다.


1편이랑 이어지는 지점

1편에서 제가 내린 결론이 이거였습니다.

[소스 엑셀] + [대상 양식] + [매핑 규칙] → [변환된 엑셀]


이번 편은 여기서 한 발 더 나간 겁니다.

[같은 출고 엑셀] → [구매 관점] + [포장 관점]


핵심은 소스는 하나인데, 어떤 "관점"으로 재구성하느냐입니다. 택배사 양식으로 뽑으면 송장이 되고, 상품 기준으로 합치면 장보기 리스트가 되고, 사람 기준으로 묶으면 포장 리스트가 됩니다. 원본 데이터는 그대로예요.

저는 "이런 관점으로 정리해줘"라고 설명만 하면 됩니다. 세고, 합치고, 묶고, 중복 거르는 건 Claude가 합니다.

1편이 "송장 찍는 직원 하나 생긴" 느낌이었다면, 이번 건 "장보기 리스트랑 포장 순서까지 챙겨주는 어시스턴트"가 하나 더 생긴 느낌이네요.

반응형