티스토리 자동 발행 만들기 — Open API 종료 이후의 우회 구조
티스토리 Open API가 2024년 2월 종료된 뒤 자동 발행을 구현한 방법. 브라우저 제어 방식을 택한 이유, 팩트체크를 세 겹으로 나눈 근거, 이미지 1280px 축소의 실측치를 정리했습니다.
방구석컴퍼니
혼자 일하는 사람 · 작업 기록
Open API 없이 브라우저를 직접 움직여 글을 발행하는 구조
1.8MB 사진이 149KB로 줄었고, 글자는 그대로 읽힙니다. 티스토리 자동 발행 도구를 만들면서 나온 실측치입니다. 이 글은 공식 API가 닫힌 서비스에 자동 발행을 붙일 때 어떤 선택지가 있고, 무엇이 먼저 깨지는지를 정리한 기록입니다.
Open API 종료 이후 남은 선택지
티스토리 Open API는 2024년 2월 서비스를 종료했습니다. 프로그램으로 글을 올리는 공식 통로가 사라진 겁니다. 남은 방법은 두 가지였습니다.
| 방식 | 동작 | 취약점 |
|---|---|---|
| 공식 API | HTTP 요청으로 발행 | 종료됨. 사용 불가 |
| 브라우저 제어 | 사람과 같은 경로로 조작 | 화면 구조 변경에 깨짐 |
두 번째를 택했습니다. 다만 자동화 라이브러리에 내장된 브라우저 대신 사용자가 설치한 크롬을 실행해 CDP로 붙였습니다. 카카오 로그인이 캡차와 2단계 인증을 걸기 때문에, 내장 브라우저로는 인증 자체가 통과되지 않습니다. 로그인은 최초 1회만 사람이 하고, 세션은 로컬 프로필에 남습니다.
무엇이 가장 먼저 깨지는가
자동화에서 실패는 눈에 띕니다. 에러가 나고 멈추니까요. 정작 위험한 건 조용히 통과하는 쪽입니다.
구조 게이트가 정량 지표 3개, 대조군, 한계 서술을 요구한다고 해봅시다. 그런데 입력으로 준 사진에는 가격이 찍혀 있지 않습니다. 이때 모델은 게이트를 통과하려고 그럴듯한 숫자를 만들어 냅니다. 발행은 성공하고, 글에는 없는 사실이 남습니다.
팩트체크를 세 겹으로 나눈 이유
| 계층 | 검사 시점 | 잡는 것 |
|---|---|---|
| 수집 | 작성 전 | 출처 없는 항목을 비워서 반환 |
| 정적 검사 | 브라우저 실행 전 | 본문 수치가 근거 목록에 있는지 |
| 시각 대조 | 발행 직전 | 사진 내용과 본문 주장의 불일치 |
두 번째만으로는 부족합니다. 정적 검사는 숫자가 근거 목록에 존재하는지만 확인하기 때문에, 근거 목록 자체가 오염되면 그대로 통과합니다. 메뉴판에 없던 가격을 근거에 적어 두면 검사를 빠져나갑니다. 세 번째 계층이 원본 이미지를 직접 열어 대조하는 건 그 구멍 때문입니다.
이미지를 1280px로 줄이는 근거
임의로 정한 값이 아닙니다. 티스토리 CDN이 R1280x0 규격으로 리사이즈해 서빙합니다. 본문 영역은 800px이고 이미지는 760px로 렌더됩니다. 즉 1280px보다 크게 올려도 서버가 줄이므로, 업로드 시간과 용량만 소모됩니다.
형식은 내용을 보고 나눴습니다.
| 입력 | 변환 | 실측 |
|---|---|---|
| 사진·일러스트 | JPEG 품질 85 | 1.8MB → 149KB (92% 감소) |
| 스크린샷·도표 | PNG 유지 | 글자 주변 노이즈 회피 |
| 투명도 포함 | PNG 유지 | 알파 채널 보존 |
변환 결과가 원본보다 커지면 원본을 그대로 씁니다. 원본 파일은 수정하지 않고 캐시 폴더에 변환본만 만듭니다.
검증은 에디터가 아니라 발행된 글에서
브라우저에 렌더된 편집기 상태와 서버에 기록된 결과는 어긋날 수 있습니다. 그래서 저장이 끝나면 발행 URL을 다시 열어 본문 길이, 문단 수, 이미지 개수, 표 개수를 측정합니다.
[검증] {'ok': True, 'textLen': 1230, 'p': 18, 'img': 3, 'table': 2}
이 값이 0이면 발행이 잘못된 겁니다. 화면상 성공과 실제 저장 결과를 분리해서 봐야 합니다.
솔직한 한계
티스토리가 화면 구조를 바꾸면 이 도구는 멈춥니다. 브라우저를 조작하는 방식인 이상 피할 수 없습니다.
다만 코드가 손에 있으면 대응이 됩니다. 에러 메시지를 그대로 보여주고 수정을 요청하면, 셀렉터를 찾아 고치는 작업 자체를 맡길 수 있습니다. 종료된 API를 기다리는 것보다는 나은 상태입니다.
태그 상한도 알아둘 만합니다. 티스토리는 10개까지만 저장하고 초과분은 경고 없이 버립니다.
정리
공식 통로가 닫힌 서비스에 자동화를 붙일 때 신경 써야 할 건 발행 성공률이 아니라, 사실관계가 조용히 오염되는 경로입니다. 검사 계층을 나누고, 마지막에는 반드시 원본과 대조하고, 결과는 저장된 실물에서 확인하는 구조가 필요합니다.
만드는 과정 전체는 위 영상에 담았습니다. 궁금한 점은 오픈톡이나 영상 댓글로 알려주세요.