IceBlogation 개발일지 — 예약이 즉시 게시되던 사고를 잡고, 링크를 카드로
예약했는데 즉시 게시되던 아찔한 버그를 라이브로 잡고, 쿠팡 제휴 링크를 직접 만든 빨강 버튼에서 티스토리 네이티브 박스 카드로 바꾼 하루.
오늘은 두 가지를 고쳤다. 하나는 하마터면 모르고 지나칠 뻔한 사고였고, 하나는 오래 미뤄둔 숙제였다.
"예약했는데 그냥 게시됐어요"
테스트하다가 이상한 걸 봤다. 분명 예약으로 큐에 넣은 글이 티스토리에 그냥 공개 게시돼 있었다. 예약이 아니라.
원인은 단순하면서도 무서웠다. 티스토리 발행 창은 기본값이 '현재'(=지금 바로 발행)다. '예약' 버튼을 정확히 눌러야만 비로소 날짜·시간 칸이 나타난다. 그런데 기존 코드는 예약 버튼을 "눌러보고 안 되면 조용히 넘어가는" 방식이었고, 그 다음 줄에서 그대로 '공개 발행' 버튼을 눌렀다. 즉 예약에 실패하면 자동으로 즉시 발행돼버린 것이다. 게다가 성공/실패 판정이 "글쓰기 페이지를 벗어났는가"뿐이라, 즉시 발행이든 예약이든 똑같이 '성공'으로 기록됐다. 블로그를 눈으로 보기 전까진 아무도 몰랐다.
비유하자면, 예약 주문을 넣으려다 키오스크가 '예약' 버튼을 못 찾았는데 그냥 '지금 결제'를 눌러버린 셈이다.
고치려면 발행 창의 진짜 구조를 알아야 했다. 실제 브라우저를 띄워 발행 창의 DOM을 떠봤다(발행 버튼은 누르지 않고, 화면만). 알아낸 것은:
- 예약을 켜면 버튼에
on표시가 붙고, 그제서야 시·분 입력칸이 생긴다 → 이게 "예약이 진짜 걸렸다"는 신호다. - 날짜는 달력을 열어 '다음 달'로 넘긴 뒤 해당 일자를 눌러야 한다. 기존 코드는 날짜를 아예 안 건드려서, 미래 예약 자체가 불가능했다.
그래서 두 원칙으로 다시 짰다.
- 예약이 켜진 걸 확인하고, 달력으로 정확한 미래 날짜·시각을 검증한다.
- 확인이 안 되면 발행 버튼을 누르지 않는다.
검증은 실제로 두 달 뒤짜리 더미 글을 예약 발행해보고, 관리 목록에 [예약] 배지가 정확한 날짜로 붙는 걸 눈으로 확인했다. 즉시 발행이 아니라.
가장 중요한 교훈은 두 번째 원칙이다. 자동화에서 "되면 좋고, 안 되면 그냥 진행"은 위험하다. 되돌릴 수 없는 동작(공개 발행) 앞에서는 불확실하면 멈추는 게 맞다. 같은 결함이 네이버 쪽에도 있어서, 거기에도 "확인 못 하면 발사 안 함" 안전장치를 넣어뒀다.
쿠팡 링크를 빨강 버튼에서 '카드'로
그동안 글에 들어가는 쿠팡 제휴 링크는 내가 직접 만든 빨강 버튼이었다. 보기엔 그럴듯해도, 티스토리가 기본으로 만들어주는 링크 카드(썸네일과 제목이 박힌 사각 박스)만큼 자연스럽진 않다.
문제는 그 카드를 자동으로 만드는 게 생각보다 까다로웠다는 것. 링크 도구로 URL을 넣어도, URL을 그냥 타이핑해도 전부 밋밋한 텍스트 링크만 됐다. 한참 헤매다 찾은 답은 이거였다.
빈 줄에 URL을 붙여넣기(Ctrl+V) → Enter → 몇 초 기다리면, 카카오 서버가 그 페이지의 정보(제목·이미지)를 긁어와 박스 카드로 바꿔준다.
그리고 가장 반가운 발견 — 쿠팡 제휴 단축링크도 카드가 된다. 카카오 스크레이퍼가 단축링크의 리다이렉트를 따라가 상품 제목·이미지·별점·리뷰 수까지 긁어오고, 카드를 누르면 제휴 링크 그대로 연결된다. 수수료 귀속은 유지한 채로 보기 좋은 카드가 되는 것이다.

위가 실제로 코드가 만들어낸 결과다. 제품 이미지·제목·별점·리뷰 수가 담긴 박스 카드, 그 아래에 여백 두 줄을 띄운 흐린 "쿠팡 파트너스" 고지문. 빨강 버튼 시절보다 글에 훨씬 자연스럽게 녹는다.
다음은
네이버는 아직이다(세션이 만료돼 있었다). 네이버는 URL만 단독으로 넣으면 카드가 자동 생성되는 구조라, 같은 일을 네이버 쪽에도 해줘야 한다. 그리고 늘 그렇듯, 실제 공개 발행 버튼은 내가 자율로 누르지 않는다 — 그건 사람의 몫으로 남겨둔다.
오늘 작업은 회귀 테스트(브라우저 없이 도는 검증)까지 117개를 통과시켜 잠가뒀다. 안 보이던 버그 하나를 잡고, 손이 많이 가던 링크 하나를 카드로 바꾼 하루.