시리즈: 비개발자의 바이브코딩 도전기 (7/10)
기존 기능은 미리 등록한 주제로 글을 생성하는 거였습니다. 그런데 뉴스나 트렌드는 매일 바뀌잖아요. "오늘 있었던 AI 관련 뉴스를 정리해서 올려주면 좋겠다"는 생각이 들었습니다.
그래서 Web Brief라는 기능을 만들었습니다. 웹에서 최신 기사를 찾아서 요약하고, 출처와 함께 발행하는 기능입니다.
Claude한테 아이디어를 설명했습니다.
"웹에서 최신 뉴스를 검색해서, 그 내용을 요약한 글을 쓰고 싶어. 그리고 원본 기사 링크도 함께 올리고 싶어."
Claude가 구조를 제안했습니다.
Threads에서는 하나의 글에 댓글을 달 수 있습니다. 이걸 활용해서 본문을 먼저 올리고, 댓글로 추가 설명과 출처를 붙이기로 했습니다.
Claude에는 웹 검색 기능이 있습니다. API 호출할 때 옵션을 켜면, Claude가 직접 웹을 검색해서 최신 정보를 가져옵니다.
코드에서 이렇게 설정하면 됩니다.
const response = await anthropic.messages.create({ model: "claude-sonnet-4-20250514", max_tokens: 1024, tools: [{ type: "web_search", max_uses: 3 }], messages: [...] });
max_uses: 3은 최대 3번까지 검색하라는 뜻입니다. 너무 많이 검색하면 시간도 오래 걸리고 비용도 늘어나서 제한을 걸었습니다.
웹 검색은 됐는데 문제가 생겼습니다. 가끔 이상한 URL이 나왔습니다. 접속이 안 되거나, 기사가 아닌 페이지거나, 유료 구독이 필요한 기사거나.
이런 URL을 그대로 발행하면 안 됩니다. 사용자가 클릭했는데 안 열리면 신뢰도가 떨어지니까요.
그래서 URL 검증 로직을 추가했습니다. 발행 전에 URL에 접속해서:
이 중 하나라도 실패하면 그 URL은 사용하지 않습니다.
검증에 실패하면 어떻게 할까요? 처음에는 그냥 발행을 건너뛰었습니다. 근데 그러면 예정된 글이 안 나가는 경우가 생깁니다.
그래서 Backup URL 기능을 만들었습니다. 검색할 때 URL을 하나만 받는 게 아니라 여러 개를 받아둡니다. 첫 번째가 실패하면 두 번째를 시도하고, 그것도 실패하면 세 번째를 시도합니다.
Claude한테 이렇게 말했습니다.
"검색할 때 URL을 3개 정도 받아서, 첫 번째가 안 되면 다음 걸로 시도하게 해줘."
Claude가 코드를 수정했습니다. 검색 결과에서 관련성 높은 순으로 URL 3개를 저장하고, 발행할 때 순서대로 시도합니다.
또 하나의 문제가 있었습니다. 같은 기사를 여러 번 발행하는 경우가 있었습니다. AI 관련 뉴스를 매일 검색하면, 어제도 나왔던 기사가 오늘도 검색될 수 있거든요.
이걸 막기 위해 중복 검사를 추가했습니다.
데이터베이스에 발행 기록이 있으니까, 거기서 확인하면 됩니다. Claude가 SQL 쿼리를 짜서 중복 체크 로직을 만들었습니다.
최종적으로 Web Brief는 이런 구조로 발행됩니다.
Threads API에서 댓글을 다는 것도 가능합니다. 본문을 먼저 발행하고, 그 글의 ID를 받아서 댓글을 붙입니다.
근데 여기서도 문제가 있었습니다. Threads API는 요청을 너무 빨리 보내면 429 에러를 냅니다. 429 에러는 "요청이 너무 많아"라는 뜻입니다.
그래서 요청 사이에 딜레이를 넣었습니다. 본문 발행 후 2초 기다리고 댓글 발행, 또 2초 기다리고 다음 댓글 발행. 이렇게 하니까 에러 없이 잘 됐습니다.
Web Brief 기능이 추가되면서 마케팅 자동화 툴이 훨씬 유용해졌습니다. 매일 최신 뉴스를 자동으로 정리해서 올려주니까, 팔로워들한테 가치 있는 콘텐츠를 제공할 수 있게 됐습니다.
다음 편에서는 이 기능을 한 단계 더 발전시킵니다. 발행 직전에 실시간으로 콘텐츠를 생성하는 JIT(Just-In-Time) 기능입니다.
다음 편: 오늘 뜬 뉴스로 오늘 콘텐츠 만들기: 실시간 자동화의 비밀
댓글을 작성하려면 로그인이 필요합니다.
시리즈: 비개발자의 바이브코딩 도전기 (7/10)
기존 기능은 미리 등록한 주제로 글을 생성하는 거였습니다. 그런데 뉴스나 트렌드는 매일 바뀌잖아요. "오늘 있었던 AI 관련 뉴스를 정리해서 올려주면 좋겠다"는 생각이 들었습니다.
그래서 Web Brief라는 기능을 만들었습니다. 웹에서 최신 기사를 찾아서 요약하고, 출처와 함께 발행하는 기능입니다.
Claude한테 아이디어를 설명했습니다.
"웹에서 최신 뉴스를 검색해서, 그 내용을 요약한 글을 쓰고 싶어. 그리고 원본 기사 링크도 함께 올리고 싶어."
Claude가 구조를 제안했습니다.
Threads에서는 하나의 글에 댓글을 달 수 있습니다. 이걸 활용해서 본문을 먼저 올리고, 댓글로 추가 설명과 출처를 붙이기로 했습니다.
Claude에는 웹 검색 기능이 있습니다. API 호출할 때 옵션을 켜면, Claude가 직접 웹을 검색해서 최신 정보를 가져옵니다.
코드에서 이렇게 설정하면 됩니다.
const response = await anthropic.messages.create({ model: "claude-sonnet-4-20250514", max_tokens: 1024, tools: [{ type: "web_search", max_uses: 3 }], messages: [...] });
max_uses: 3은 최대 3번까지 검색하라는 뜻입니다. 너무 많이 검색하면 시간도 오래 걸리고 비용도 늘어나서 제한을 걸었습니다.
웹 검색은 됐는데 문제가 생겼습니다. 가끔 이상한 URL이 나왔습니다. 접속이 안 되거나, 기사가 아닌 페이지거나, 유료 구독이 필요한 기사거나.
이런 URL을 그대로 발행하면 안 됩니다. 사용자가 클릭했는데 안 열리면 신뢰도가 떨어지니까요.
그래서 URL 검증 로직을 추가했습니다. 발행 전에 URL에 접속해서:
이 중 하나라도 실패하면 그 URL은 사용하지 않습니다.
검증에 실패하면 어떻게 할까요? 처음에는 그냥 발행을 건너뛰었습니다. 근데 그러면 예정된 글이 안 나가는 경우가 생깁니다.
그래서 Backup URL 기능을 만들었습니다. 검색할 때 URL을 하나만 받는 게 아니라 여러 개를 받아둡니다. 첫 번째가 실패하면 두 번째를 시도하고, 그것도 실패하면 세 번째를 시도합니다.
Claude한테 이렇게 말했습니다.
"검색할 때 URL을 3개 정도 받아서, 첫 번째가 안 되면 다음 걸로 시도하게 해줘."
Claude가 코드를 수정했습니다. 검색 결과에서 관련성 높은 순으로 URL 3개를 저장하고, 발행할 때 순서대로 시도합니다.
또 하나의 문제가 있었습니다. 같은 기사를 여러 번 발행하는 경우가 있었습니다. AI 관련 뉴스를 매일 검색하면, 어제도 나왔던 기사가 오늘도 검색될 수 있거든요.
이걸 막기 위해 중복 검사를 추가했습니다.
데이터베이스에 발행 기록이 있으니까, 거기서 확인하면 됩니다. Claude가 SQL 쿼리를 짜서 중복 체크 로직을 만들었습니다.
최종적으로 Web Brief는 이런 구조로 발행됩니다.
Threads API에서 댓글을 다는 것도 가능합니다. 본문을 먼저 발행하고, 그 글의 ID를 받아서 댓글을 붙입니다.
근데 여기서도 문제가 있었습니다. Threads API는 요청을 너무 빨리 보내면 429 에러를 냅니다. 429 에러는 "요청이 너무 많아"라는 뜻입니다.
그래서 요청 사이에 딜레이를 넣었습니다. 본문 발행 후 2초 기다리고 댓글 발행, 또 2초 기다리고 다음 댓글 발행. 이렇게 하니까 에러 없이 잘 됐습니다.
Web Brief 기능이 추가되면서 마케팅 자동화 툴이 훨씬 유용해졌습니다. 매일 최신 뉴스를 자동으로 정리해서 올려주니까, 팔로워들한테 가치 있는 콘텐츠를 제공할 수 있게 됐습니다.
다음 편에서는 이 기능을 한 단계 더 발전시킵니다. 발행 직전에 실시간으로 콘텐츠를 생성하는 JIT(Just-In-Time) 기능입니다.
다음 편: 오늘 뜬 뉴스로 오늘 콘텐츠 만들기: 실시간 자동화의 비밀
댓글을 작성하려면 로그인이 필요합니다.