Channels

Naver Blog

How an agent publishes to Naver Blog through uplika: connecting, a first post, the API that returns the body syntax, and editing, deleting and comments.

Quick reference

NameTypeDescription
characterstext30,000
imagesmediaup to 40 per post; more than that and the first 40 go out with a warning
carouselmediano carousel; images sit in the post one after another
videomedia10 per post
text alonemediaallowed
posts / 24hlimit20
deletes / 24hlimitNaver Blog through the browser extension, with no documented daily cap
statusstatebridge

The body is markdown. The title and category go in options.naver_blog, and the category has no default. Tags go in options.naver_blog.tags; a last line of #hashtags in the body is moved into them when the post goes out (not for draftOnly).

How does publishing work?

When you call publish, the extension opens the Naver editor in your browser, writes the post and publishes it. If Chrome with the extension is closed, the post waits until it opens (up to seven days). An agent should call bridge_status before publishing to check the extension is on.

Publish a first post

Call publish (POST /v1/posts) with a title, a category and a markdown body. For the category, pass an id or a name from naverBlog.categories in list_accounts. layout: "as-is" sends your markdown exactly as written; pass a form id in form instead to lay it out in that form. With neither, you get 400 naver_form_required with the forms to choose from.

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![캡션](media:med_...)",
    "accountIds": ["conn_..."],
    "mediaIds": ["med_..."],
    "options": {
      "naver_blog": {
        "title": "첫 글",
        "category": "일상",
        "tags": ["uplika"],
        "openType": "public",
        "layout": "as-is"
      }
    }
  }'

Body syntax

Standard markdown plus two Naver-only additions: a trailing {.attribute} on a line (alignment, font size, colour, quote style) and an @directive on a line of its own (video, photo group, link card, map and so on). The API below returns the full list. Pass topic to get one part in detail; the topic names are in topics in the response. Over MCP, the describe_grammar tool returns the same. Anything unknown is refused before publishing with naver_markdown_unknown and the line number, so nothing goes out half-rendered.

curl https://api.uplika.com/v1/naver/grammar \
  -H "Authorization: Bearer $UPLIKA_KEY"

curl "https://api.uplika.com/v1/naver/grammar?topic=inline" \
  -H "Authorization: Bearer $UPLIKA_KEY"

Editing and deleting

update_post rewrites a published post in place, at the same URL. Pass the full new body. Its media: references are the post's photos and videos: media the new body does not place is removed, and you pass mediaIds only for media to add at the end without placing it. If the body places more than Naver takes, it answers 422 naver_media_over_limit and nothing changes. Category, visibility and tags stay unless you pass new ones. A post written directly in Naver's editor can be edited from extension 0.7.8: the first call answers 409 naver_source_required with its current body (source) and sourceVersion. Edit that body and send it back as content together with sourceVersion. The @keep(...) lines in it are blocks kept exactly as they are (photos, tables, cards and so on): leave a line to keep the block where it is, delete it to remove the block. You cannot edit inside a @keep block; to change an existing table, delete its line and write the table again in GFM at the same place. New blocks, a new table included, go anywhere in the usual body syntax. delete_post takes the publish id or a link to the post.

Comments, likes and neighbors

reply writes a comment, or a nested reply when you pass replyTo with an id from list_replies. like presses the like button on a post or a comment, and follow adds a neighbor (mutual: true sends a mutual-neighbor request). For someone else's post, pass the post link. The extension does all of it in your browser, one action at a time.

What is not available?

File attachments, purchase-linked product cards, templates, clips and photos from other social accounts cannot be expressed in a body, so they are not supported.

Frequently asked

Does uplika store my Naver password or cookies?

No. The extension has no place to type a password, and your Naver sign-in stays in that browser; it never reaches the uplika server. Removing the account or the extension deletes it.

Why is my post still publishing?

Chrome with the extension is closed, or Naver signed you out. Open Chrome, and if a login window appeared, sign in there; the same job continues. If nobody logs in to that window within 10 minutes, posts for that blog do not fail but wait; press Open login window on the Connections page and log in there. A post waits up to seven days.

Can I write bold text or a table in the body?

Yes. The body is markdown, so bold, links, lists, tables and quotes come out as Naver's own formatting. Naver-only things like stickers and maps are written as @directives. GET /v1/naver/grammar returns the full syntax.