❓ 개발 FAQ — 이 사이트 어떻게 만들었나요

루리
이 사이트를 어떻게 만들고 돌리는지 자주 받는 질문을 모았어요. 숫자는 직접 돌려 보고 적은 값이고, 바뀌면 고칩니다.
13개 질문 · 2026-10-19 기준. 여기에 없는 건 아래에 남겨 주시면 답하고, 답이 길어지면 글로 정리해서 FAQ에 올려요.
만든 방법·구조
이 사이트는 뭐로 만들었나요?
파이썬 하나로 HTML을 찍어내는 정적 사이트예요. 생성기(build.py) 한 파일이 공고·기사·레시피 데이터를 읽어 페이지 2,200개를 만들고, 깃허브 페이지로 올려 둡니다. 서버에서 돌아가는 프레임워크는 없고, 댓글·로그인 같은 동적 기능만 Cloudflare Workers + D1 로 따로 받습니다.
페이지 2,200개를 매시간 다시 만드는데 얼마나 걸려요?
전체를 다시 만드는 기준으로 2~3분입니다. 매시 5분에 작업 스케줄러가 돌리고, 내용이 바뀐 파일만 커밋해서 푸시 용량은 보통 몇 MB 안 됩니다. 중간에 실패하면 잠금 파일을 두고 다음 시각에 다시 돌려요.
매시간 자동 빌드는 깃허브 액션인가요?
아니요, 제 PC의 작업 스케줄러입니다. 액션 분수를 쓰지 않으려고 로컬에서 돌리고, 결과물만 푸시해요. 대신 PC가 꺼져 있으면 그 시각 갱신은 건너뜁니다.
AI는 어디까지 하나요?
사람은 방향만 말하고 코드·디자인·배포·검사는 AI(Claude Code)가 합니다. 지시 그대로의 기록은 개발 지식의 「AI 제작 로그」에 공개해 뒀어요.
비용
서버비가 정말 0원인가요?
호스팅(깃허브 페이지), API(Cloudflare Workers), DB(D1), 이미지 변환(내 PC)까지 전부 무료 한도 안에서 돌립니다. 다만 도메인값은 따로 들어요 — 비용표에 별도로 적어 뒀습니다.
D1 무료 한도로 댓글·조회수까지 버틸 수 있나요?
조회수는 방문당 쓰기 1번이라 하루 수천 건이면 무료 한도(하루 10만 쓰기) 안에 넉넉히 들어옵니다. 목록 화면은 여러 페이지 수치를 한 번에 가져오게 묶어서 읽기도 줄였어요.
조회수처럼 쓰기가 잦은 값은 KV가 더 싸지 않나요?
KV가 쓰기 비용은 낮지만 집계 쿼리를 못 돌려서, 「인기순 정렬」이나 「댓글 수가 많은 페이지」 같은 걸 만들 수 없습니다. 그래서 집계가 필요한 값은 D1에 두고, 캐시가 필요한 건 Workers 캐시를 썼어요.
이미지·검색
이미지 변환은 어디서 돌리나요?
제 PC에서 파이썬(Pillow)으로 미리 webp 로 줄여서 결과물만 올립니다. 워커는 API만 처리해요. 자막이 박힌 사진은 OCR(easyocr)로 걸러냅니다.
AI로 쓴 글을 올리면 검색에서 불이익이 있나요?
숫자·출처는 공개 자료에서 가져와 다시 계산하고, 같은 내용이 반복되는 페이지는 아예 만들지 않는 쪽으로 정리했습니다. 색인이 밀리던 문제는 중복·얇은 페이지를 줄이면서 나아졌어요. 자세한 과정은 「검색 색인 정리」 글에 적었습니다.
한글 주소를 쓸 때 주의할 점이 있나요?
브라우저가 주소를 퍼센트 인코딩해서 보내기 때문에, API에 주소를 키로 넘기면 인코딩된 값과 원래 값이 섞여 통계가 둘로 갈라집니다. 한쪽으로 정규화해서 저장하세요. 이 사이트는 디코딩한 값에 끝 슬래시를 붙여 하나로 맞춥니다.
댓글·회원
정적 사이트에 댓글을 붙일 때 스팸은 어떻게 막나요?
로그인한 사람만 쓰게 했어요. 대신 가입을 이메일·카카오·구글 중 하나로 끝나게 줄이고, 하루 댓글 수와 연속 작성 간격에 제한을 뒀습니다. 신고가 3번 쌓이면 자동으로 가려져요.
로그인 유지는 쿠키를 안 쓰나요?
API가 다른 도메인에 있어서 토큰을 브라우저에 저장하는 방식입니다. 30일 만료이고 서버에 세션 표로 들고 있어서, 로그아웃·탈퇴하면 바로 지워집니다.
별점·좋아요는 뭘로 세나요?
회원 한 명당 페이지 하나에 좋아요 1번, 별점 1번만 반영합니다. 검색 결과에 나가는 별점(구조화 데이터)은 실제로 3명 이상이 준 페이지만 내보내요.
🙋 여기에 없는 걸 묻고 싶다면
로그인(이메일·카카오·구글)하면 바로 쓸 수 있어요. 에러 메시지나 코드 일부를 붙여 주면 답하기 쉬워요. 「운영자」 표시가 붙은 답이 제 답이에요.
📚 길게 답한 건 글로 정리했어요
- [EN] Claude for Small Product Businesses: Labels, Margins, Reviews
- [EN] Cut AI Token Costs: Context, Model Split, Caching, Cost Tracking
- [EN] Immich on Proxmox with a ZFS Mirror: Setup and 3-2-1 Backup
- [EN] Mutation Testing False Kills: Baselines, File Access, Kill Reasons
- 1인+AI로 사이트 만들며 배운 것: 페이지 줄이고 검색 색인 정리하기
- [EN] Korea Take-Home Salary 2026: Deductions, Rates and Examples
- [EN] Jeonse vs Wolse Explained: Protecting Your Deposit as a Foreigner
- [EN] Unemployment Benefits for Foreigners in Korea (2026)