API 없는 네이버 블로그, 주제 한 줄로 예약 발행까지 맡겼습니다
AI로 업무를 자동화한 실제 과정과 결과를 매주 한 편씩 풀어요. 사례를 내 업무에 바로 써먹을 수 있는 무료 스킬 파일과 사용 가이드 PDF도 함께 드려요.
API 없는 웹 화면 자동 입력기
오늘 글에 나온 자동화를 바로 써 볼 수 있는 Claude 스킬 파일이에요. 설치 방법은 가이드 PDF에 있어요.

한눈에 보는 워크플로우: 주제 한 줄부터 10분 뒤 예약 발행까지 5단계
🎯 API가 없는 사이트(블로그, 사내 그룹웨어, 공공 포털)에 매번 손으로 입력하는 분, 블로그를 꾸준히 쓰고 싶은데 올리는 일이 귀찮은 분께 추천해요.
글쓰기 API는 2020년에 끊겼습니다 😩
네이버 블로그에는 글을 자동으로 올리는 공식 통로가 없어요. 2020년 5월, 네이버는 광고성 글이 기계적으로 대량 발행된다는 이유로 글쓰기 API를 종료했습니다. 뉴스핌 보도를 보면 기능이 생긴 지 약 10년 만의 결정이었어요.
10월 7일, 스터디 1회차 후기를 블로그에 올릴 일이 생겼어요. 본문 3,869자, 사진 24장. 이걸 손으로 에디터에 옮기면 문단 하나 붙이고 사진 하나 올리는 일을 87번 반복해야 합니다.
그래서 사람이 하는 동작을 그대로 흉내 내기로 했어요. 브라우저를 열고 로그인된 상태로 글쓰기 화면에 들어가서 제목을 치고 사진을 올리는 것까지요. 도구는 Playwright(브라우저를 코드로 움직이는 오픈소스)였고, 코드는 Claude Code가 썼습니다.
한눈에 보는 변화: As Is → To Be 🔁
| 😩 As Is · 이전 | ✨ To Be · 이후 | |
|---|---|---|
| 원고 | 노션·메모에서 복사해 붙이기 | Claude가 post.md 한 장으로 작성 |
| 입력 | 사진 24장을 하나씩 올리고 자리 맞추기 | 스크립트가 87블록을 순서대로 입력 |
| 발행 | 바로 발행, 실수하면 공개된 뒤 수정 | 10분 뒤 예약, 그 사이 검수·취소 |
| 재사용 | 내 계정에만 맞춘 코드 1파일 | 누구나 설치하는 스킬(스크립트 5개, 글 형식 10종) |
이렇게 만들었어요 🧩
흐름은 다섯 단계예요. 주제를 말하면 Claude가 원고 파일을 쓰고, 저장해 둔 로그인 상태로 브라우저를 열고, 글쓰기 화면에 제목·문단·사진을 순서대로 넣고, 임시저장 뒤 태그와 카테고리를 고르고, 10분 뒤로 예약을 걸어요. 사람이 하는 일은 두 가지입니다. 처음 한 번 로그인하는 것, 그리고 예약 시각 전에 글을 한 번 보는 것.
1단계 · 로그인은 사람이, 그 뒤는 저장된 상태로 🔑

1단계: 비밀번호 대신 로그인 상태가 담긴 프로필 폴더를 재사용해요
비밀번호를 코드에 넣지 않았습니다. 대신 Playwright의 "지속 프로필" 기능을 썼어요. 브라우저 창을 띄우면 제가 직접 네이버에 로그인하고 "로그인 상태 유지"에 체크합니다. Playwright 문서에 따르면 이때 지정한 폴더(userDataDir)에 쿠키와 로컬 스토리지 같은 세션 정보가 저장되고, 다음 실행 때 그대로 이어 쓸 수 있어요.
첫 로그인 때 보안 확인(캡차)이 떴어요. 이건 제가 풀었습니다. 캡차를 대신 풀거나 우회하는 코드는 넣지 않았어요. 배포판에서는 로그인이 확인되면 창이 저절로 닫히고, 내 블로그 주소도 자동으로 찾아 저장하게 했습니다.
왜 중요하냐면, 이 방식은 비밀번호를 어디에도 적지 않고도 "로그인된 사람"처럼 움직일 수 있게 해 주기 때문이에요.
2단계 · 원고는 파일 한 장으로 고정했어요 📄

2단계: post.md 네 블록. Claude가 쓰는 쪽과 스크립트가 읽는 쪽의 약속이에요
글 하나는 post.md 한 파일이에요. 블록은 네 개만 있습니다. # 설정(카테고리, 발행 방식, 공개 범위), # 제목(후보 3개 중 첫 줄이 들어감), # 본문(빈 줄로 문단 구분, ## 소제목, [사진 01_입구] 자리표시), # 태그(10개 안팎).
형식을 고정한 이유는 Claude와 스크립트의 약속을 한 곳에 두기 위해서예요. Claude는 이 형식대로만 쓰고 스크립트는 이 형식만 읽습니다. 사진은 같은 폴더의 images/ 안에 01_이름.png처럼 번호를 붙여 두면 본문의 자리표시에 맞춰 들어가요.
원고 규칙도 같이 적었습니다. 제목 맨 앞에 핵심 검색어, 본문 3,000~4,500자, 사진 15~25장, 소제목 5개 안팎, 외부 링크 없음, 태그 10개. 첫 문단은 "안녕하세요" 대신 숫자나 사실 한 줄로 시작해요. 사람 실명과 얼굴은 글과 사진 어디에도 남기지 않습니다.
3단계 · 글쓰기 화면을 사람 손처럼 채웠어요 ⌨️

3단계: 팝업 닫기부터 사진 업로드까지, 첫 글은 87블록이 이 순서로 들어갔어요
네이버 스마트에디터는 입력 순서에 민감해요. 글쓰기 화면을 열면 먼저 "작성 중인 글이 있습니다. 이어서 작성하시겠습니까?" 팝업이 뜹니다. 이걸 취소해 새 글로 시작해요. 그다음 제목 칸을 클릭해 제목을 넣고, 본문 첫 문단을 클릭한 뒤 문단마다 Enter 두 번으로 구분해 넣습니다. 굵게는 Cmd+B를 켜고 끄는 식이에요.
사진은 툴바의 사진 버튼을 눌러 파일 선택 창에 파일을 넘기고 4.5초를 기다립니다. 첫 글은 텍스트 블록 63개와 사진 24장, 모두 87블록이 이 순서대로 들어갔어요. 입력이 끝나면 에디터 안 요소의 순서를 읽어 order.json으로 남기고 화면을 캡처합니다. 글과 사진이 제자리에 있는지 눈으로 확인하는 용도예요.
왜 중요하냐면, 자동화는 "넣었다"가 아니라 "제자리에 넣었다"를 확인할 수 있어야 믿고 맡길 수 있기 때문입니다.
4단계 · 바로 발행 대신 10분 뒤 예약으로 ⏰

4단계: 임시저장, 발행 창 설정, 예약까지 18초. 10분은 사람이 검수하는 시간이에요
발행 버튼을 바로 누르지 않습니다. 임시저장을 먼저 하고 발행 창을 열어 카테고리·공개 범위·태그를 채운 뒤, 지금부터 10분 뒤를 10분 단위로 올린 시각에 예약을 걸어요. 그 10분 동안 검수 창이 열리고 이상하면 블로그 관리에서 수정하거나 취소할 수 있습니다.
10월 7일 첫 글의 캡처 시각을 보면 입력이 끝난 뒤 저장, 태그 입력, 예약 설정, 발행 완료까지 18초가 걸렸어요(20:39:15에서 20:39:33). 글은 20:50에 올라갔습니다. 첫 글 보기
즉시 발행을 기본값으로 두지 않은 데는 이유가 있어요. 네이버는 광고·스팸·도배·매크로 같은 어뷰징을 제재한다고 밝혔고(비즈한국), 비슷한 글을 짧은 시간에 여러 개 올리면 그렇게 보일 수 있습니다. 그래서 여러 글을 올릴 때는 예약 시각을 10분씩 띄우고 겪지 않은 사실은 쓰지 않는다는 규칙을 스킬에 적어 두었어요.
5단계 · 누구나 설치하는 스킬로 다시 묶었어요 📦

5단계: 배포판 naver-blog-auto 구조. 스킬 폴더와 데이터 폴더를 분리했어요
처음 만든 건 제 계정 주소가 박힌 파일 하나였어요. 10월 23일에 이걸 누구나 쓸 수 있는 스킬 naver-blog-auto로 다시 만들었습니다. 스크립트 5개 394줄(설치 점검, 로그인, 발행, 검수, 공통), 카테고리별 글 형식 10종(맛집·일기·독서·여행·IT·재테크·요리·영화·육아·인테리어), 에디터 선택자 메모 1장. 압축하면 24KB예요.
바뀐 점은 세 가지입니다. 블로그 주소를 코드에 적지 않고 로그인 뒤 자동으로 찾아요. 로그인 정보·설정·발행 기록은 스킬 폴더가 아니라 별도 데이터 폴더에 두어 ZIP에 섞이지 않게 했어요. 설치는 "다운로드 폴더에 있는 naver-blog-auto.zip 스킬 설치하고 세팅해줘" 한 줄로 끝나게 했습니다. Claude Code의 스킬은 공식 문서대로 ~/.claude/skills/<이름>/SKILL.md 한 파일이 중심이라, 설명서와 스크립트를 한 폴더에 담으면 돼요.
막혔던 지점과 해결 🧱
- 사진 뒤에 커서가 빈 문단으로 내려가요. 사진을 올리면 에디터가 그 아래 빈 문단을 만들고 커서를 거기 둡니다. 여기서 습관처럼 Enter를 두 번 치면 글 순서가 꼬였어요. "지금 커서가 빈 문단에 있는지"를 기억하는 변수 하나를 두고 빈 문단이면 Enter를 생략하게 고쳤습니다.
- 카테고리 버튼을 누르자 엉뚱한 패널이 열렸어요. 발행 창의 카테고리 선택자를 화면 전체에서
category라는 글자가 들어간 요소로 잡았는데, 에디터 본문에도 "글감 카테고리" 패널이 있어서 그게 열렸습니다. 발행 창의 요소 구조를 통째로 덤프해 보고(6,141자), 모든 발행 설정은layer_publish창 안에서만 찾도록 범위를 좁혔어요. - 클라우드 예약 작업에서는 못 돌아요. 로그인 프로필이 제 맥에만 있으니 클라우드에서 도는 루틴은 이 브라우저를 열 수 없어요. 그래서 이 자동화는 맥에서, 제가 "써서 올려줘"라고 말할 때 돕니다.
- 테스트하다 실제로 올라가면 안 되니까.
--nosave(입력만),--dry(발행 창까지 채우고 마지막 버튼은 안 누름) 두 단계를 두고 실제 발행은 테스트에서 한 번도 하지 않았어요.
숫자로 본 결과 📊
| 항목 | 기록 |
|---|---|
| 첫 자동 발행 글(10월 7일) | 본문 3,869자, 사진 24장, 소제목 10개, 태그 10개(87블록) |
| 입력 완료 → 예약 발행 완료 | 18초(캡처 시각 20:39:15 → 20:39:33) |
| 첫 시도 → 예약 완료 | 약 30분(20:09 첫 실행, 발행 창 구조 확인 포함) |
| 배포판 코드 | 스크립트 5개 394줄, 글 형식 10종, ZIP 24KB |
| 데모 글 입력(사진 6장) | 제목·본문·사진·저장·발행 설정까지 59초(녹화 기준) |
숫자의 한계도 적어 둘게요. 입력을 시작한 시각은 캡처가 없어서 사진 24장을 넣는 데 걸린 시간은 모릅니다. 자동화 전에 손으로 올릴 때 걸린 시간도 재 두지 않았어요. 그래서 "몇 시간 절약"이라고는 쓰지 않겠습니다. 확실한 건 하나예요. 사진 24장과 문단 63개를 한 번도 손으로 옮기지 않았습니다.
바로 써먹기 🧰
- API가 있는지 먼저 확인하세요. 있으면 그게 제일 안정적이에요. 없을 때만 브라우저 자동화로 갑니다. Supergood 글처럼 API 없는 웹 포털은 선택지부터 비교하세요.
- 로그인은 사람이, 상태는 폴더에. 비밀번호를 코드나 프롬프트에 적지 마세요. 지속 프로필 폴더 하나로 충분합니다. 캡차와 2단계 인증도 사람이 합니다.
- 입력 데이터는 파일 형식 하나로 고정. Claude가 쓰는 쪽과 스크립트가 읽는 쪽의 약속을 한 장에 적어 두면, 둘 중 하나를 바꿔도 다른 쪽이 안 깨져요.
- 제출 버튼은 마지막에, 처음엔 안 누르기. 입력만, 제출 창까지, 실제 제출. 세 단계로 나누고 단계마다 캡처를 남기세요.
- 선택자는 범위를 좁혀서. 화면 전체가 아니라 "이 창 안에서"로 찾으면 다른 패널이 열리는 사고가 줄어요. Notte의 비교처럼 기록·재생형 자동화는 화면이 바뀌면 깨지는 게 정상이니, 캡처와 요소 덤프로 고치는 절차를 미리 적어 두세요.
이번 호 무료 스킬은 API 없는 웹 화면 자동 입력기(web-form-autopilot)예요. 네이버 블로그 대신 여러분 회사의 그룹웨어, 공고 등록 화면, 관리자 페이지처럼 로그인이 필요한 웹 화면을 대상으로, 로그인 저장 → 화면 지도 만들기 → 입력 파일 → 미리 보기 → 제출까지 이 글과 같은 흐름을 밟습니다. 맨 위 무료 스킬 박스에서 받을 수 있어요. 네이버 블로그 전용 완성판은 제 인스타그램(@starof_ai)에서 따로 드리고 있습니다.
📚 참고한 자료 7개
- 뉴스핌: 네이버 '글쓰기 API' 기능, 내달 종료 "광고성 블로그 퇴출" (2020.04.13)
- 뉴시스: 네이버, 광고성 블로그 퇴출 위해 '글쓰기 API' 기능 종료 (2020.04.13)
- Playwright 공식 문서: BrowserType.launchPersistentContext
- Claude Code 공식 문서: Extend Claude with skills
- 비즈한국: AI 프로그램으로 블로그도 뚝딱, '쓰레기 정보' 넘쳐난다 (2025.03.27)
- Notte: Browser agents vs RPA
- Supergood: How to automate software with no API