채널
네이버 블로그
에이전트가 uplika 로 네이버 블로그에 발행하는 방법, 브라우저 확장이 하는 일, 본문 마크다운이 받는 것, 그리고 네이버가 제공하지 않는 것.
요약
| 이름 | 타입 | 설명 |
|---|---|---|
characters | text | 30,000 |
images | media | up to 40 per post; more than that and the first 40 go out with a warning |
carousel | media | no carousel; images sit in the post one after another |
video | media | 10 per post |
text alone | media | allowed |
posts / 24h | limit | 20 |
deletes / 24h | limit | Naver Blog through the browser extension, with no documented daily cap |
status | state | bridge |
이 숫자들은 서버가 검증하는 그 파일에서 옵니다. 본문은 마크다운이고 제목은 따로 받으며, 카테고리는 필수이고 기본값이 없습니다.
발행은 어떻게 돌아가나요?
publish 는 작업을 큐에 넣습니다. 브라우저의 확장이 그것을 받아 포커스를 뺏지 않는 별도 창에 네이버 에디터를 열고, 제목·본문·이미지·태그를 채우고 카테고리를 골라 발행합니다. 브라우저가 닫혀 있으면 글은 최대 7일 기다립니다. 네이버 로그인이 풀려 있으면 작업이 로그인 단계에서 멈춰 그 창을 앞으로 올리고, 로그인하면 같은 창에서 이어서 씁니다. 글 상세 화면이 진행 단계를 보여 줍니다.
첫 글은 어떻게 올리나요?
대시보드에서 네이버 블로그를 연결하고 안내대로 확장을 설치한 뒤, 제목·카테고리(id 또는 이름)·마크다운 본문으로 publish 를 부릅니다.
curl -X POST https://api.uplika.com/v1/posts \
-H "Authorization: Bearer $UPLIKA_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "## 소제목\n\n본문 **굵게** [uplika](https://uplika.com)\n\n> 인용 {.bubble}\n\n",
"accountIds": ["conn_..."],
"mediaIds": ["med_..."],
"options": {
"naver_blog": {
"title": "첫 글",
"category": "AI 최신 정보",
"tags": ["uplika"],
"openType": "public"
}
}
}'본문은 무엇을 받나요?
마크다운으로 되는 것은 표준 마크다운으로, 네이버에만 있는 것은 두 가지 작은 추가로 받습니다. 문단·제목·인용·구분선 끝의 {.속성}, 그리고 블록을 위한 한 줄짜리 @지시문입니다. 모르는 문법은 발행 전에 naver_markdown_unknown 으로 줄 번호와 함께 거절되므로 반쯤 그려진 글이 나가지 않습니다.
글자
| 이름 | 타입 | 설명 |
|---|---|---|
**굵게** *기울임* ~~취소선~~ ++밑줄++ | inline | 굵게, 기울임, 취소선, 밑줄 |
[글자](https://…) | inline | 그 글자에 링크 |
^위^ ~아래~ | inline | 위첨자와 아래첨자 |
`코드` | inline | 인라인 코드. 네이버에 코드 노드가 없어 연한 배경으로 근사합니다 |
[글자]{.color=#e7000b .bg=#fff59d} | inline | 그 단어에만 글자색과 배경색 |
블록
| 이름 | 타입 | 설명 |
|---|---|---|
# ## ### | block | 소제목. 네이버는 제목이 한 단계뿐이라 # 은 크기 28, ## 은 기본, ### 은 19 로 냅니다 |
> 인용 {.bubble} / > -- 출처 | block | 인용구. 스타일 속성으로 여섯 모양 중 하나를 고르고, -- 로 시작하는 마지막 줄은 출처가 됩니다 |
--- {.line3} | block | 구분선. 여덟 모양: default 와 line1 ~ line7 |
- 항목 / 1. 항목 | block | 기호·숫자 목록. 두 칸 들여쓰면 중첩 |
| a | b | + |:--|--:| | block | 표. 첫 행이 머리 행이고 구분 행의 :--: 가 열을 가운데 정렬합니다 |
``` … ``` | block | 소스코드 블록 |
 | block | media_presign·media_from_url·media_upload_link 로 올린 이미지. 캡션은 대체 텍스트입니다. 그 id 를 mediaIds 에 또 적을 필요는 없습니다. 본문에서 읽어 붙입니다. 대신 그 줄에 참조 말고 다른 글자가 있으면 그대로 발행됩니다 |
문단 속성
| 이름 | 타입 | 설명 |
|---|---|---|
.left .center .right .justify | attr | 정렬 |
.size=11|13|15|16|19|24|28|30|34|38 | attr | 글자 크기 |
.font=기본|고딕|명조|스퀘어… | attr | 글꼴. 에디터에 보이는 한글 이름으로 |
.lh=150~210 | attr | 줄간격 퍼센트 |
.dropcap | attr | 첫 글자 크게 |
.color=#rrggbb .bg=#rrggbb | attr | 문단 전체의 글자색과 배경색 |
네이버 전용 블록
| 이름 | 타입 | 설명 |
|---|---|---|
@video(media:ID) | directive | 올린 영상. 이미지 참조와 규칙이 같습니다 |
@group(…) | directive | |
@card(https://…) | directive | 링크 미리보기 카드 |
@sticker(motion2d_01-3) | directive | 네이버 스티커. 팩과 번호는 에디터 스티커 패널에 보이는 그대로 |
@map(강남역[, 2]) | directive | 검색 첫 결과의 지도 카드. , 2 를 붙이면 둘째 결과 |
@schedule(제목 | 2026-09-20 14:00 | 장소) | directive | 제목·시작 시각(선택)·장소(선택)가 든 일정 카드 |
@formula(\frac{a}{b}) | directive | LaTeX 로 그린 수식 |
인용구·구분선 스타일
| 이름 | 타입 | 설명 |
|---|---|---|
.default .line .bubble .underline .postit .corner | quotation | 인용구. 스타일 속성으로 여섯 모양 중 하나를 고르고, -- 로 시작하는 마지막 줄은 출처가 됩니다 |
.default .line1 .line2 .line3 .line4 .line5 .line6 .line7 | horizontalLine | 구분선. 여덟 모양: default 와 line1 ~ line7 |
카테고리는 어떻게 되나요?
카테고리는 연결할 때 블로그에서 읽어 list_accounts 의 naverBlog.categories 에 나옵니다. 발행할 때 categoryId 나 category(정확한 이름) 중 하나를 넘기세요. 없는 이름은 후보 목록과 함께 거절됩니다. 네이버에서 방금 카테고리를 만들었다면 refresh_account 를 부르면 확장이 목록을 다시 읽습니다. 보통 1분 안입니다.
글을 지울 수 있나요?
예. delete_post 는 발행 id 나 글 링크를 받습니다. 네이버 에디터에서 직접 쓴 글도 연결된 블로그의 글이면 됩니다. 다른 블로그의 링크는 거절됩니다. 글 수정은 uplika 로 할 수 없으니 새로 발행하세요.
에이전트가 댓글·공감·이웃추가도 하나요?
합니다. 내 글에도, 남의 글에도. reply 는 댓글을 달고, list_replies 가 준 id 를 replyTo 로 넘기면 그 댓글 아래 대댓글이 됩니다. secret: true 면 비밀댓글입니다. like 는 글에 공감을 누르고, replyTo 가 있으면 그 댓글에 누릅니다. 상태를 먼저 읽고 켜진 공감을 끄는 일은 없으며, 내 글에 내 공감은 네이버가 무시해서 naver_not_allowed 로 돌아옵니다. follow 는 블로그를 이웃으로 추가하고, mutual: true 면 상대가 수락할 때까지 pending 인 서로이웃 신청을 보냅니다. 남의 글은 링크를 그대로 넘기면 연결된 블로그로 행동합니다. 전부 확장이 브라우저에서 사람이 하듯 한 번에 하나씩 합니다.
네이버 글은 어떤 모양으로 나가나요?
따로 지시가 없으면 publish 가 마크다운을 블로그의 기본 폼(레퍼런스 세 편에서 잰 photo-story 프리셋)으로 다시 놓습니다. #·## 제목은 밑줄 인용 제목이 되고, 절 사이에 얇은 구분선이 들어가며, 붙였지만 자리를 안 정한 사진은 절마다 한 장씩, 남으면 끝에 둘씩 나란히 들어갑니다. 글자는 바뀌지 않습니다. 먼저 naver_layout 으로 결과를 보거나, 사람이 구조를 정했거나 media: 참조로 직접 놓았다면 options.naver_blog.layout: "as-is" 로 그대로 보냅니다. 폼은 여덟 개고 고르는 것은 사람입니다 — 컴포저의 「폼 비교」 가 같은 글을 여덟 폼으로 놓아 실제 크기로 나란히 보여 주고, 에이전트는 naver_layout 에 forms: "all" 을 줘서 같은 여덟을 받아 사람에게 고르게 한 뒤 options.naver_blog.form 으로 발행합니다. 서버는 고르지 않습니다.
발행된 네이버 글을 고칠 수 있나요?
됩니다. 발행된 네이버 블로그 글에 update_post 를 부르면 확장이 그 글을 네이버 에디터의 수정 화면으로 열어 본문을 통째로 갈아끼우고 다시 발행합니다. URL 과 logNo 가 그대로입니다. 새 본문 전체를 주고, 사진을 남기려면 미디어 id 를 다시 적으세요. 다른 채널은 여전히 post_not_editable 입니다.
안 되는 것은 무엇인가요?
기존 글 수정, 그리고 파일 첨부: 네이버는 파일을 자체 파일 선택기로만 받는데 확장은 그것을 채울 수 없습니다. 네이버 에디터에는 구매 이력에 묶인 상품 카드, 템플릿, 클립, 다른 SNS 계정의 사진도 있는데, 네이버 쪽 데이터나 다른 로그인에 기대는 것이라 본문으로 표현할 수 없어 제공하지 않습니다.
자주 묻는 것
uplika 가 네이버 비밀번호나 쿠키를 저장하나요?
비밀번호는 절대 아닙니다. 확장에는 비밀번호를 넣을 칸이 없고 uplika 로도 오지 않습니다. 쿠키도 uplika 로 오지 않습니다. 네이버 블로그를 연결하면 확장이 네이버 로그인 정보를 그 브라우저의 확장 저장소에 보관했다가 발행 직전에 맞는 계정으로 바꿔 끼웁니다. 네이버가 한 번에 한 계정만 로그인시키기 때문입니다. 그 정보는 이 컴퓨터에만 있고, 계정을 지우거나 확장을 삭제하면 지워집니다.
글이 왜 계속 발행 중인가요?
확장이 든 브라우저가 닫혀 있거나 네이버가 로그아웃시켰기 때문입니다. 글은 최대 7일 기다립니다. 브라우저를 열고, 로그인 창이 떠 있으면 거기서 로그인하세요. 같은 작업이 이어집니다.
본문에 굵은 글씨나 표를 쓸 수 있나요?
예. 본문은 마크다운입니다. 굵게·링크·목록·표·코드 블록·인용이 전부 네이버 자체 컴포넌트로 그려집니다. 스티커·지도처럼 네이버에만 있는 것은 @지시문이 있습니다. 모르는 문법은 발행 전에 줄 번호와 함께 거절됩니다.
발행된 글을 수정하려고 열면 네이버 에디터에 「존재하지 않는 이미지입니다」 가 뜹니다.
옛 확장이 올린 글에서만 납니다. 그 확장은 이미지 경로를 스킴 없이 저장했고, 발행본은 멀쩡한데 수정 화면만 못 읽습니다. 그 글에 update_post 를 부르면 같은 URL 로 다시 써지고 수정 화면에서 사진이 전부 보입니다.