한 줄 요약
1단계는 Claude Cowork에서 자료 조사·아카이빙·실습가이드 작성까지 끝내고, 2단계는 Claude Code CLI(VS Code)에서 그 결과물을 입력으로 삼아 대시보드를 만들었습니다.
도구를 나눠 쓴 게 핵심이었습니다. Cowork는 넓게 찾는 일, Code는 깊게 만드는 일에 강했습니다.
1. 왜 정비사업이었나
스터디장이 주신 핸드아웃은 부동산 실거래·주식 주제였습니다. 저는 업무가 정비사업·도시계획 쪽이라 주제만 치환하기로 했습니다. 구성과 진행 방식은 원본 그대로 두고 데이터 소스와 프롬프트만 바꿨습니다.
원본 그대로 따라가면 배우긴 하지만 끝나고 남는 게 없습니다. 내 일에 쓰는 데이터로 바꾸면 실습 결과물이 그대로 업무 자산이 됩니다.
2. 1단계 — Claude Cowork로 “무엇이 있는지” 먼저 털기
Cowork에 이렇게 던졌습니다.
[자료01] 기준, 운영지침, 가이드라인
https://urban.seoul.go.kr/view/html/PMNU5020000001
자료 01에서 정비사업 및 도시계획 관련해서 참고할 만한 자료 크롤링해서
프로젝트 폴더에 아카이빙 해줘
관련 API가 있다면 발급받는 방법 찾아내기
스터디장이 제공해준 3종 첨부파일(셋업, 핸드아웃, 시각화 가이드) 내용 파악해주기
위 내용 참고해서 "정비사업, 도시계획"에 맞춰 "02-handout.md" 업데이트,
파일명은 "03-practice1stweek.md"로 만들기나온 것
결과물
내용
서울도시공간포털 아카이브
업무자료 450건 전체 인덱스 + 핵심 기준·지침 큐레이션
API 가이드
서울열린데이터광장 8개 서비스 실호출 검증 (총 12만 건)
실습 가이드 문서
핸드아웃 구조 유지, 데이터 소스만 정비사업으로 치환
여기서 Cowork가 잘한 게 두 가지 있었습니다.
하나. 제가 준 링크는 자료실 진입 메뉴였고, 실제 기준·지침이 쌓이는 게시판은 따로 있었습니다. 이걸 스스로 찾아 들어갔습니다.
둘. 그 페이지가 화면을 그때그때 그려내는 방식이라 눈에 보이는 대로 긁으면 목록을 다 못 가져옵니다. 대신 화면 뒤에서 데이터를 받아오는 주소를 찾아냈습니다. 덕분에 450건을 한 번에 정확히 받았습니다.
⚠️ 그리고 이때 예전에 쓰던 정비사업 데이터가 2025년 12월 4일자로 서비스 종료된 것도 잡아냈습니다. 예전 블로그 글 보고 따라 했으면 여기서 하루 날렸을 겁니다.
3. 2단계 — Claude Code CLI로 “실제로 도는 것” 만들기
VS Code에서 Claude Code를 열고, 1단계 산출물 두 개를 그대로 물려줬습니다.
@archive/seoul-urban-portal/README.md , @03-practice1stweek.md 참고해서
1주차 실습 대시보드 구축해줘.
참고로 API는 발급 받기 전이라 그부분은 다음번에 진행하기로 할께인증키가 없으니 절반은 못 하겠거니 했는데, 예상과 다르게 흘러갔습니다.
발견 1 — 정보몽땅은 API가 없지만 인증키도 필요 없다
정비사업 정보몽땅은 개발자용 데이터 창구(API)가 없습니다. 그래서 저도 실습 가이드에 “엑셀을 손으로 내려받고, 자동 수집은 다음 과제”라고 적어뒀습니다.
그런데 Claude Code가 사이트의 [엑셀다운로드] 버튼이 실제로 무슨 일을 하는지를 뜯어보더니, 그 동작을 그대로 재현했습니다. 사람이 버튼을 누르는 대신 프로그램이 같은 요청을 보낸 겁니다.
인증키 없이 사업장 1,137건이 들어왔습니다. “API가 없다 = 자동화가 안 된다”가 아니었습니다. 대시보드가 빈 껍데기가 아니게 된 결정적 순간이었습니다.
발견 2 — 1단계에서 제가 만든 문서가 틀렸다
정비사업 데이터에는 날짜가 없습니다. 그래서 “결정고시” 데이터를 옆에 붙여야 언제 일어난 일인지 알 수 있는데, 1단계에서 제가 정리한 문서에는 두 데이터를 붙이는 방법이 잘못 적혀 있었습니다.
같은 값을 담고 있는 칸인데 양쪽 이름이 서로 달랐습니다. 문서에 적힌 방식은 “이름이 같을 때만” 통하는 방식이라, 그대로 돌렸으면 하나도 안 붙었을 겁니다.
Claude Code가 이걸 잡아낸 방법이 좋았습니다. 인증키 없이도 맛보기 5건은 받아볼 수 있다는 걸 알고, 실제로 받아서 칸 이름을 눈으로 확인한 겁니다.
그대로 돌렸으면 “연결 성공률 0%”를 보고 “오래된 자료라 원래 비어 있나 보다” 하고 넘어갔을 겁니다. 문서를 믿지 말고 한 건이라도 실제로 받아보라는 걸 배웠습니다.
발견 3 — 한 칸만 보면 자치구를 통째로 놓친다
자치구별로 묶어 보려면 각 사업장이 어느 구인지 알아야 합니다. 가이드에는 “위치명에서 ○○구를 뽑아라”라고 썼는데, 실제 데이터를 보니 이랬습니다.
정비사업 데이터의 지역 칸에는 전부 ‘서울특별시’만 들어 있음 (시 단위라 자치구가 없음)
반면 재정비촉진·지구단위계획 데이터의 같은 칸에는 ‘성북구’, ‘강서구’가 그대로 들어 있음
그래서 지역 칸 → 위치명 → 구역명 순으로 차례차례 시도하고, 어느 칸에서 뽑았는지 출처까지 같이 기록하게 했습니다. 맛보기 5건 기준으로 추출 성공률이 1/5과 5/5로 갈렸습니다. 한 칸만 봤으면 조용히 틀렸을 부분입니다.
4. 결과
지금 보이는 것 (사업장 1,137건)
전체의 45.8%(521곳)가 ‘추진주체 구성’ 단계에 정체. 단일 단계 최대 병목은 조합설립인가 340건(29.9%)
일시중단 133건(11.7%). 비율 최고는 성동구 32.4% (34곳 중 11곳)
사업장 수 최다는 영등포구 120건(10.6%)
여기서 대시보드가 실제로 쓸모 있어진 지점이 있습니다. 사업장이 제일 많은 구는 영등포구인데, 실제로 멈춰 있는 비율이 높은 건 성동구였습니다. “어디에 행정 지원을 먼저 배치할 것인가”라는 질문의 답이 바뀝니다.
아직 못 한 것
서울열린데이터광장의 도시계획 데이터 5종(총 71,489건)은 인증키가 없어 수집 전입니다. 대신 코드는 다 만들어 두고, 맛보기 모드로 전 과정을 실제로 한 번 돌려서 문제없이 작동하는지 확인했습니다. 키만 꽂으면 순서대로 실행하면 됩니다.
그리고 대시보드에는 “아직 수집 안 됨”을 그대로 표시해 뒀습니다. 빈 값을 0으로 채우거나 가짜 데이터를 넣지 않았습니다. 이건 프롬프트에 매번 넣은 규칙이기도 합니다.
여러 사람이 표시된 한국 웹사이트의 스크린샷
한국의 인구 수를 보여주는 막대 그래프
한국의 인구 수를 보여주는 차트
한국의 인구수를 보여주는 그래프
YouTube에서 동영상을 시청하는 사람의 수를 보여주는 차트
한국 검색 엔진의 스크린샷
5. 시각화 가이드가 실제로 작동한 순간
스터디에서 받은 시각화 가이드에 “평균 뒤의 분포를 함께 보여라”는 원칙이 있습니다. 말로만 들으면 당연한데, 실제로 겪으니 달랐습니다.
사업장들의 자료충실도 평균이 94.4%입니다. 이것만 보면 “다들 잘 공개하고 있네”입니다. 그런데 분포를 그려보니 86%가 90~100점 구간에 몰려 있고, 50점 미만이 24곳 있었습니다. 평균이 하위권을 완전히 덮고 있었던 겁니다.
여기서 한 번 더 걸렸습니다. 처음 그린 세로 막대그래프는 한 막대(720곳)가 너무 커서 정작 결론인 꼬리 부분이 눈에 보이지 않았습니다. 원칙은 지켰는데 차트가 원칙을 배신한 거죠. 가로 막대로 바꾸고, 모든 구간에 숫자를 직접 표기하고, 50점 미만 구간만 색을 다르게 줘서 해결했습니다.
“원칙대로 그렸다”와 “원칙이 읽힌다”는 다릅니다. 만들고 나서 눈으로 봐야 압니다.
그 외에 지킨 것들:
제목이 결론을 말하게 — “자치구별 사업장 수” ❌ → “영등포구가 최다지만, 어느 구든 추진주체 구성이 가장 두껍다” ✅
막대는 0에서 시작 / 원그래프 대신 정렬된 막대 / 축 두 개 쓰지 않기
빠진 데이터는 억지로 잇지 않고 제외 건수를 명시 (단계 미기재 29건은 전부 지역주택이라 단계별 차트에서 제외)
진행단계는 순서가 있으니 알록달록한 색 대신 한 색의 진하기 차이로
색만으로 구분하지 않도록 모든 차트에 [표로 보기] 병기
6. 도구를 나눠 쓴 게 맞았나
구분
Claude Cowork (1단계)
Claude Code CLI (2단계)
잘한 일
흩어진 사이트 뒤지기, 숨은 데이터 창구 찾기, 문서 정리
코드 작성, 실행, 검증, 오류 수정
결과물
문서·표 형태의 자료 아카이브
실제로 도는 수집 프로그램 + 대시보드
느낌
“이런 게 있는지 찾아줘”
“이걸 실제로 돌게 만들어줘”
1단계 산출물을 파일 이름만 대서 그대로 물려줄 수 있어서 인수인계 비용이 거의 없었습니다. 조사와 구현 사이에 문서가 한 겹 있으면 도구가 바뀌어도 이어집니다.
7. 다음에 할 것
인증키 발급 → 도시 계획 데이터 71,489건 수집 → 결정고시일을 붙여서 시간 흐름 만들기
지금 ‘정체’는 운영이 멈춘 상태로 대신 보고 있는데, 날짜가 붙어야 단계별로 얼마나 오래 머물렀는지가 계산됩니다. 이게 진짜 보고 싶은 숫자입니다.
지도로 보려면 구역 경계 데이터가 필요한데 서울열린데이터광장에는 없어서 다른 곳을 찾아야 합니다
8. 그대로 쓰셔도 되는 프롬프트
주제만 바꾸면 다른 공공데이터에도 그대로 먹힙니다. 네 줄이 핵심입니다.
- API 키는 .env 파일에서 읽고 값을 화면에 출력하지 않는다.
- API가 실패하면 가짜 데이터를 만들지 말고 오류를 그대로 보여준다.
- 공공 API는 호출 사이에 0.5초 이상 쉰다.
- 기존 파일이나 표를 덮어쓰기 전에 먼저 확인한다.
특히 “실패하면 가짜 데이터를 만들지 마라”는 꼭 넣으세요. 이게 없으면 그럴듯한 숫자가 채워진 대시보드를 받고, 그게 가짜인 걸 나중에 압니다.
검증용으로 한 줄 더 추천합니다.
- 저장한 뒤 다시 읽어서 건수, 기간, 빠진 값, 중복을 검증한다.
“저장했습니다”와 “저장된 걸 다시 읽어서 1,137건인 걸 확인했습니다”는 다릅니다.
마치며
인증키가 없어서 이번 주는 못 하겠다고 생각했는데, “키 없이 되는 건 뭐가 있지?”를 한 번 더 물어본 게 전부였습니다.
맛보기 호출로 데이터 구조를 확인할 수 있었고, 정보몽땅은 애초에 키가 필요 없었고, 그 둘만으로 대시보드 한 장이 나왔습니다.
막힌 것 같을 때 “전부 막혔나, 일부만 막혔나”를 나눠 보는 게 AI랑 일할 때 제일 값싼 습관인 것 같습니다.
읽어주셔서 감사합니다. 🙏