itsus

← Portfolio

추림 — "살 만한 것만 추림"을 증거로 뒷받침하는 특가 큐레이션

쿠팡·알리 특가를 매일 자동 수집하고 가격 히스토리를 쌓아, '역대 최저'라는 말을 스파크라인 증거와 함께만 내보내는 운영 중인 서비스.

날짜
역할
기획 · 개발 · 운영
기술
Node.js · 쿠팡 파트너스 API · pm2 · Caddy
링크
churim.com
추림 — "살 만한 것만 추림"을 증거로 뒷받침하는 특가 큐레이션

왜 만들었나

특가 정보는 어디에나 있는데, “이게 정말 싼 건가”에 답해주는 곳은 드물다. “역대 최저”라는 문구는 넘치지만 근거를 보여주는 카드는 거의 없다.

그래서 원칙을 하나로 좁혔다. 주장에는 증거를 붙인다. 역대 최저라는 말은 그 상품의 가격을 직접 추적해 온 히스토리가 있을 때만 쓰고, 그 히스토리를 카드 위에 스파크라인으로 그대로 보여준다.

무엇을 만들었나

churim.com 에서 운영 중인 특가 큐레이션 서비스다. 매일 아침 6시 5분에 쿠팡·알리 특가를 자동 수집하고, 네이버 쇼핑은 테마별로 수동 큐레이션한다. 수익은 제휴 링크 수수료고, 이 사실은 페이지 상단에 고지한다. 기획·개발·운영을 혼자 한다.

추림 데스크톱 화면

이 글을 쓰는 날 아침 6시 5분 갱신분. 가격 추적 61개, 역대 최저 13건. “역대 최저” 배지가 붙은 카드마다 아래에 가격 추적 스파크라인과 “N일 추적 중 최저” 캡션이 달린다.

추림 모바일 화면

모바일은 1열 리스트로 바뀐다. 프리미엄 가전 섹션에는 직전가 대비 하락폭을 함께 보여준다.

어떻게 만들었나

’역대 최저’는 자격이 있어야 붙는다. 수집 시작 이후 7일 넘게 추적한 상품만 저점 판정 대상이 된다. 근거 없이 붙는 순간 서비스 전체가 거짓말이 되기 때문에, 이 규칙은 코드보다 먼저 정했다.

이미 가진 데이터부터 쓴다. 경쟁 서비스(다나와·핫딜 커뮤니티·가격 추적기)를 조사해 보니 부족한 건 수집이 아니라 배관이었다. 쿠팡 API가 주는 카테고리를 버리고 있던 걸 한 줄로 연결해 카테고리 보유율이 30%에서 94%로 올랐고, 90일치 쌓아만 두던 클릭 로그를 다나와 인기순과 같은 기준(최근 7일)의 공개 정렬로 연결했다.

링크에 정답이 있다. 수동 등록 상품의 자동 갱신가가 날마다 다른 옵션(용량·수량)의 가격으로 튀는 문제가 있었다. 상품명으로 추측하는 대신, 등록할 때 붙여넣는 제휴 단축링크를 한 번 풀어 상품·옵션 ID를 확정하는 방식으로 바꿨다 — 추측을 없애면 오매칭도 없다.

걸렸던 것

미검증 가격이 ’역대 최저’로 광고될 뻔했다. 썸네일 하나가 안 나오는 문제를 파고들다 연쇄 결함을 발견했다. 오매칭이 의심돼 보류시킨 상품도 가격이 매일 히스토리에 기록되고 있었고, 그대로 두면 7일 뒤 자동으로 역대 최저 배지가 붙어 큐레이션 맨 앞에 노출될 경로였다. 저점 표시가 한 번 붙으면 가격이 올라도 해제되지 않는 문제도 같이 나왔다. 보류 중에는 기록을 건너뛰고 저점 주장을 하지 않도록 경로를 막았다 — 신뢰를 파는 서비스에서 이건 버그가 아니라 사고였다.

이름이 주장보다 커지면 안 된다. 처음 태그라인은 “저점만 추렸습니다”였다. 그런데 네이버 쪽은 저점 판정이 아니라 수동 큐레이션이라, 절반은 참이 아닌 문장이었다. “살 만한 것만 추림”으로 바꿨다 — 자동 저점과 수동 큐레이션 모두에 참인 주장으로. 카피도 스펙이라는 걸 배웠다.

어디까지 왔나

3주 만에 v0.3에서 v0.8.3까지 왔고, 도메인 연결과 HTTPS 전환을 거쳐 지금은 매일 아침 자동 갱신으로 혼자 굴러간다. 배포는 git push 한 번이다.

남은 것

네이버 검색 API가 오류를 반환하기 시작해 수동 등록 네이버 상품의 가격 갱신이 멈춰 있다 — 배치는 이전 결과를 유지한 채 넘어가도록 해뒀지만 원인은 아직 못 찾았다. 프리미엄 가전의 옵션 행 매칭도 더 조일 여지가 남아 있다.