문서
네이버 블로그
Claude 같은 AI로 네이버 블로그에 글을 올리는 방법이에요. 공식 글쓰기 API가 없어서 브라우저 확장으로 연결하고, 발행, 본문 문법, 수정, 삭제, 댓글을 API와 MCP로 해요.
브라우저 확장으로 연결해요
네이버 블로그에는 글을 올리는 공식 API가 없어요. 그래서 내 브라우저에 설치한 포샌디 크롬 확장이 내 네이버 로그인으로 글을 써요.
- 대시보드의 연결 화면에서 확장을 설치해요.
- 같은 화면에서 블로그를 연결해요.
네이버 비밀번호와 쿠키는 포샌디 서버로 오지 않아요.
한눈에
| 항목 | 종류 | 값 |
|---|---|---|
| 글자 수 | 텍스트 | 30,000 |
| 이미지 | 미디어 | 글 하나에 40장까지. 더 넣으면 앞의 40장만 올라가고 경고가 붙어요 |
| 캐러셀 | 미디어 | 없음. 이미지는 본문에 차례로 들어가요 |
| 영상 | 미디어 | 글 하나에 10개 |
| 텍스트만 | 미디어 | 가능 |
| 24시간 발행 | 한도 | 20 |
| 24시간 삭제 | 한도 | 브라우저 확장으로 처리, 하루 한도는 공개된 값 없음 |
| 상태 | 상태 | bridge (브라우저 확장 필요) |
본문은 마크다운으로 써요. 제목과 카테고리는 options.naver_blog에 따로 넣어요. 카테고리는 기본값이 없어서 꼭 넣어야 해요. 태그는 options.naver_blog.tags에 넣어요. 본문 맨 끝에 #해시태그 줄이 있으면 발행할 때 그 줄을 태그로 옮겨요(임시저장은 본문 그대로 둬요).
발행되는 과정
- AI가
publish를 불러요. - 확장이 브라우저에서 네이버 에디터를 열어요.
- 확장이 글을 쓰고 발행을 눌러요.
확장을 설치한 크롬이 꺼져 있으면, 켜질 때까지 기다렸다가 올려요. 최대 7일까지 기다려요. AI는 발행 전에 bridge_status로 확장이 켜져 있는지 먼저 확인해요.
첫 글 올리기
제목, 카테고리, 마크다운 본문을 넣어 publish(POST /v1/posts)를 불러요.
- 카테고리:
list_accounts결과의naverBlog.categories에 있는 id나 이름을 넣어요. - 배치 방식:
layout: "as-is"는 쓴 마크다운을 그대로 내보내요. 대신form에 폼 id를 넣으면 그 폼 모양으로 다시 배치해요. - 둘 다 안 넣으면
400 naver_form_required가 나오고, 고를 수 있는 폼 목록이 같이 와요.
curl -X POST https://api.posendy.com/v1/posts \
-H "Authorization: Bearer $POSENDY_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "## 소제목\n\n본문 **굵게** [posendy](https://posendy.com)\n\n> 인용 {.bubble}\n\n",
"accountIds": ["conn_..."],
"mediaIds": ["med_..."],
"options": {
"naver_blog": {
"title": "첫 글",
"category": "일상",
"tags": ["posendy"],
"openType": "public",
"layout": "as-is"
}
}
}'
본문 문법
기본 마크다운에 네이버 전용 문법 두 가지를 더 써요.
| 문법 | 쓰는 곳 | 예 |
|---|---|---|
{.속성} | 줄 끝에 붙여요 | 정렬, 글자 크기, 색, 인용구 모양 |
@지시문 | 한 줄을 통째로 써요 | 영상, 사진 묶음, 링크 카드, 지도 |
전체 목록은 아래 API가 알려줘요. topic을 넣으면 그 주제만 자세히 받아요. 주제 이름은 응답의 topics에 있어요. MCP에서는 describe_grammar 도구가 같은 내용을 줘요.
모르는 문법이 있으면 발행 전에 줄 번호와 함께 naver_markdown_unknown으로 거절해요. 그래서 반만 만들어진 글이 올라가는 일은 없어요.
curl https://api.posendy.com/v1/naver/grammar \
-H "Authorization: Bearer $POSENDY_KEY"
curl "https://api.posendy.com/v1/naver/grammar?topic=inline" \
-H "Authorization: Bearer $POSENDY_KEY"
글 수정과 삭제
update_post는 올린 글을 같은 주소 그대로 고쳐요. 새 본문 전체를 보내야 해요.
- 본문 안의
media:참조가 그 글의 사진과 영상이에요. 새 본문에 없는 사진과 영상은 빠져요. mediaIds에는 본문 안에 넣지 않고 글 끝에 붙일 것만 보내요.- 네이버가 받는 개수보다 많이 넣으면
422 naver_media_over_limit가 나오고, 아무것도 바뀌지 않아요. - 카테고리, 공개 범위, 태그는 새로 보내지 않으면 원래 값 그대로예요.
네이버 에디터에서 직접 쓴 글도 확장 0.7.8부터 고칠 수 있어요.
- 처음 부르면
409 naver_source_required가 나오고, 지금 본문(source)과sourceVersion이 같이 와요. - 그 본문을 고쳐서
content와sourceVersion을 같이 보내요.
본문의 @keep(...) 줄은 원래 있던 블록(사진, 표, 카드 등)을 그대로 두는 표시예요. 남겨 두면 제자리에 그대로 있고, 지우면 빠져요. @keep 블록 안은 고칠 수 없어요. 기존 표의 칸을 바꾸려면 그 줄을 지우고, 같은 자리에 GFM 표를 새로 써요. 새 표를 포함한 새 블록은 평소 본문 문법으로 어디에나 넣을 수 있어요.
delete_post에는 발행 id나 글 링크를 넣어요.
댓글, 공감, 이웃추가
| 도구 | 하는 일 |
|---|---|
reply | 댓글을 달아요. list_replies로 받은 id를 replyTo에 넣으면 대댓글이 돼요. |
like | 글이나 댓글에 공감을 눌러요. |
follow | 이웃을 추가해요. mutual: true면 서로이웃 신청이에요. |
다른 사람 글에는 글 링크를 넘기면 돼요. 모두 확장이 브라우저에서 한 번에 하나씩 처리해요.
안 되는 것
아래는 본문 문법으로 표현할 수 없어서 지원하지 않아요.
- 파일 첨부
- 구매 이력에 묶인 상품 카드
- 템플릿
- 클립
- 다른 SNS 사진
자주 묻는 것
포샌디가 네이버 비밀번호나 쿠키를 저장하나요?
아니요. 확장에는 비밀번호를 넣는 칸이 없어요. 네이버 로그인 정보는 그 브라우저 안에만 있고 포샌디 서버로 오지 않아요. 계정을 지우거나 확장을 삭제하면 같이 지워져요.
글이 계속 '발행 중'으로 나와요
확장을 설치한 크롬이 꺼져 있거나, 네이버 로그인이 풀린 경우예요. 크롬을 켜고, 로그인 창이 떠 있으면 로그인해요. 그러면 하던 작업이 이어져요.
10분 동안 아무도 그 창에서 로그인하지 않아도 글은 실패로 끝나지 않고 기다려요. 연결 화면의 '로그인 창 열기'를 눌러 열린 창에서 로그인하면 이어서 올라가요. 글은 최대 7일까지 기다려요.
본문에 굵은 글씨나 표를 쓸 수 있나요?
네. 본문이 마크다운이라 굵게, 링크, 목록, 표, 인용이 네이버 서식으로 바뀌어 나가요. 스티커, 지도처럼 네이버에만 있는 건 @지시문으로 써요. 전체 문법은 GET /v1/naver/grammar가 알려줘요.
