텔레그램 봇 개발 일지 — 부록: 이 봇이 운영하는 프로젝트들
갤러리
본편(1~7편)은 봇 자체를 다뤘다. 부록은 그 봇이 실제로 무엇을 부리고 있는지의 갤러리다. 모두 D:/playground/ 아래에 폴더 단위로 살고, 텔레그램 supergroup의 같은 이름 토픽에서 cwd 자동 매핑으로 호출된다.
daily-feed
한 줄 요약: Claude가 매일 두 번 한국어 뉴스를 모아 정적 HTML 카드로 발행하는 개인용 피드 사이트.
Next.js 16 + React 19로 만든 정적 사이트로, Vercel(daily-feed-virid.vercel.app)에 자동 배포된다. 바쁜 아침에도 "오늘 뭐 일어났는지" 한눈에 파악하고 싶어서 만들었고, Linear 스타일의 디자인 토큰(tokens.css)으로 통일된 카드 레이아웃에 헤드라인을 얹는다.
스케줄은 Windows Task Scheduler로 09:00·18:00 KST에 종합 뉴스, 10:00 KST에 AI 뉴스 루틴이 돌아간다. 각 트리거는 claude -p 헤드리스를 띄워 뉴스 수집부터 HTML 생성, npm run lint:design, 커밋·푸시, 텔레그램 알림까지 한 번에 처리한다. 봇 시리즈에서 만든 forum supergroup의 daily-feed 토픽으로 미리보기가 떨어지고, 토픽 라우팅 덕분에 그 자리에서 바로 "오늘 카드 톤 좀 손봐줘" 같은 후속 작업이 가능하다.
idea-cycles
한 줄 요약: 매일 새벽 LLM 6단계 파이프라인이 자체완결형 웹 데모를 한 편씩 자동 생성·배포하는 Next.js 사이트.
Tech Scout → Ideator → Picker → Implementer → QA Tester → Reviewer 6단계로, 무료 기술 후보를 모아 아이디어를 발산하고 점수로 1개를 골라 단일 페이지 데모를 짠 뒤, Playwright MCP로 실제 렌더링·콘솔·모바일 폭까지 검증하고서야 커밋·푸시한다. Windows Task Scheduler가 매일 05:00 KST에 scripts/run-cycle.ps1을 호출해 claude headless로 돌리고, 결과는 Vercel로 자동 배포된다.
손이 가지 않는 "매일 뭔가 만든다"의 자동화 실험이고, 완료·실패 알림은 텔레그램 봇의 idea-cycles 토픽으로 들어와 한 곳에서 관찰한다. 30분 룰(레벨·콘텐츠·진행감으로 30분 머무를 수 있을 것)과 토큰 전용 스타일링 규칙으로 사이클별 품질 하한선을 잡아둔다.
mini-arcade
한 줄 요약: 한국 전통 미감으로 칠한 광고 기반 미니게임 사이트, 첫 게임은 알까기.
Astro 5 + React 19 islands. 카탈로그·룰 페이지는 정적 HTML(0KB JS)로 가볍게 띄우고, 게임 본체만 client:visible로 React island를 hydrate한다. 알까기는 Matter.js 물리 + Web Audio로 손맛을 살렸다. 한지 종이 톤 배경, 단청 적색 액센트, Noto Serif KR — 색·폰트·간격은 모두 tokens.css의 CSS variable에서 끌어다 쓴다(하드코딩 금지).
광고는 Google AdSense이고, PUBLIC_ADSENSE_CLIENT가 비면 placeholder로 떨어진다. 텔레그램 봇 입장에서는 게임 추가·디자인 토큰 조정용 토픽 하나로 관리되는, 가장 "앱다운" 프로젝트.
my-blog
한 줄 요약: 이 글이 올라오는 그 블로그 — Astro 6 + Supabase + MCP로 콘텐츠 관리까지 자동화한 개인 사이트.
Astro 6 정적 빌드 + React 19 islands + Tailwind 4 + shadcn/ui로 외형을 짜고, 콘텐츠는 파일이 아니라 Supabase에 저장한다. 검색은 Pagefind, OG 이미지는 Satori + Sharp로 생성, RSS와 i18n(한·영)은 표준대로. 다크모드, GFM Alerts, Mermaid 클라이언트 렌더링까지 갖췄다.
핵심은 mcp-server/ 안의 blog MCP다. create-post/edit-post-metadata/publish-post 같은 도구를 통해 Claude가 직접 글을 만지고 발행한다 — 부록을 포함한 이 시리즈 8편 모두 같은 경로로 들어왔고, 매 발행 직후 main 브랜치에 empty commit + push로 Vercel 재배포까지 자동이다.
playground-ops
한 줄 요약: D:/playground/ 아래 모든 스케줄 루틴을 YAML 한 파일로 관리하는 ops 레이어.
schedules.yaml이 source of truth이고, register.ps1이 Windows Task Scheduler를 그 yaml에 맞춰 동기화한다. audit.ps1은 매일 돌면서 drift(누락·비활성·실패)를 잡아 텔레그램의 전용 토픽으로 알람을 쏜다. dashboard/index.html이 자동 재생성되니, 어떤 루틴이 마지막에 언제 돌았고 어디서 깨졌는지 브라우저로 본다.
여러 프로젝트의 스케줄을 흩뿌려 두면 사라진 task, 두 번 등록된 task, 중복된 트리거 같은 게 빠르게 쌓인다 — playground-ops는 그걸 막는 단일 진실 공급원이고, daily-feed·idea-cycles·playground-ops 자신의 audit까지 모두 여기서 관리된다.
telegram-claude-bot (시리즈 주인공)
한 줄 요약: 텔레그램에서 내 Windows PC의 Claude Code를 원격 조작하는 1인용 브릿지 봇.
python-telegram-bot v22 위에 claude-agent-sdk를 얹고 텔레그램 user ID 화이트리스트로 잠근 단일 사용자 도구다. 핵심 능력은 네 가지 — 포럼 토픽 = 프로젝트 1개(토픽 이름이 D:/playground/<name>과 일치하면 cwd 자동 바인딩, 한 그룹에서 여러 프로젝트를 병렬 운용), hub-and-spoke로 토픽마다 독립된 SDK 세션·권한 흐름, 스트리밍 라이브 메시지(Claude가 토큰을 뽑는 동안 한 메시지를 MarkdownV2로 계속 edit), 그리고 블로그·Playwright·Filesystem MCP 통합.
install_autostart.ps1로 시작프로그램 폴더에 autostart.vbs를 등록해두면 PC 부팅 시 콘솔 창 없이 자동으로 떠 있고, 휴대폰만 들고 어디서든 명령을 던질 수 있다. 전 7편의 회고는 시리즈 1편부터 읽으면 된다.
닫는 글
봇 하나, 토픽 6개, 자동화된 ops 레이어 하나. 이 작은 그래프가 평일 오전 한 시간을 통째로 회수해줬다.