Playwright를 활용한 note.com 자동 게시

일본 마케팅에 도움이 되길 바라며

by 민은퇴

매일 note.com에 기사를 올리고 있다면, 이 글이 도움이 될 거예요.

로그인하고, 글쓰기 누르고, 제목 넣고, 본문 붙여넣고… 매번 반복되는 이 과정, 자동화할 수 있습니다.

컴퓨터가 사람처럼 브라우저를 열고, 로그인하고, 글을 써주는 도구가 있어요. Playwright라는 건데, 이름은 어렵지만 쓰는 건 생각보다 간단합니다.

결론부터 말하면 이렇게 됩니다.

터미널에 한 줄 입력하면, 브라우저가 자동으로 열리고 로그인부터 글 입력까지 다 해줍니다. 내가 할 일은 내용 확인하고 「公開」 버튼 누르는 것뿐이에요.


준비물

컴퓨터 (Mac 또는 Windows), note.com 계정, 그리고 10분 정도의 시간이면 충분합니다.


1단계: Node.js 설치하기

Playwright는 Node.js라는 프로그램 위에서 돌아갑니다. 설치는 간단해요.

nodejs.org에 접속해서, 왼쪽에 있는 초록색 LTS 버튼을 누르면 설치 파일이 다운로드됩니다. 실행해서 계속 Next만 누르면 끝이에요.

설치가 됐는지 확인하려면, Mac은 터미널을, Windows는 명령 프롬프트를 열고 아래를 입력합니다.

node --version

v20 같은 숫자가 나오면 성공입니다.


2단계: 프로젝트 폴더 만들기

터미널에서 아래 명령어를 한 줄씩 입력하세요.

mkdir note-auto

cd note-auto

npm init -y

npm install playwright

npx playwright install chromium

무슨 뜻이냐면, note-auto라는 폴더를 만들고, 거기에 Playwright와 크롬 브라우저를 설치하는 겁니다. 약 2분이면 됩니다.


3단계: 스크립트 만들기

note-auto 폴더 안에 post.mjs라는 파일을 하나 만듭니다. 메모장이나 텍스트 편집기 아무거나 괜찮아요.

아래 코드를 통째로 복사해서 붙여넣으세요. 수정할 부분은 딱 두 군데, 이메일과 비밀번호뿐입니다.

import { chromium } from 'playwright';

const NOTE_EMAIL = '

your-email@example.com

';

const NOTE_PASSWORD = 'your-password';

const title = process.argv[2];

const body = process.argv[3];

async function postToNote(title, body) {

const browser = await chromium.launch({ headless: false });

const page = await browser.newPage();

console.log('로그인 중...');

await page.goto('https://note.com/login');

await page.waitForLoadState('networkidle');

await page.fill('input[name="login"]', NOTE_EMAIL);

await page.fill('input[name="password"]', NOTE_PASSWORD);

await page.click('button[type="submit"]');

await page.waitForLoadState('networkidle');

await page.waitForTimeout(3000);

console.log('글쓰기 페이지 이동...');

await page.goto('https://note.com/notes/new');

await page.waitForLoadState('networkidle');

await page.waitForTimeout(3000);

console.log('제목 입력 중...');

const titleEditor = page.locator('[placeholder*="タイトル"], h1[contenteditable]').first();

await titleEditor.click();

await titleEditor.fill(title);

await page.waitForTimeout(1000);

console.log('본문 입력 중...');

const bodyEditor = page.locator('.ProseMirror, []').last();

await bodyEditor.click();

for (const line of body.split('n')) {

await page.keyboard.type(line, { delay: 10 });

await page.keyboard.press('Enter');

}

console.log('입력 완료! 브라우저에서 확인 후 公開 버튼을 눌러주세요.');

await page.waitForTimeout(600000);

await browser.close();

}

postToNote(title, body);

이메일과 비밀번호를 본인 것으로 바꿨으면 저장합니다.


4단계: 실행하기

터미널에서 아래처럼 입력하면 됩니다.

node post.mjs "仮想通貨の確定申告ガイド" "記事の本文がここに入ります。"

그러면 이런 일이 벌어집니다.

크롬 브라우저가 자동으로 열립니다. note.com 로그인 페이지가 뜨고, 이메일과 비밀번호가 알아서 입력됩니다. 로그인이 되면 글쓰기 페이지로 이동합니다. 제목이 입력되고, 본문이 한 줄씩 타이핑됩니다.

그리고 멈춥니다.

이 시점에서 브라우저를 보면, 기사가 다 작성된 상태예요. 내용을 눈으로 확인하고, 괜찮으면 「公開」 버튼을 누르면 게시 완료입니다.


알아두면 좋은 것들

note.com은 공식 API를 제공하지 않아서, 이 방법은 사람이 하는 행동을 그대로 흉내내는 방식입니다. 그래서 note.com이 디자인을 바꾸면 스크립트가 안 될 수도 있어요. 그때는 코드를 조금 수정해야 합니다.

그리고 비밀번호가 파일에 직접 들어가니까, 이 파일은 다른 사람과 공유하지 마세요.

2단계 인증(2FA)을 쓰고 있다면 자동 로그인이 안 됩니다. 2FA를 끄거나, 다른 방식으로 세션을 유지해야 합니다.


정리

매일 반복되는 note.com 게시 작업에서, 로그인과 글 입력 과정을 자동화했습니다.

내가 하는 일은 터미널에 한 줄 입력하고, 브라우저에서 「公開」 버튼 한 번 누르는 것뿐이에요.

세금이나 법률 같은 민감한 주제의 기사라면, 게시 전에 한 번 확인하는 이 반자동 방식이 오히려 안전합니다. 완전 자동 게시도 기술적으로는 가능하지만, 잘못된 내용이 그대로 공개될 위험이 있으니까요.

10분 세팅으로, 매일 5분씩 아끼는 작은 자동화입니다.

작가의 이전글당신의 회사는 리소스가 절대 부족하지 않다.