네이버 블로그 자동 발행, 글 말고 나머지 — 게시판, 사진 설명, 링크 카드

2026년 09월 18일 · AI 자동화, 개발 일지

글 한 편에 붙는 네 가지 요소 — 게시판, 사진 설명, 구분선, 링크 카드와 각각 막힌 지점

앞 글에서 네이버 에디터에 본문 서식을 살려 넣는 데까지 왔다. 이제 글은 들어간다.

그런데 발행된 글을 하나씩 열어보니 본문 말고 나머지가 다 비어 있었다. 글은 전부 기본 게시판에 쌓였고, 사진 밑에 출처를 적어야 할 자리는 비어 있었고, 글 끝의 다른 글 보기는 아예 없거나 모양이 이상했다. 사람이 쓸 때는 클릭 몇 번이면 끝나는 것들인데, 자동화로 옮기니 하나하나가 따로 막혔다.

이번 편은 그 나머지를 붙인 기록이다.

모든 글이 기본 게시판에 쌓였다

처음 알아챈 건 게시판이었다. 네이버 블로그는 게시판을 나눠 쓰는데, 자동으로 올린 글이 전부 기본 게시판 하나에 들어가 있었다.

처음 떠올린 방법은 사람이 하는 대로 따라가는 것이었다. 발행 버튼을 누르면 뜨는 패널에 게시판 드롭다운이 있으니 그걸 열어서 고르면 된다. 그런데 이 패널의 요소들은 이름이 알아볼 수 없는 문자열로 붙어 있고, 에디터가 바뀔 때마다 달라질 수 있다. 여기에 기대면 언젠가 조용히 깨진다.

다른 길을 찾았다. 블로그에서 게시판을 클릭하면 주소창에 게시판 번호가 찍힌다. 이 번호를 글쓰기 주소 뒤에 붙여서 열면 처음부터 그 게시판으로 글쓰기가 열린다. 드롭다운을 건드릴 필요가 없었다. 화면 요소를 찾는 대신 주소 하나로 해결되니 에디터가 바뀌어도 버틴다.

처음에는 사이트마다 게시판 번호를 하나만 적게 했다. 비워두면 기본 게시판이다.

게시판이 여러 개가 되자

곧 부족해졌다. 한 블로그 안에서도 글마다 들어갈 게시판이 다르다. 번호 하나로는 그걸 못 나눈다.

그래서 사이트 설정에 게시판을 이름과 번호 쌍으로 여러 개 등록하게 바꿨다. 발행할 때는 글의 카테고리 이름을 보고, 등록된 게시판 중 이름이 같은 것의 번호로 글쓰기를 연다. 이름이 맞는 게 없으면 기본 번호로, 기본 번호도 없으면 목록의 첫 게시판으로 간다.

여기서 인자를 새로 만들지 않은 게 나중에 편했다. 워드프레스에 올릴 때 쓰던 카테고리 인자를 그대로 쓴다. 워드프레스는 이름을 카테고리 번호로, 네이버는 이름을 게시판 번호로 바꿀 뿐이다. 호출하는 쪽은 어느 쪽에 올리는지 신경 쓰지 않아도 된다.

다만 이건 만든 날 바로 여러 게시판으로 나눠 올려보지는 못했다. 코드상 분기는 확인했지만, 실제로 게시판별로 갈라져 올라가는지는 따로 확인할 일로 남겼다.

사진 설명 칸은 눌러도 안 열렸다

다음은 사진 설명이었다. 본문에 넣는 사진은 대부분 출처를 밝혀야 해서, 사진 바로 밑 설명 칸에 출처를 적어야 했다.

설명을 어디에 담을지부터 정했다. 따로 칸을 만들지 않고 본문 마크다운의 이미지 대체 텍스트를 그대로 설명으로 쓰기로 했다. 워드프레스도 같은 대체 텍스트가 테마에 따라 캡션처럼 보이니, 한 가지 규약으로 양쪽이 맞는다.

막힌 건 입력이었다. 사진을 올리고 설명 칸을 눌러 타이핑하면 될 줄 알았는데 아무것도 들어가지 않았다. 에디터 화면을 하나씩 찍어 확인해보니, 빈 설명 칸은 사진을 먼저 선택해야 활성화됐다. 그래서 순서를 사진 업로드, 사진 선택, 설명 칸 클릭, 입력으로 고정했다. 실제 에디터에서 사진 두 장에 각각 설명이 들어가고 본문 문단은 건드리지 않는 것까지 확인했다.

이 규약을 어디에 적어둘지도 문제였다. 글을 넘기는 건 AI인데, 따로 문서를 만들어두면 AI는 그걸 안 읽는다. 그래서 발행 도구의 설명문, 즉 AI가 호출 직전에 반드시 읽는 자리에 적었다. 대체 텍스트가 곧 사진 설명이고 출처도 거기에 쓴다고.

다른 글 보기가 한쪽으로 쏠렸다

마지막이 글 끝의 다른 글 보기였다. 구분선 하나, 제목 한 줄, 그 아래 링크 카드 몇 개. 제일 단순해 보였는데 제일 오래 걸렸다.

구분선부터 안 들어갔다. 버튼을 글자로 찾아 눌렀는데, 클릭은 성공했다고 나오는데 선이 없었다. 화면에 보이는 이름과 실제 버튼이 달랐다. 버튼 고유의 클래스로 찾아 누르게 바꾸고서야 들어갔다. 성공이라고 나왔는데 아무 일도 없는 게 제일 곤란했다.

제목 한 줄도 그냥 붙여넣으면 새 줄로 안 생기고 앞 문단 끝에 합쳐졌다. 이미 검증해둔 인용구 방식으로 넣어 따로 떨어지게 했다.

그다음 이 꼬리말이 본문 중간에 끼어들었다. 본문 마지막 문단을 클릭해 커서를 끝으로 보내려 했는데, 클릭은 요소 한가운데를 누른다. 문단이 길면 커서가 문단 중간에 박혔다. 스크립트로 커서만 옮기는 것도 해봤지만 에디터가 그걸 실제 선택으로 인식하지 않았다. 결국 문단의 오른쪽 아래 모서리를 계산해 그 자리를 눌렀다.

링크를 붙여넣으면 카드가 생기는데, 카드 위에 주소 글자 줄이 같이 남았다. 이걸 지우려고 백스페이스를 쓰면 카드가 깨졌다. 주소가 길면 여러 줄로 접히기도 해서, 줄 단위로 선택해 Delete로 지우는 걸 줄이 빌 때까지 반복했다.

그리고 카드가 전부 왼쪽으로 쏠렸다. 상단 툴바의 가운데 정렬은 카드에 먹지 않았다. 카드를 클릭하면 따로 뜨는 작은 툴바가 있었고, 거기 있는 가운데 정렬을 눌러야 움직였다. 카드마다 선택하고 정렬하는 걸 돌려서 세 장이 모두 가운데로 온 걸 확인했다.

카드 사이 간격은 끝내 줄이지 못했다. 카드 사이의 빈 줄은 지워도 에디터가 다시 만들었다. 카드를 포기하고 글자 링크로 가지 않는 한 그 간격은 받아들이기로 했다.

링크를 매번 고를 수는 없었다

카드 모양을 맞추고 나니 다른 문제가 보였다. 어떤 글을 링크할지를 매번 사람이 골라야 했다. 무인으로 돌리려는데 이게 걸렸다.

그래서 링크 자리에 실제 주소 대신 약속된 표시를 적을 수 있게 했다. 발행하는 순간 이 표시를 실제 주소로 펼친다. 하나는 지금 올리는 블로그의 RSS에서 최근 글 몇 개를 무작위로 가져오는 것, 다른 하나는 운영 중인 다른 사이트의 공개 글을 무작위로 가져오는 것이다. 일반 주소를 적으면 그대로 통과시키고, 순서는 유지하되 겹치는 주소는 뺀다.

여기서 정한 원칙이 하나 있다. 가져오기가 실패해도 발행은 막지 않는다. 네트워크가 잠깐 안 되면 그 표시만 조용히 건너뛰고 나머지로 발행한다. 링크 카드 하나 때문에 글 전체가 멈추는 건 앞뒤가 바뀐 일이다.

정리하면

화면 요소를 찾아 누르는 것보다 주소나 규약으로 우회하는 쪽이 오래 버텼다. 게시판은 드롭다운 대신 글쓰기 주소의 번호로, 사진 설명은 별도 칸 대신 대체 텍스트로 풀었다. 에디터가 바뀌어도 덜 깨지는 쪽을 먼저 찾는 게 맞았다.

클릭이 성공했다는 신호를 믿으면 안 된다. 구분선 버튼은 성공이라고 해놓고 아무것도 안 넣었고, 커서는 클릭한 곳이 아니라 요소 한가운데로 갔다. 결과를 눈으로 확인하는 검사가 없었으면 한참 더 헤맸을 것이다.

그리고 곁가지 기능은 본체를 막지 않게 만들어야 했다. 동적 링크를 가져오지 못해도 글은 올라간다. 자동화가 사람 없이 돌려면, 없어도 되는 것 때문에 멈추는 일이 없어야 한다.