안녕하세요, 가야태자 @talkit 입니다.
스팀잇에 매일 글을 올리고 있습니다. 주말에도요.
그런데 매일 하는 일 중에 제일 지겨운 게 태그였습니다. 열 개씩 하나하나 치고 엔터를 열 번 눌러야 하거든요. 제목과 본문은 붙여넣기 한 번이면 끝나는데 말이죠.
게다가 태그에는 규칙이 있습니다.
kr 반드시 첫 번째
talkit 반드시 포함
최대 열 개첫 태그가 그 글의 분류가 됩니다. kr 이 앞에 없으면 #kr 로 안 올라갑니다. 그런데 열 개를 순서 신경 쓰며 치다 보면 이게 밀립니다. 그리고 오류가 안 납니다. 그 태그로 아무도 안 찾아올 뿐이라 발행하고도 모릅니다.
그래서 파이썬으로 도구를 만들었습니다. 원고 파일 하나를 넘기면 제목·본문·태그가 채워지고 멈춥니다. 확인하고 발행 버튼만 누르면 끝이고요.
만들고 나서 생각보다 쓸 만해져서, 같이 쓰실 분이 계시면 나누려고 합니다.
무엇을 하나
| 글쓰기 화면 채우기 | 제목 · 본문 · 태그 |
| 태그 규칙 검사 | kr 이 첫 번째인지, 필수 태그가 있는지, 열 개를 넘는지 |
| 원고 고르는 화면 | 두 패널. 왼쪽 발행 대기, 오른쪽 발행 완료 |
| 발행 전 점검 | 인사말 · 공인 IP · 빈 링크 · 자리표시자를 잡습니다 |
| 현황 보기 | 진행 상황, 빈 날, 깨진 링크 |
손이 제일 많이 가는 자리를 줄이면서, 그 자리에서 틀리기 쉬운 것도 같이 막는 것. 전부 자동화하는 것보다 이 편이 낫더군요.
왜 API가 아니라 브라우저인가
스팀에는 API가 있습니다. 포스팅 키만 있으면 블록체인에 바로 쓸 수 있고요. 화면 구조가 바뀌어도 안 깨지고 코드도 훨씬 짧습니다.
그런데 안 썼습니다. 이유가 둘입니다.
하나 — 키를 프로그램에 줘야 합니다.
이 도구는 포스팅 키를 받지도, 읽지도, 저장하지도 않습니다. 로그인 화면을 띄우고 기다릴 뿐이고, 키는 사용자가 직접 칩니다. 프로그램이 키를 아예 모르면 흘릴 걱정도 없습니다.
둘 — 보팅 때문입니다.
API로 바로 올리면 완전 자동이 되는데, 저는 steemx.org 를 거쳐 써야 거기서 보팅을 받습니다. 보상이 달린 문제라 웹 화면으로 갔습니다.
어디서 멈추는가
이게 이 도구의 성격입니다. 전부 자동으로 하지 않습니다.
| 프로그램 | 제목 · 본문 · 태그 |
| 사람 | 캡차 · 발행 버튼 |
스팀잇은 지울 수가 없습니다. 블록체인이니까요. 잘못 올린 글은 내리는 게 아니라 흔적이 남습니다. 되돌릴 수 없는 일을 프로그램에 맡기지 않는다 — 그거 하나였습니다.
캡차도 건드리지 않습니다. 사람이 사람이라는 걸 확인하는 절차입니다. 우회할 방법을 찾는 게 아니라 그 자리에서 멈추고 제가 풉니다.
그리고 신기하게도, 어디서 멈출지를 먼저 정하니 만들 게 줄었습니다. 발행 확인 처리, 실패 시 되돌리기, 캡차 대응 — 전부 안 만들어도 됐거든요.
왜 공개가 아니라 프라이빗인가
저장소를 열어 둘까 고민하다가 프라이빗으로 정했습니다. 이유가 셋입니다.
① 화면이 바뀌면 깨집니다
이 도구는 글쓰기 화면의 구조에 매여 있습니다. 입력칸을 무엇으로 찾는지, 태그 칩이 어떻게 생겼는지 — 전부 오늘 그렇다는 것이지 내일도 그렇다는 보장이 없습니다.
공개해 두면 그게 제 일이 됩니다. 누가 "안 되는데요" 하면 고쳐 드려야 할 것 같고, 안 고치면 방치한 게 되고요. 저는 그 약속을 할 수 없습니다.
② 계정을 다루는 도구입니다
키를 파일에 넣지는 않습니다. 사람이 직접 로그인하고 그 세션만 프로그램이 이어 씁니다.
그래도 어디서 멈추는지, 세션 파일이 어디 남는지를 모르고 돌리면 곤란해질 수 있습니다. 받아 가실 때 한마디 얹을 수 있는 게 낫습니다.
③ 아직 제 것에 맞춰져 있습니다
파일명 규칙 [채널] - 발행일자 - 제목.md
폴더 구조 <발행처>/<발행월>/
태그 규칙 kr 첫 번째, 제 필명 필수이대로면 그냥 안 돌아갑니다. 고쳐 쓰셔야 하고, 그러려면 코드를 읽으셔야 합니다.
같이 쓰실 분
저장소는 여기 있습니다.
지금 눌러 보시면 404가 뜰 겁니다. 없는 주소라서가 아니라 프라이빗이라 그렇습니다. 초대를 받으신 계정으로 로그인하셔야 열립니다.
GitHub 계정을 댓글로 남겨 주시면 초대해 드리겠습니다. 계정 아이디를 드러내기가 좀 그러시면 비공개 댓글로 주셔도 됩니다.
⚠️ 다만 이건 미리 말씀드려야겠습니다.
비공개 댓글로 주시면 이 블로그에서는 저만 봅니다. 그런데 초대가 되고
나면 저장소에 들어와 계신 다른 분들은 서로의 계정을 보실 수 있습니다.
깃허브가 참여자 목록을 그렇게 보여 줍니다.그러니까 「블로그 댓글에 안 보이게」는 되는데, 「아무도 모르게」는 안 됩니다.
부계정으로 오셔도 괜찮습니다 ^^
다만 이것만 알고 오세요.
- 깨질 수 있습니다. 스팀잇 화면이 바뀌면 그날로요
- 그대로는 안 돌아갑니다. 파일명·폴더 규칙을 고치셔야 합니다
- 파이썬을 읽으실 수 있어야 합니다. 설치만 하고 쓰는 물건이 아닙니다
그래도 괜찮으시면 환영합니다. 특히 원고를 미리 써 두고 돌리시는 분께는 값을 할 겁니다.
무엇을 쓰는지도 적어 둡니다.
Python 3.10 이상
Playwright (브라우저를 프로그램으로 몰기 위해)
그 밖에는 표준 라이브러리만의존성을 일부러 안 늘렸습니다. 하나 늘어날 때마다 나중에 깨질 곳이 하나 늘어나니까요.
티스토리용도 있긴 합니다 ^^
여기까지 읽으신 분 중에 "스팀잇 말고 티스토리는요?" 하실 분이 계실 것 같습니다.
만들었습니다. 지금 이 글도 그걸로 올라갑니다.
다만 그쪽은 아직 못 나눕니다. 훨씬 험하거든요. 스팀잇은 입력칸 셋에 채워 넣으면 끝인데, 티스토리는 마크다운 모드로 바꿔야 하고 카테고리를 골라야 하고 예약일시를 넣어야 합니다.
그러다 빈 글을 하나 발행했습니다. 화면에는 본문 3,310자가 멀쩡히 보였고 터미널에도 ✅ 입력 완료 3310자 라고 찍혔는데, 발행하고 보니 제목만 있고 내용이 없었습니다.
제 도구가 저에게 거짓말을 한 겁니다.
이 이야기는 9월 14일부터 매주 월요일, 일곱 편으로 따로 적겠습니다. 사고가 한 편에 담을 양이 아니었습니다 ^^;;
티스토리 쪽은 그 연재가 끝나고, 좀 더 단단해지면 그때 다시 말씀드리겠습니다.
읽어 주셔서 감사합니다.
'DevOps·CI·CD' 카테고리의 다른 글
| [반자동 포스팅기] 3. 손으로 눌러도 안 됐습니다 (0) | 2026.09.28 |
|---|---|
| [반자동 포스팅기] 2. 제가 만든 도구가, 저에게 거짓말을 했습니다 (0) | 2026.09.21 |
| Kafka를 못 띄워 Python으로 MySQL 데이터를 복사해 본 실험 — CDC와는 달랐습니다 (0) | 2026.09.18 |
| 1GB 서버에서 Kafka 3.5.1 싱글 노드 설치에 실패했습니다 — Java 8·ZooKeeper 레거시 기록 (0) | 2026.09.16 |
| [반자동 포스팅기] 1. 어디까지 자동으로 하고, 어디서 멈출 것인가 (0) | 2026.09.14 |