18 말로 만드는 AI 사이트 — 노션에서 내 도메인으로
이 페이지 목차
목적만든 순서1 · 노션 대신 로그인 뒤 사이트 (10/8)2 · 유튜브 하루 10편 한도 (10/8 ~ 10/10)3 · 「기록만으로는 따라 할 수 없다」 → 따라 하기 15편 (10/10)4 · 이름과 순서와 로그인: 「말로 만드는 AI」 (10/11 새벽)5 · 검색에 나오게 하기 — 반만 열었다가 전부 (10/11)6 · 개인 도메인 crazy4eu.com으로 이사 (10/11)7 · 문의 메일과 유튜브 채널 정리 (10/11)8 · 채팅 도우미 「AI 비서 산초」 (10/11)9 · 같은 날 오후: 따라 하기 16~19편과 참고 연구 (10/11)💡 설명함정과 배운 것출처뒷이야기 · 18 / 18단계 · 2026-10-08 ~ 10-11 · 갈래 공개
이전 단계: 17 일하는 방식 — 규칙과 함정 모음
핵심 요약
| 항목 | 내용 |
|---|---|
| 이 단계에서 한 일 | 노션 한도에 막혀 만든 사내 로그인 사이트를 나흘 만에 로그인 없는 공개 사이트 「말로 만드는 AI」(crazy4eu.com)로 바꿨다. 기록뿐이던 글에 「따라 하기」 19편을 더했고, 유튜브 영상 41편을 모두 공개했으며, 사이트 글로만 답하는 채팅 도우미 「AI 비서 산초」를 붙였다. |
| 기간 | 2026-10-08 ~ 10-11 (사이트로 정한 10/8 16:36 → 따라 하기 19편을 배포한 10/11 15:37) |
| 규모 | 사이트맵 69쪽 · 영상 41편 · 썸네일 41장 · 따라 하기 19편(내가 치는 말 123개) · 사이트 소스 build.mjs 316줄 + worker.js 231줄 + chat-client.js 76줄. 사이트 폴더는 저장소가 아니라 커밋은 없다. 같은 기간 파이스 저장소에 생긴 관련 커밋은 2개다. 모두 직접 센 값(checks.md) |
| 다룬 도구 | Claude Code(Sonnet 5.5 작성 · Opus 5.5 대조) · Cloudflare(Workers · D1 · Workers AI · 도메인 등록 · 이메일 라우팅) · wrangler · 구글 서치 콘솔 · 네이버 서치어드바이저 · 유튜브 스튜디오 · Aside 브라우저 · marked · archify |
| 결과 | 노션(무료 블록 한도) → 회사 도메인 아래 로그인 뒤 사이트 → 개인 도메인의 공개 사이트. 유튜브 0편 → 41편(전부 공개). 따라 하기 0편 → 19편. 검색엔진에 알린 쪽 0 → 69쪽. 주소 비용은 연 $10.46 |
| 공개 범위 | 공개(로그인 없음) — 🔒 항목은 넣지 않음 |
한 줄 요약 — 글이 있다고 사람이 찾아와 따라 하는 것은 아니었다. 이름 · 순서 · 주소 · 검색 · 문의 길까지 하나씩 정해야 했다.
18단계 · 말로 만드는 AI 사이트
목적
17단계까지 기록은 쌓였지만 읽을 곳이 막혀 있었다. 노션은 무료 블록 한도에 걸렸고, 대신 만든 사이트는 회사 계정 로그인 뒤라 아무도 못 봤다. 게다가 기록은 「무엇이 생겼고 어떤 실패를 했나」뿐이라 읽는다고 따라 할 수는 없었다. 이 단계는 처음 오는 사람이 순서대로 따라 하고, 막히면 묻고, 검색으로 찾아올 수 있는 모양을 만든 이야기다.
만든 순서
1 · 노션 대신 로그인 뒤 사이트 (10/8)
10/8 13:38에 「노션이 말썽인 게 요금제가 끝나서 그런 거냐」고 물었다. 노션 쪽 이유는 둘이 섞여 있었다.
- 요금제 탓: 블록 한도 경고와 파일 5MB 한도. 체험판이 막 끝나서 한도가 찬 것인지는 확인 못 함. 요금제와 상관없는 것: 파일 이름이 저절로 링크로 바뀌는 건 노션의 원래 동작이라 유료로 올려도 같다(AI의 설명이다).
- 만든 쪽의 실수: 5단계 기록을 노션 데이터베이스의 행으로 쪼개 넣었는데, 원한 것은 산초 강좌처럼 단계마다 페이지 하나였다.
- 13:41 질문: 이걸 HTML로 만들어 회사 사이트들처럼 블로그로 올릴 수 있나, 영상은 남들이 못 받게 유튜브가 낫겠다. 13:42에 AI가 직접 만든 사이트 · 블로그 서비스 · 노션을 비교했다. 직접 만든 사이트는 비용 0원, 아치파이 그림을 그대로 넣을 수 있고, 공개 등급을 나눌 수 있다는 점에서 앞섰다. 영상은 유튜브 「일부 공개」(검색에 안 나오고 다운로드 단추가 없으며 쪽 안에 넣기 쉬움)를 권했다. 전용 프로그램으로 받아 가는 것까지는 못 막는다는 말도 같이 적었다.
- 16:36 결정: 주소는 회사 도메인 아래 새 주소, 전부 로그인 뒤, 노션에 있던 것도 전부 옮김, 영상은 유튜브에 올림. 16:42에 회사 계정이 아니라 개인 계정의 채널(@crazy4eu)에 올리라고 다시 짚어 줬다.
- 결과: 25분 뒤인 17:01에 배포하고 주소를 붙였다. 17:02에 그림·스타일 파일까지 로그인 없이는 401(막힘)인 것을 확인했고, 17:24에 노션에서 옮긴 페이지가 정상으로 열리고 깨진 그림이 0장인 것을 봤다. 18:28에 17단계 페이지가 모두 올라가 있었다. 사이트의 구조(마크다운 →
build.mjs→ Cloudflare Workers 정적 자산 + 로그인 문지기)는 16단계 8번에 있다.
2 · 유튜브 하루 10편 한도 (10/8 ~ 10/10)
영상 올리기는 사이트보다 오래 걸렸다.
- 10/8: 16:39에 시험으로 기록실 5단계 영상 한 편(3분 26초)을 올려 확인하고, 이어 16:45까지 산초 1~9편을 올렸다. 모두 10편이다. 그다음 「일일 업로드 한도 도달」이 떴다. 휴대폰 인증을 해도 한도는 그대로였다(인증 페이지는 「이미 인증됨」). 사람이 얼굴 동영상 인증까지 보냈다(17:32에 알려 옴).
- 풀리는 시각을 잘못 짚었다: AI가 「오늘 오후 1~2시쯤 풀린다」고 했지만 틀렸다. 스튜디오에서 올린 시각을 직접 읽으니 10/8 16:39~16:45였다. 24시간 기준이라 첫 업로드로부터 24시간이 지난 10/9 16:40쯤이 맞았다. 그때 다시 시도하니 풀려 있어서 10편을 올렸고(16:45), 11번째에서 다시 막혔다.
- 10/10: 11:25에 얼굴 인증의 「고급 기능」이 「사용 설정됨」인 것을 확인하고, 11:26~11:35에 남은 20편(기록실 6 · 산초 1 · 기초 10 · 가이드 3)을 한 번에 올렸다. 합계 10 + 10 + 20 = 40편. 같은 날 16:41에 따라 하기 01편 영상이 붙어 41편이 됐다.
- 큰 파일: 가이드 영상 3편은 90~205MB였다. 올라가는 중에 다음 편으로 넘어가면 취소되므로 끝난 것을 확인한 뒤에 저장했다.
- 올리기 도구: Aside 브라우저 안에 넣은 올리기 스크립트가 브라우저가 다시 켜질 때마다 지워졌다. PC의 작은 서버에서 불러오게 바꿨다(10/9). 2시간마다 한도를 보는 예약은 앱을 다시 시작하면 사라지므로, 업데이트 전에 그 점을 알렸다.
3 · 「기록만으로는 따라 할 수 없다」 → 따라 하기 15편 (10/10)
15:53에 다른 사람이 만든 노션 AI 사용법 가이드(도구 하나에 한 장, 복사해서 쓰는 명령 프롬프트 꼴)를 띄워 놓고 차이를 말했다. 그런 명령어 대신 처음 커넥터·MCP 연결만 모션 그래픽으로 보여 주고 나머지는 말로 시키는 바이브코딩으로 하고 싶다, 그리고 어떻게 만들었는지도 남기고 싶다, 지금 기록은 기능이 생기고 실패했다는 이야기뿐이라는 것이었다.
- 예시를 못 읽었다: AI가 예시 노션을 읽으려다 브라우저(Aside)가 두 번 꺼졌고, 노션 링크가 데스크톱 앱으로 넘어가 본문이 안 잡히기도 했다. 16:02에 「전혀 못 읽고 있다」는 지적을 받은 뒤 「브라우저에서 계속」을 눌러 목록 20개를 끝까지 읽었다.
- 첫 시범은 퇴짜: 16:05에 시범 두 편(01 커넥터 · 02 두 번째 뇌)을 시켜 16:41에 올렸다. 긴 프롬프트 하나를 복사해 붙이는 꼴이었다. 16:44에 「너무 어렵다. 한 번에 너무 많은 글을 쳐야 한다」는 말을 들었다. 원한 것은 처음엔 이렇게 쳤더니 이렇게 나왔고, 그다음 이렇게 대화해서 이런 결과를 얻었다는 단계였다.
- 새 꼴: 단계마다 🙋 내가 친 말(한두 줄, 80자 안) → 🤖 클로드 답(2~5줄) → ✅ 이렇게 나오면 성공. 5~8단계, 긴 프롬프트는 맨 아래 접힌 칸으로, 끝에는 「내가 만들 때는」(그때 실제로 한 부탁)을 붙였다. 사이트에서는 내 말이 오른쪽, 클로드 답이 왼쪽 말풍선으로 보인다. 영상은 01편(커넥터 연결)만 모션 그래픽이다. 제목은 도구 이름이 아니라 얻는 것으로 붙였다(「한도가 끝나도 계속 쓰기 — 9Router」).
- 진행: 19:05에 두 편을 새 꼴로 다시 올렸고, 19:20에 「이 꼴로 나머지도」라는 말이 나왔다. 도구 사전의 39개 가운데 직원이 따라 할 만한 것만 골라 03~15편 13편을 만들었다. 21:15에 15편을 올린 뒤 80자를 넘는 말 11곳을 나눠 다시 돌려 답을 새로 받고 21:36에 마무리했다. 내가 치는 말은 모두 87개이고 가장 긴 것이 80자다.
- 일하는 순서: Sonnet이 쓰고(이 PC의 Claude Code로 빈 폴더에서 실제로 쳐서 답을 받음), Opus가 공식 문서와 대조했다. 시험 중에는 설치 · 배포 · 외부 전송 · 예약 등록 · 로컬 AI 실행을 막았다. 못 돌린 단계의 🤖 답은 「예시 답」이라고 표시했다.
- Opus 대조가 매번 「그대로 따라 하면 실패」를 잡았다: 9Router는 켜는 명령에
--tray가 없으면 클로드가 켜자마자 꺼지는 구조였다(코드를 읽고 판단한 것이고 실제로 켜 보지는 않음). Cloudflare 로그인은 다른 PC에서는--device(폰에서 코드를 넣어 허용)여야 했다. archify 설치 명령이 중간에 질문을 해서 멈출 수 있었다. Aside 비밀번호 보관함은 권하는 설정을 「열려 있는 동안 허용」에서 「Never」로 바꿨다(앞 설정이면 AI가 저장된 비밀번호로 스스로 로그인한다). 회의록 편에서는 설치 도구의 약관 동의를 클로드가 대신 답하지 않고 사람이 누르게 했다. - 시험이 밖으로 샌 일: 07편 graphify를 처음 시험할 때 이 PC에 설정돼 있던 Gemini 키 때문에 시험용 가짜 문서 6개(약 300단어)가 Gemini로 보내졌다. 회사 자료는 없었다. 그 뒤 시험은 키를 뺀 환경에서 돌렸고, 07편에 「키가 있으면 문서가 밖으로 나간다」는 경고를 넣었다.
4 · 이름과 순서와 로그인: 「말로 만드는 AI」 (10/11 새벽)
04:22에 한꺼번에 여러 말이 나왔다. 이름도 별로고 정리가 안 된 것 같다, 초보자가 처음 들어와도 따라 할 수 있게 순서를 정해 다시 정리하라, 파워블로거나 테크웹처럼 꾸며라, 로그인 페이지가 꼭 필요하냐(아니면 어떤 이메일로든 들어오게 해도 되겠다), 「제작 기록실」이라는 말도 별로다.
- 10분 만의 결과(04:32): 이름은 「말로 만드는 AI」. 「제작 기록실」은 「뒷이야기」 칸으로 내렸다. 로그인은 없앴다. 메뉴는 초보자가 보는 순서(시작하기 → 기초 → 따라 하기 → 비서 만들기 → 설정 가이드 → 뒷이야기)였고, 04:49에 설정 가이드가 기초로 들어가 다섯 칸이 됐다(아래).
- 첫 화면: 어두운 밤하늘에 주황·청록 빛이 천천히 움직이고, 오른쪽에서 「내가 친 말 → 클로드 답」 대화가 타자 치듯 바뀐다(회의록 · 표 질문 · 두 번째 뇌 · 구조도 넷). 그 아래 숫자, 「어디서부터 볼까요?」 5단계 길, 따라 하기 타일, 영상 썸네일이 이어진다. 새 「시작하기」 쪽에는 5단계 순서 · 「하고 싶은 일부터 고르기」 · 「막히면」을 넣었다. 휴대폰 폭(375px)에서 가로로 넘치는 곳은 없었다.
- 못 한 것: 첫 화면 배경 영상은 영상 생성 서비스(힉스필드) 계정의 크레딧이 0이라 만들지 못했다. 지금 움직임은 전부 코드로 만든 것이고, 영상 파일이 있으면 배경으로 쓰는 자리만 만들어 뒀다.
- 알린 것: 로그인을 없애면 뒷이야기 17단계의 사내 이야기(회사 시스템 구조, 고친 보안 문제)도 누구나 볼 수 있게 된다. 직원 실명은 처음부터 「사무직 과장 한 분」처럼 역할로만 적혀 있었다.
- 맨 아래 칸이 오글거렸다(04:46): 「만든 사람 — crazy4eu」라는 제목과 자기소개가 오글거린다는 말이 나왔다. 제목을 「이 사이트는」으로 바꾸고, 본문은 클로드에게 하나씩 시켜 본 기록이고 막혔던 곳까지 그대로 남겼다는 설명으로 고쳤다. 자기 자랑 말투 대신 이 사이트가 무엇인지만 적는다.
- 설정 가이드도 기초로: 같은 시각에 「설정 가이드도 한마디로 자동화의 일종이니 기초에 넣자」는 말이 나왔다. 영상 3편을 기초 11~13편 「이메일 자동화 ① Gemini Spark ② Gemini Workspace ③ Claude Cowork」으로 옮기고, 옛
/guide/…주소는 새 주소로 자동으로 넘어가게 했다. 시작하기의 「하고 싶은 일」 맨 앞에는 「메일 정리·답장 초안 → 13편」을 넣었다. 13:08에는 유튜브 제목 3개와 설명 안의 옛 이름도 같은 이름으로 바꿨다. 사이트 · 썸네일 · 유튜브 제목이 그제야 맞았다. - 04:32의 첫 화면 숫자는 영상 41 · 따라 하기 15 · 강좌 20편 · 기록 17단계였고, 지금은 영상 41 · 따라 하기 19 · 강좌 23편 · 기록 17단계다.
5 · 검색에 나오게 하기 — 반만 열었다가 전부 (10/11)
04:50에 「검색에 나오게 한다는 게 뭐지?」라고 물었다. AI는 두 가지를 설명했다. 지금은 쪽마다 noindex(목록에 올리지 말라는 표시)가 붙어 링크를 아는 사람만 들어온다는 것, 검색에 나오게 하려면 표시를 떼고 구글·네이버에 등록해야 하는데 한번 올라가면 저장본이 남아 되돌리기 어렵다는 것이다. 추천은 반만 열기(가르치는 글은 올리고 사내 이야기가 든 뒷이야기는 숨김)였다.
- 04:53 반만 열기 + 「유튜브는 공개해야 되겠네」. 05:05에 가르치는 영상 24편(산초 10 · 기초 10 · 가이드 3 · 따라 하기 01)을 일부 공개에서 공개로 바꿨고, 검색엔진용 지도(sitemap)는 44쪽이었다.
- 08:32 전부 공개: 「뒷이야기 영상이랑 전부 그냥 공개로 하자. 누가 좀 보면 어때」. 08:37에 뒷이야기 영상 17편을 공개로 바꿔 24 + 17 = 41편이 전부 공개가 됐고, 뒷이야기 17단계와 파이스 제작기도 검색을 열어 지도가 44쪽에서 64쪽이 됐다. 검색에서 빠진 것은 옛 노션 사본과 그림 파일뿐이다.
- 등록: 구글 서치 콘솔은 도메인 속성으로 등록했다. 주인 확인은 Cloudflare에 확인용 글자를 넣는 허용 한 번으로 끝났고(06:47), 사이트맵은 전체 주소로 넣어야 받았다. 네이버 서치어드바이저는 확인용 메타 표시를 사이트에 넣어 배포한 뒤 소유 확인을 눌렀는데, 자동 등록을 막는 보안 문자는 AI가 풀 수 없어 사람이 입력했다. 사이트맵 제출은 08:30에 목록에 올라간 것을 확인했다. 검색 결과에 실제로 뜨기까지는 며칠~몇 주가 걸린다고 하며, 아직 결과를 확인하지 않았다(확인 못 함).
- 지도는 빌드할 때마다 저절로 갱신된다. 지금은 69쪽이다.
- 공개가 가능했던 이유와 빈틈: 17단계 글은 처음부터 실명 · 키 · 내부 주소를 넣지 않는 규칙(🔒)으로 썼다. 다만 공개를 결정한 시점에 사이트 전체를 한 번에 훑는 검사는 하지 않았다. 이 글을 쓰며 10/11 15:36에 빌드한 사이트 전체에서 실명 · 개인 메일 · 사설망 주소를 찾아봤고 0건이었다.
6 · 개인 도메인 crazy4eu.com으로 이사 (10/11)
05:15에 「이 도메인을 내가 다시 한 개 구매할까?」라고 물었다. AI는 사는 쪽을 권했다. 검색 점수는 주소에 쌓이는데 지금 주소는 회사 도메인 아래라 회사 사정에 따라 흔들릴 수 있고, 검색 등록 전에 정하는 게 낫다는 이유였다.
- 후보: 05:18에 12개를 공식 등록 조회(RDAP)로 확인해 10개가 비어 있었다(프리미엄 가격은 결제 화면에서 다시 봐야 함).
crazy4eu.com$10.46(갱신도 같음) ·.dev첫해 $8.20 ·.ai$80. 유튜브 채널과 저작권 표기와 같은 이름이라crazy4eu.com으로 정했다. - 사람이 한 것: 06:12에 개인 Cloudflare 계정이 아직 없다는 것을 알았다. 계정 만들기와 비밀번호와 결제는 AI가 할 수 없는 일이라 사람이 했다. 결제 화면의 입력칸은 어느 칸에 무엇을 넣는지만 짚어 줬다. 입력한 이름과 주소 값은 이 기록에 적지 않는다. 회사 이름 칸(Organization)은 비워 도메인 주인이 회사가 아닌 개인이 되게 했다. 06:28에 구매했다고 알렸다.
- 이사(06:33 ~ 06:37): 사이트를 개인 계정의 워커로 옮겨
crazy4eu.com에 붙이고,www는 맨 주소로 301(영구 이동)로 넘겼다. 회사 도메인 아래의 옛 주소는 같은 경로의 새 주소로 301로 넘어간다. 회사 계정에는 내용이 없는 넘김 장치만 남았다. 옛 주소는 돈이 안 드니 최소 6개월~1년은 두라고 했다. 새 주소의 첫 화면 · 따라 하기 ·www넘김 · 옛 주소 넘김이 열리는 것을 확인했다. - 배포 로그인은 따로: 개인 로그인은 회사 로그인과 섞이지 않게 별도 설정 폴더에 보관한다(
npm run deploy가 그 폴더를 쓰게 함). - 로그인 허용 2분: 배포 도구가 띄우는 Cloudflare 허용 화면은 2분 안에 눌러야 한다. 06:30에 띄운 화면이 만료돼(06:31) 닫고 다시 띄웠다.
- wrangler 403: 두 계정을 한 폴더에서 번갈아 올리자 wrangler가 캐시한 계정을 잘못 잡아 회사 쪽 배포가 403(금지)으로 거절됐다. 두 설정 파일에 계정 번호를 박아 고쳤다. 배포 직후 몇 초는 새 쪽이 404로 보일 수 있다(전파 시간).
7 · 문의 메일과 유튜브 채널 정리 (10/11)
- 문의 메일(08:39 ~ 08:49): 사이트에서 모르는 것 · 안 되는 것 · 문의는 메일로 받자는 말이 나왔다. AI는 개인 메일 주소를 사이트에 그대로 걸지 말고 사이트 전용 주소(
contact@)를 만들라고 권했다. 「헬프로 넣자」는 말에 따라 이름은help@crazy4eu.com으로 정했다. Cloudflare 이메일 라우팅(무료)으로 이 주소 앞으로 온 메일이 개인 받은편지함으로 전달된다. 받기 전용이라 답장은 개인 메일에서 쓴다. 맨 아래 줄 · 시작하기의 「막히면」 · 따라 하기 각 편의 「막히면」 뒤 ✉️ 상자에 넣었다(「비밀번호·키는 적지 마세요」 한 줄 포함). 시험 메일이 도착해 Cloudflare 기록에 「전달됨」으로 찍힌 것을 08:49에 확인했다. - 유튜브 채널(08:54 ~ 09:15): 채널 설명을 「말로 만드는 AI — 코드를 몰라도, 클로드에게 말로 시켜서 회사 일을 돕는 AI를 직접 만듭니다」로 시작해 네 갈래(기초 · 따라 하기 · 비서 만들기 · 뒷이야기) · 사이트 주소 · 문의 메일로 채웠다. 링크 「말로 만드는 AI (사이트)」와 연락처도 올렸다. 썸네일은 41장을 사이트와 같은 밤하늘 바탕에 큰 번호와 짧은 제목으로 만들었고 시리즈마다 색을 달리했다(기초 초록 · 따라 하기 주황 · 비서 만들기 보라 · 뒷이야기 호박색). 영상 설명 41편에는 맨 위에 「이 편의 글·단계별 설명」과 「처음이라면」 링크, 맨 아래에 채널과 문의를 붙였다. 영상과 사이트 쪽의 짝은 41개를 모두 맞춰 두었다.
- 작업 중 Aside가 한 번 꺼졌다. 이미 처리된 영상(산초 1~8편)은 건너뛰고 나머지를 이어서 마쳤다.
8 · 채팅 도우미 「AI 비서 산초」 (10/11)
08:51에 회사 플랫폼의 AI 비서 방처럼 이 사이트에도 궁금한 것을 묻는 채팅창을 달자는 말이 나왔다. AI는 모양은 같게, 속은 따로 만들자고 했다. 회사 AI 관문은 회사 계정 · 회사 자료 · 회사 한도에 묶여 있어서 공개 사이트에 붙이면 모르는 사람이 회사 몫을 쓰게 된다는 이유였다.
- 구조: 모든 쪽의 오른쪽 아래 💬을 누르면 창이 열린다. 질문을 받으면 워커(
POST /api/ask)가 사이트 글을 조각(빌드가 만드는kb.json, 처음 1,086조각이었고 지금은 1,186조각)에서 낱말 겹침으로 찾고, 찾은 글만 근거로 모델에 보낸다. 사이트에 없는 내용은 「모르겠어요 → help@crazy4eu.com」으로 답한다. 답 밑에는 근거 쪽 링크 칩이 붙는다. - 모델: 개인 계정의 무료 AI(Workers AI)에서 5개를 같은 질문 4개로 비교했다. Gemma 4(26B)가 가장 빨랐고(1.4~3.5초) 무료 한도를 가장 덜 썼다(공식 단가로 어림한 값이고 실제 사용량은 재지 않음). 다른 후보 하나는 사이트에 없는 「회사 주소」를 지어내서 뺐다. 이 모델은 기본이 「생각하는 모델」이라 생각에 글자 수를 다 써서 답이 비어 오므로 생각 기능을 꺼야 했다.
- 한도: 한 IP가 분당 6번 · 하루 30번, 전체 하루 600번. 무료 AI 몫을 다 쓰면 그날은 「오늘 쓸 수 있는 AI 사용량을 다 썼어요」가 나간다. 요금은 나가지 않는다(개인 계정이 Workers 무료 플랜인 것을 확인).
- 질문 기록: 질문 글 · 어느 쪽에서 물었는지 · 답을 찾았는지 · 모델 · 걸린 시간만 남긴다. IP는 날마다 바뀌는 무작위 소금을 섞은 해시로만 남기고 지난 날 소금은 지운다. 질문 속 이메일 · 긴 숫자 · 전화번호 꼴은
[이메일]·[번호]로 가려 저장한다. 질문 기록은 90일 뒤 지운다(이 90일 지움은 오후에 더했다 — 9번). - 보안 점검(Opus)에서 막은 것: (가) 질문 8개를 동시에 보내면 한도를 무시하고 8개 다 답하던 구멍 — 한도를 세는 일과 자리를 잡는 일을 한 번에 하게 해, 고친 뒤 같은 시험에서 6개만 답하고 2개는 막혔다. (나) 전화번호와 주민번호 꼴이 기록에 그대로 남던 것. (다) 고정 문자열을 소금으로 쓰면 코드를 본 사람이 IP를 되돌릴 수 있던 것. (라) 클라이언트가 보낸 대화 이력을 AI 답으로 믿던 것(가짜 이력으로 속이는 길. 1회 시험에서는 재현되지 않았지만 막았다). 화면에 글을 그리는 곳은 처음부터
textContent만 써서 안전했다. - 이름과 인사말: 09:48에 이름을 산초로 하고, 처음 켜면 「안녕하세요, AI 비서 산초입니다」로 시작해 사이트를 설명하고 할 수 있는 일과 못 하는 일을 나눠 말하게 하라고 했다. 인사말과 이름 질문의 답은 화면에 미리 넣은 글이라 AI 한도를 쓰지 않는다. 09:59에 배포했다.
- 시험 결과: 처음 5문항(처음 보는 사람의 순서 질문 · 커넥터가 안 보임 · 9Router가 바로 꺼짐 · 사이트에 없는 회사 주소 · 이전 지시를 무시하라는 질문)이 모두 의도대로 답하거나 거절했다. 16문항 시험에서는 12개를 맞혔다. 짧은 질문이나 다른 말로 바꾼 질문은 근거를 잘 못 찾는다(검색이 낱말 겹침이라서).
- 시험 기록을 지우다 실제 질문 하나를 지웠다: 시험 흔적을 지우려고 기록 표를 통째로 비웠는데 방문자 질문 1건이 같이 지워졌다(그 방문자는 답을 받았다). 이후 시험 표지와 내 해시로만 골라 지운다.
9 · 같은 날 오후: 따라 하기 16~19편과 참고 연구 (10/11)
13:12에 파이스와 회사 플랫폼을 만들면서 더 넣을 만한 것이 없느냐, 특히 파이스는 스스로 고치면서 몇 개를 참고했을 텐데 라는 말이 나왔다. 13:14에 AI가 비어 있는 곳 두 가지를 짚었다. 파이스가 참고한 연구를 모은 목록, 그리고 회사 시스템을 만들며 쓴 기법을 따라 하기로 옮긴 글이다. 13:49에 진행하라고 했다.
- 참고 연구 쪽(14:35 배포): 뒷이야기의 「파이스가 참고한 연구」(
/log/refs)는 항목 13개(오래된 표준 셋 포함)다. 원문을 직접 열어 제목 · 저자 · 날짜를 확인한 것만 싣고, 파이스 조사 기록에 이름이 있지만 가져간 자리를 코드에서 못 찾았거나 원문을 확정하지 못한 4개는 「조사 기록에만 있는 것」으로 따로 표시했다. 가져오지 않기로 한 것과 이유도 같이 적었다. - 원문을 열어 보니 우리 쪽이 틀려 있었다: 파이스 저장소의 로드맵과 시험 주석이 DGM(스스로 고치는 에이전트 연구) · SIA를 원문보다 세게 적고 있었다. 「평가 틀은 고치지 못하게 하고 통과한 변형만 채택한다」는 논문의 결론이 아니었다. 파이스는 이 문서를 자기수정의 근거로 읽으므로 틀린 전제가 된다. 14:57의 커밋 1650c45로 「참고한 우리 해석」으로 고쳤다. 그러다 주석을 코드에 맞추던 중 실제로는 잠긴 것이 셋뿐이고 채점 틀
selftest.js는 자기수정이 고칠 수 있다는 것을 알게 됐다. 사람이 잠그라고 해서 15:05의 커밋 cf96f16으로 불변 목록에 넣었다. 그때까지 파이스가selftest.js를 스스로 고친 커밋은 0건이었다. - 따라 하기 16 · 17 · 18편: 16편 「내 사이트에 AI 상담 창 달기」(이 사이트의 산초를 만든 방법 그대로), 17편 「클로드가 고치다 망가뜨려도 되돌리기」(Git 저장 + 시험 + 마지막 정상본), 18편 「AI가 좋아졌는지 점수로 재기」(시험지 · 채점 · 새 문제로도 다시 재기). 시작하기의 「하고 싶은 일부터 고르기」에 세 편을 넣었다.
- 가르치는 것과 사이트가 달랐다: 16편이 「질문 기록은 90일 뒤 지운다」고 가르치는데 산초는 그렇게 하지 않고 있었다. 글을 고치지 않고 사이트를 맞췄다(90일 지움 · 8자리 대표번호 가림 · 인사말에 보관 기간 알림). 원칙은 가르치는 것과 실물이 다르면 실물을 맞춘다.
- Opus 대조가 또 「그대로 하면 실패」를 잡았다: Git의 기본 갈래 이름이
main이 아니라master로 나오는 것, 작성자가 비어 있으면 클로드가 PC 전체 설정에 실명을 채우려 한 것(「이 폴더에서만」으로 바꿈), 데이터베이스를 만들 때 들어가는 칸 이름표가 코드와 다른 것, 🙋 속 문제 번호는 읽는 사람마다 다른 것. 16편은 너무 길어서 41KB에서 32KB로 줄였다. - 19편 보안 점검(14:58 요청, 15:37 배포): 제안 목록에서 남겨 둔 마지막 편을 만들라고 했다. 「말로 만든 내 사이트, 새는 곳 없나 점검하기 — 관리자 말고 일반 사용자 눈으로」 9단계다. 클로드 답은 일부러 허술하게 만든 가짜 게시판(가나다전자)에서 실제로 돌려 받은 것이다. 🔒 기준은 아직 안 고친 문제의 흔적 0 · 재현 꼴은 일반적인 말로 · 숫자는 이미 공개된 13단계 것만이었다. 클로드에게는 「점검·확인」이라고 말한다(공격하라는 말은 보호 장치가 멈춘다 — 16단계 4번). Opus가 「textContent로 바꾸면 끝」 같은 잘못된 안심을 주는 문장을 걷어냈다.
💡 설명
- 도메인: 인터넷 주소(예: crazy4eu.com). 사야 쓸 수 있고 해마다 갱신한다.
- 워커(Workers): 클라우드 쪽에서 요청을 받아 처리하는 작은 프로그램. 이 사이트는 모든 주소를 워커가 먼저 받는다.
- D1: Cloudflare가 빌려주는 작은 데이터베이스. 질문 기록을 둔다.
- Workers AI: Cloudflare 안에서 AI 모델을 부르는 서비스. 무료 한도가 하루 몫이다.
- noindex: 검색엔진에게 「이 쪽을 목록에 올리지 말라」고 알리는 표시.
- 사이트맵(sitemap.xml): 검색엔진에게 내 사이트의 쪽 목록을 알려 주는 파일.
- 서치 콘솔 · 서치어드바이저: 구글 · 네이버에 내 사이트를 등록하고 사이트맵을 내는 곳.
- 301 이동: 「이 주소는 영구히 저쪽으로 옮겼다」는 안내. 옛 링크가 새 주소로 이어진다.
- 이메일 라우팅: 사이트 주소 이름의 메일(help@…)을 개인 받은편지함으로 전달해 주는 기능. 받기만 된다.
- 레이트 리밋: 한 사람이 정해진 시간에 보낼 수 있는 횟수를 막는 장치.
- 소금 해시: IP 같은 값에 날마다 바뀌는 무작위 값을 섞어 되돌릴 수 없게 만든 글자. 같은 사람을 날을 넘어 잇지 못하게 한다.
- RDAP: 도메인이 이미 등록됐는지 공식으로 조회하는 방법.
함정과 배운 것
- (1) 노션의 문제를 요금제로 다 돌리지 않는다: 한도는 요금제 탓이지만 파일 이름이 링크로 바뀌는 것은 노션의 원래 동작이다. 원인을 가르면 고칠 것과 옮길 것이 갈린다.
- (2) AI가 짚은 풀리는 시각도 확인한다: 올린 시각을 스튜디오에서 직접 읽기 전까지 두 시간 이상 이르게 어림하고 있었다. 한도는 「다음 날 0시」가 아니라 24시간 창이다.
- (2) 전화 인증은 업로드 개수 한도를 풀지 못했다: 얼굴 인증의 「고급 기능」이 켜져야 하루 10편이 풀렸다(승인 시각은 10/9 16:49 대기 중 ~ 10/10 11:25 사이, 정확한 시각은 확인 못 함).
- (2) 올리는 도구와 예약은 세션 밖에 두어야 산다: 브라우저 안에 넣은 도구는 새로 고치면 지워지고, 세션 안 예약은 앱을 다시 시작하면 사라진다.
- (3) 따라 하기의 첫 시범은 늘 어렵게 나온다: 한 번에 많이 치는 꼴이 퇴짜였다. 내가 치는 말은 80자 안, 클로드 답은 실제로 돌려 받은 것만, 못 돌린 것은 「예시 답」이라고 밝힌다.
- (3) 시험 환경에 외부로 나가는 키가 있는지 먼저 본다: graphify가 Gemini 키를 보고 시험 문서를 밖으로 보냈다. 키를 뺀 환경에서 시험한다.
- (3) 노션 링크는 앱으로 넘어가면 본문이 안 잡힌다: 「브라우저에서 계속」으로 연다.
- (4) 자기소개 말투 대신 이 사이트가 무엇인지 적는다: 「만든 사람」 칸은 오글거린다는 말에 「이 사이트는」으로 바뀌었다.
- (5) 공개로 열기 전에 사이트 전체를 훑는다: 공개는 17단계를 🔒 규칙으로 써 둔 덕에 가능했지만, 열기 직전에 전수 검사는 하지 않았다. 문서 단위 대조와 전체 훑기는 다른 검사다.
- (5) 검색 등록은 되돌리기 어렵다: 올라가면 저장본이 남는다. 그래서 반만 열고, 결정이 서면 전부 열었다. 사이트맵은 전체 주소로 낸다. 보안 문자는 사람이 입력한다.
- (6) 두 계정을 번갈아 쓰면 도구가 계정을 헷갈린다: wrangler가 캐시한 계정을 잘못 잡아 403이 났다. 계정 번호를 설정에 박고, 개인 로그인은 따로 보관한다.
- (6) 배포 도구의 로그인 허용 화면은 2분 안에 누른다: 만료되면 다시 띄운다. 도메인 주인 칸에 회사를 넣지 않는다.
- (8) 공개 챗봇은 한도와 기록을 처음부터 같이 설계한다: 동시 요청이 한도를 넘는 구멍, 기록에 남는 개인정보, IP를 되돌릴 수 있는 고정 소금이 보안 점검에서 나왔다. 횟수 제한 장치 하나만으로는 연결마다 따로 세서 헐거웠고, 기록 표로 한 번 더 세야 했다.
- (8) 시험 기록은 표지로 골라 지운다: 표를 통째로 비우면 방문자 질문도 같이 지워진다.
- (9) 가르치는 것과 실물이 다르면 실물을 맞춘다: 글을 고치면 둘이 영영 어긋난다.
- (9) 남에게 설명하려고 원문을 열어 보면 내 쪽이 틀려 있다: 참고 연구 쪽을 쓰다 파이스 문서의 과한 인용과 풀려 있던 채점 틀을 찾았다. 17단계의 「문서 숫자는 코드가 진실」과 같은 병이다.
- (9) 「공격해 봐」가 아니라 「점검·확인」: 보안 점검 편의 클로드 요청은 보호 장치가 멈추지 않는 말로 쓴다.
출처
- 커밋(파이스 저장소
pais_project): 1650c45(DGM·SIA 인용 정정, 10/11 14:57) · cf96f16(selftest.js 불변 목록, 10/11 15:05) - 파일(
AI교육/제작기록실/):site/build.mjs·worker.js·chat-client.js·wrangler.jsonc·deploy.mjs·chat-schema.sql·youtube.json·영상/yt-links.json·영상/thumbs/·따라하기/HOWTO-SPEC.md·PLAN.md·chat-assistant-checks.md·기록/refs.md·refs-checks.md - 기억 노트: log-site · howto-guides · build-log-room · copyright-name-crazy4eu · basic-course-production · agent-course-production
- 숫자를 센 명령과 결과: 같은 폴더
checks.md