Puppeteerを使ってQrunchへクロス投稿する
更新日:2022.07.02
作成日:2020.04.20
QrunchとMediumに技術メモをクロス投稿する - SIS Lab
で「Qrunchに自動投稿できる仕組みを作る」という課題があったので、Puppeteer
で自動投稿できるようにしました。
Qrunch API
みたいなものがないか少し探してみましたが、なさそうだったのでPuppeteer
で実装しました。
何の変哲も無く、ただ、Qrunch
へログインして投稿するだけです。
ただ、ブログを書いた後に以下の作業を行うのは非常に面倒だったので、Qrunch
への投稿のハードルが低くなりました。
Qrunch
へログイン- Markdownをコピペ
- Hugo用のShortCodes変換
- Canonical URLにコピペする
(async () => {
const browser = await puppeteer.launch({
executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
headless: true,
});
const page = (await browser.pages())[0] || (await browser.newPage());
await page.setViewport({ width: 1280, height: 800 });
// Login to Qrunch
await page.goto('https://qrunch.net/login');
await page.type('#login_user_email', QRUNCH_ID);
await page.type('#login_user_password', QRUNCH_PW);
await page.click('input[type=submit]');
await page.waitFor(3000);
// Edit new post
console.log('start posting');
await page.goto('https://qrunch.net/dashboard/entries/edit');
await page.type('#entry-title', title);
await page.evaluate( (markdown) => {
document.querySelector('#edit-box').textContent = markdown;
}, markdown);
await page.type('input[name=canonical_url]', `${BLOG_URL}blog/${dateformat}/${slug}/`);
await page.click('#submit-button-icon');
await page.click('div[mode="draft"].submit-mode-child');
await page.click('#submit-button-icon');
await page.click('#submit-button-text');
サンプルは、以下のリポジトリをご覧ください。
meganii/puppeteer-qrunch: Auto posting tool for Qrunch
参考
Related contents
TECH
2020.07.04
puppeteerをAWS Lambdaで利用する
TECH
2020.01.30
PuppeteerのwaitForNavigationで正しくページ遷移を待つ
TECH
2017.08.22
PuppeteerでAmazonアフィリエイトのレポートを取得する