본문 바로가기

Claude 스킬로 티스토리 자동 포스팅 만들기 [2편] — Playwright 구현

@밀양박씨!2026. 4. 24. 14:23

🔐 1. 카카오 로그인 자동화

티스토리는 대부분 카카오 계정으로 로그인합니다. Open API가 없으니 브라우저를 직접 조작해야 합니다.

page.goto("https://www.tistory.com/auth/login")
page.click("a.btn_kakao")
page.fill("#loginId--1", email)
page.fill("#password--2", password)
page.click("button.btn_g.highlight")
page.wait_for_load_state("networkidle")

2단계 인증이 설정된 계정은 쿠키를 저장해 재사용하는 방식으로 처리했습니다. 한 번만 수동 로그인하면 이후에는 ~/.tistory_cookies.json을 자동으로 불러옵니다.

📝 2. 에디터 자동 감지

티스토리 에디터는 세 가지 방식이 혼재합니다. 어떤 에디터가 로드될지 모르기 때문에 순서대로 시도하는 자동 감지 로직을 만들었습니다.

def detect_and_fill_editor(page, html_content):
    # 1순위: iframe 에디터 (TinyMCE)
    try:
        frame = page.frame("editor-tistory_ifr")
        frame.evaluate(f'document.body.innerHTML = `{html_content}`')
        return True
    except: pass

    # 2순위: textarea 에디터
    try:
        page.locator("textarea#content").fill(html_content)
        return True
    except: pass

    # 3순위: contenteditable (ProseMirror)
    try:
        editor = page.locator(".ProseMirror").first
        editor.evaluate(f'(el) => {{ el.innerHTML = `{html_content}` }}')
        return True
    except: pass

🚀 3. 발행까지 전체 파이프라인

  1. 제목 입력 → #post-title-inp
  2. 카테고리 선택 → .category-btn
  3. 내용 입력 → 에디터 자동 감지
  4. 태그 입력 → #tagText에 하나씩 Enter
  5. 발행 버튼 클릭 → button:has-text('발행')

각 단계마다 스크린샷을 저장해 문제 발생 시 디버깅이 쉽도록 했습니다.

다음 편에서는 실제 실행 결과와 발견한 한계점을 공유합니다.

밀양박씨!
@밀양박씨! :: 박씨의 개발블로그

lovebotw049 님의 블로그 입니다.

목차