시리즈: 비개발자의 바이브코딩 도전기 (8/10)
Web Brief 기능을 만들었는데, 한 가지 아쉬운 점이 있었습니다. 콘텐츠를 미리 생성해두면, 발행 시점에는 이미 오래된 뉴스가 될 수 있다는 거였습니다.
예를 들어 오전에 콘텐츠를 생성해두고 저녁에 발행하면, 그 사이에 더 중요한 뉴스가 나올 수 있습니다. 그래서 "발행 직전에 콘텐츠를 생성하면 어떨까?"라는 생각이 들었습니다.
JIT는 Just-In-Time의 약자입니다. 제조업에서 나온 용어인데, "필요한 시점에 필요한 만큼만 생산한다"는 개념입니다. 미리 만들어두지 않고, 필요할 때 바로 만드는 거죠.
이걸 콘텐츠에 적용했습니다. 미리 글을 생성해두는 게 아니라, 발행 1시간 전에 그때의 최신 뉴스로 글을 생성합니다.
Claude한테 설명했습니다.
"발행 예정 시간 1시간 전에 자동으로 콘텐츠를 생성하게 하고 싶어. Web Brief 카테고리만."
Claude가 구조를 제안했습니다.
기존에는 이랬습니다:
JIT는 이렇게 바뀝니다:
이러면 항상 최신 뉴스를 반영할 수 있습니다.
이걸 위해서는 새로운 스케줄 작업이 필요했습니다. 기존에는 매 시간마다 "발행할 게 있나?" 확인하는 작업만 있었는데, 이제 "1시간 후에 발행할 게 있나? 있으면 콘텐츠 생성해" 하는 작업이 추가됩니다.
**크론(Cron)**은 정해진 시간에 자동으로 작업을 실행하는 시스템입니다. 알람 앱이랑 비슷한데, 알람이 울리면 특정 코드가 실행됩니다.
QStash에 새로운 스케줄을 추가했습니다. 매 시간 0분에 JIT 생성 API를 호출하게 했습니다.
JIT를 도입하면서 포스트 상태가 복잡해졌습니다. 기존에는 "대기 중 → 발행됨" 정도였는데, 이제는:
왜 이렇게 세분화했냐면, 문제가 생겼을 때 어디서 잘못됐는지 파악하기 위해서입니다. "JIT 생성에서 실패했구나" 아니면 "발행에서 실패했구나"를 알 수 있어야 대응할 수 있습니다.
JIT 생성이 실패하면 어떻게 해야 할까요? 발행 시간은 다가오는데 콘텐츠가 없으면 곤란합니다.
두 가지 대비책을 마뤘습니다.
첫째, 재시도. 생성에 실패하면 30분 후에 다시 시도합니다. 1시간 전에 첫 시도, 30분 전에 재시도. 두 번의 기회가 있습니다.
둘째, 상태 표시. JIT 생성에 실패하면 jit_failed 상태가 됩니다. 이 상태인 포스트는 자동 발행하지 않고, 관리자가 확인할 수 있게 남겨둡니다.
JIT를 도입하면서 API 호출이 늘었습니다. 웹 검색도 하고, 콘텐츠 생성도 하고. Claude API는 사용량에 따라 과금되니까 신경이 쓰였습니다.
Claude한테 물어봤습니다.
"API 비용을 줄일 방법이 있을까?"
Claude가 몇 가지 제안을 했습니다.
저는 1번을 적용했습니다. 검색 2번이면 충분히 좋은 기사를 찾을 수 있었습니다.
JIT가 적용된 후의 흐름은 이렇습니다.
이러면 발행 1시간 전의 최신 뉴스가 반영됩니다. "오늘 오후에 발표된 뉴스"를 저녁에 바로 공유할 수 있게 됐습니다.
JIT를 도입하고 나서 콘텐츠의 시의성이 확 좋아졌습니다. 팔로워들 반응도 좋아졌고요. "이 뉴스 방금 나왔는데 벌써?"라는 반응도 있었습니다.
물론 단점도 있습니다. 미리 생성해두는 게 아니라서, 발행 전에 내용을 확인하고 수정하기가 어렵습니다. 자동화의 장점이자 단점이죠.
다음 편에서는 또 다른 자동화를 다룹니다. Threads API 토큰을 자동으로 갱신하는 기능입니다.
다음 편: 매일 로그인하기 귀찮아서 자동화했더니 생긴 일
댓글을 작성하려면 로그인이 필요합니다.
시리즈: 비개발자의 바이브코딩 도전기 (8/10)
Web Brief 기능을 만들었는데, 한 가지 아쉬운 점이 있었습니다. 콘텐츠를 미리 생성해두면, 발행 시점에는 이미 오래된 뉴스가 될 수 있다는 거였습니다.
예를 들어 오전에 콘텐츠를 생성해두고 저녁에 발행하면, 그 사이에 더 중요한 뉴스가 나올 수 있습니다. 그래서 "발행 직전에 콘텐츠를 생성하면 어떨까?"라는 생각이 들었습니다.
JIT는 Just-In-Time의 약자입니다. 제조업에서 나온 용어인데, "필요한 시점에 필요한 만큼만 생산한다"는 개념입니다. 미리 만들어두지 않고, 필요할 때 바로 만드는 거죠.
이걸 콘텐츠에 적용했습니다. 미리 글을 생성해두는 게 아니라, 발행 1시간 전에 그때의 최신 뉴스로 글을 생성합니다.
Claude한테 설명했습니다.
"발행 예정 시간 1시간 전에 자동으로 콘텐츠를 생성하게 하고 싶어. Web Brief 카테고리만."
Claude가 구조를 제안했습니다.
기존에는 이랬습니다:
JIT는 이렇게 바뀝니다:
이러면 항상 최신 뉴스를 반영할 수 있습니다.
이걸 위해서는 새로운 스케줄 작업이 필요했습니다. 기존에는 매 시간마다 "발행할 게 있나?" 확인하는 작업만 있었는데, 이제 "1시간 후에 발행할 게 있나? 있으면 콘텐츠 생성해" 하는 작업이 추가됩니다.
**크론(Cron)**은 정해진 시간에 자동으로 작업을 실행하는 시스템입니다. 알람 앱이랑 비슷한데, 알람이 울리면 특정 코드가 실행됩니다.
QStash에 새로운 스케줄을 추가했습니다. 매 시간 0분에 JIT 생성 API를 호출하게 했습니다.
JIT를 도입하면서 포스트 상태가 복잡해졌습니다. 기존에는 "대기 중 → 발행됨" 정도였는데, 이제는:
왜 이렇게 세분화했냐면, 문제가 생겼을 때 어디서 잘못됐는지 파악하기 위해서입니다. "JIT 생성에서 실패했구나" 아니면 "발행에서 실패했구나"를 알 수 있어야 대응할 수 있습니다.
JIT 생성이 실패하면 어떻게 해야 할까요? 발행 시간은 다가오는데 콘텐츠가 없으면 곤란합니다.
두 가지 대비책을 마뤘습니다.
첫째, 재시도. 생성에 실패하면 30분 후에 다시 시도합니다. 1시간 전에 첫 시도, 30분 전에 재시도. 두 번의 기회가 있습니다.
둘째, 상태 표시. JIT 생성에 실패하면 jit_failed 상태가 됩니다. 이 상태인 포스트는 자동 발행하지 않고, 관리자가 확인할 수 있게 남겨둡니다.
JIT를 도입하면서 API 호출이 늘었습니다. 웹 검색도 하고, 콘텐츠 생성도 하고. Claude API는 사용량에 따라 과금되니까 신경이 쓰였습니다.
Claude한테 물어봤습니다.
"API 비용을 줄일 방법이 있을까?"
Claude가 몇 가지 제안을 했습니다.
저는 1번을 적용했습니다. 검색 2번이면 충분히 좋은 기사를 찾을 수 있었습니다.
JIT가 적용된 후의 흐름은 이렇습니다.
이러면 발행 1시간 전의 최신 뉴스가 반영됩니다. "오늘 오후에 발표된 뉴스"를 저녁에 바로 공유할 수 있게 됐습니다.
JIT를 도입하고 나서 콘텐츠의 시의성이 확 좋아졌습니다. 팔로워들 반응도 좋아졌고요. "이 뉴스 방금 나왔는데 벌써?"라는 반응도 있었습니다.
물론 단점도 있습니다. 미리 생성해두는 게 아니라서, 발행 전에 내용을 확인하고 수정하기가 어렵습니다. 자동화의 장점이자 단점이죠.
다음 편에서는 또 다른 자동화를 다룹니다. Threads API 토큰을 자동으로 갱신하는 기능입니다.
다음 편: 매일 로그인하기 귀찮아서 자동화했더니 생긴 일
댓글을 작성하려면 로그인이 필요합니다.