自分は2つの情報サイトを運営していて、記事の執筆は外部ライターにお願いしています。
納品された記事はGoogleDriveの共有フォルダにアップロードされるので、それをダウンロードして、見出しの調整やリンク設定をしてWordPressに下書き投稿する
——毎月この作業をやっていました。
やること自体は単純なんだけど、地味にストレスだったのが「いつ記事がアップされるか分からない」こと。
納品日が決まっているわけじゃなく、ライターが書き上がったタイミングでDriveにポンと置かれる。
それから連絡が来るわけでもない。
だから定期的に自分からDriveを覗きにいくしかなくて、これが意外と精神的にめんどくさかったんですよね。
「あ、まだ来てないな」を繰り返す感じ、伝わるかな?
で、これを何とか自動化できないかなと考えたて、ちょうど触り始めていたClaude Code(Anthropicが提供するCLIツール)に相談してみようと思いました。
ただ、ここで正直に言っておくと、自分はClaude Codeの「skill」機能なんて使ったことも作ったこともなかったし、最初から今回の仕組みが頭の中で描けていたわけでもありません。
初手は本当に雑で、「外部ライターがGoogleDriveに記事をアップして、自分がそれをWordPressに投稿してるんだけど、これどうにか自動化できない?」くらいのざっくりした相談をしただけです。
そしたらClaude Codeが「skill機能を使えばできますよ」と提案してくれて、そこから必要な構成の設計、Pythonスクリプトの作成、デバッグまで全部やってくれました。
自分がやったのは、Claudeから飛んでくる確認事項に答えていっただけ。
マジでコードは1行も書いていない。
この記事では、そんな仕組みの全体像と構築の流れを紹介したいと思います。
記事の目次
- この記事で実現すること ― Drive取得→整形→WordPress投稿の完全自動化
- そもそもClaude Codeの「skill」って何?
- 自動化する前の手作業、何が大変だったのか
- 構築の流れ①:API認証の準備 ― ここは自分でやる必要がある
- 構築の流れ②:Pythonスクリプト群の作成 ― 全部Claude Codeが書いた
- 構築の流れ③:SKILL.md(スキル定義)の作成 ― Claudeへの手順書を書く
- 構築の流れ④:投稿先サイトの自動判定 ― 下書き状態で振り分ける
- 構築の流れ⑤:cronで定期実行 ― 2時間おきに自動チェック
- バリデーションと整形 ― 記事の品質チェックもお任せ
- メール通知 ― 何が起きたか把握できる安心設計
- 実際に運用してみて感じたこと
- まとめ:Claude Codeは「相談相手」であり「実装者」だった
この記事で実現すること ― Drive取得→整形→WordPress投稿の完全自動化
ざっくり言うと、こんな流れを完全自動で回す仕組みを作りました。
[外部ライター] ↓ txtファイルをアップロード [Google Drive 共有フォルダ] ↓ 2時間おきに自動チェック [Claude Code] ↓ skillが実行される ├─ Google Driveからファイル取得 ├─ バリデーション(記事構造チェック) ├─ 整形(見出しタグ変換、リンク追加) ├─ 投稿先サイトの自動判定 ├─ WordPressへ下書き投稿 ├─ Google Driveのファイル名変更(処理済みが分かるように) └─ メールで結果通知
ポイントは、Driveから記事を取ってきてWordPressに投稿するだけじゃなく、途中で見出しの整形やリンクの挿入、投稿先サイトの振り分け、処理済みマークまで全部やってくれるところ。
しかもこれが2時間おきに自動で走るので、自分はDriveを確認しにいく必要すらなくなりました。
では、この仕組みをどうやって作ったのか、順を追って紹介していきます。
そもそもClaude Codeの「skill」って何?
構築の流れに入る前に、今回のキーになるClaude Codeの「skill」機能について簡単に説明しておきます。
Claude Codeには、特定の作業手順をMarkdownファイルに書いておくと、その手順に沿ってClaudeが自律的に作業を進めてくれる「skill」という仕組みがあります。
具体的には、プロジェクト内の`.claude/skills/スキル名/SKILL.md`というファイルに「こういう順番でこれをやってね」と書いておくだけ。
たとえば今回の場合、「Google Driveからファイルを取得して→整形して→WordPressに投稿して」という一連の手順をSKILL.mdに書いておくと、Claudeがその通りにPythonスクリプトを実行したり、ファイルを操作したりしてくれるわけです。
「え、それってただのシェルスクリプトと何が違うの?」と思うかもしれません。
大きな違いは、Claudeが文脈を理解して柔軟に動けること。
たとえば今回の仕組みでは、記事の末尾に挿入するリンク誘導の文言をClaudeがその都度生成しています。
記事の内容に合わせて毎回違う自然な文言を作ってくれるので、テンプレートのローテーションでは実現しにくい部分です。
つまりskillは「手順書を渡したらAIがよしなにやってくれる仕組み」と思ってもらえればイメージしやすいかなと思います。
自動化する前の手作業、何が大変だったのか
ここで改めて、自動化する前にやっていた作業を整理しておきます。
流れとしてはこう。
1. Google Driveを確認して、新しい記事ファイルがアップされているか見る
2. あればダウンロードして中身を確認
3. 見出しの調整(H2、H3の設定)
4. 外部リンクの挿入
5. WordPressに下書き投稿(2サイト分)
1回あたりの作業時間はそこまで長くないんですが、問題は「いつやるか分からない」ことなんですよね。
さっきも書いた通り、ライターの納品タイミングは不定で、連絡もない。
だから月初あたりに「そろそろ来てるかな?」とDriveを開いて、来てなかったらまた数日後に確認して……みたいなことをやっていました。
作業そのものより、この「いつ来るか分からないタスクを頭の片隅に置いておく」のが地味にしんどかった。
自分のペースで進められないタスクって、実際の作業量以上に負担に感じます。
これが2サイト分あるわけで、「もうこれ、自動で回せるようにしたい」と思ったのが今回の出発点です。
構築の流れ①:API認証の準備 ― ここは自分でやる必要がある
仕組みの構築に入る前に、まずは外部サービスとの接続に必要な認証情報を準備する必要があります。
ここはさすがに自分で手を動かすパートです。
といっても、何を準備すればいいかはClaude Codeが教えてくれたので、自分はその通りに進めるだけでした。
用意したのは以下の3つ。
– Google Drive API:サービスアカウントを作成して認証用のJSONファイルを取得。共有フォルダにサービスアカウントのメールアドレスを共有設定する
– WordPress REST API:各サイトの管理画面から「アプリケーションパスワード」を発行
– Gmail SMTP:処理結果の通知メール用にアプリパスワードを発行
どれも基本的には管理画面からポチポチ設定していくだけなので、そこまで大変ではないです。
Google Drive APIのサービスアカウント作成も、Googleの管理画面でアカウント名を入力するくらいで、あとは画面の案内に沿って進めれば大丈夫でした。
逆に言うと、自分が手を動かしたのはほぼこの認証準備くらい。
ここから先の構築は、ほぼClaude Codeとの対話で進みました。
構築の流れ②:Pythonスクリプト群の作成 ― 全部Claude Codeが書いた
認証情報が揃ったら、いよいよ自動化の中身を作っていきます。
……と言っても、自分が作ったわけじゃないんですけどね。
Claude Codeが「この処理にはこういうスクリプトが必要ですね」「ファイル取得と投稿は分けた方がいいですね」と提案してくれるので、自分は「それでいいよ」とか「Google DriveのフォルダIDはこれだよ」みたいに返すだけ。
設計もコードも動作確認も、全部Claude Codeがやってくれました。
最終的に出来上がったスクリプト群はこんな構成です。
| スクリプト | 役割 |
| `config.py` | プロジェクト共通のパス設定 |
| `gdrive_fetch.py` | Google Driveから未処理ファイルの一覧を取得 |
| `gdrive_download.py` | ファイルをダウンロードしてテキスト内容を取得 |
| `gdrive_rename.py` | 処理済みと分かるようにファイル名を変更 |
| `txt_format.py` | テキストのバリデーションと整形(見出しタグ変換など) |
| `wp_post.py` | WordPressへの下書き投稿 |
| `pipeline.py` | 上記すべてを一括実行するオーケストレーター |
| `notify.py` | 結果通知メールの送信 |
8つもスクリプトがあると「うわ、大変そう」と思うかもしれません。
正直、自分も最初に全体像を見たときは「こんなに要るの?」と思いました。
でも実際には、Claude Codeが「この処理は分けた方がいいですね」と判断して勝手に分割してくれたもので、自分が設計したわけじゃないです。
しかもエンコーディングの自動判定(UTF-8、CP932、Shift_JIS、EUC-JPを順に試行)みたいな、自分じゃ思いつかなかったであろう配慮まで入っていて、外部ライターの環境がバラバラでも問題なく動くようになっています。
こういう「自分が気づいてない課題まで先回りして対応してくれる」のが、Claude Codeに丸ごと任せるメリットだなと感じました。
構築の流れ③:SKILL.md(スキル定義)の作成 ― Claudeへの手順書を書く
スクリプトが揃ったら、次はClaude Codeに「どの順番で何を実行するか」を教えるためのSKILL.mdを作成します。
これもClaude Codeが書いてくれました。
SKILL.mdに記述された処理の流れはこんな感じです。
1. Google Driveから未処理ファイルの一覧を取得
2. 1件だけ取り出してダウンロード
3. Claudeがリンク誘導の文言を生成(記事内容に合わせて毎回異なる自然な文言を作る)
4. バリデーション→整形→投稿先判定→WordPress投稿→ファイル名変更をパイプラインで一括実行
5. 結果をメールで通知
ここで注目してほしいのがステップ3です。記事の末尾に挿入するリンク誘導の文言を、Claudeがその都度生成しています。
「skill」セクションでも触れましたが、これがAIにやらせる意味があるポイントで、記事の内容を読んだうえで自然な誘導文を毎回作ってくれます。
固定テンプレートのローテーションだとどうしてもパターン化するので、ここはClaude Codeならではの強みですね。
あと、1回の実行で処理するのは1記事だけというルールにしています。
大量にアップロードされていても1件ずつ。
万が一何か問題が起きたときに、影響範囲を最小限に抑えるためです。
これもClaude Codeが「1回1記事の方が安全ですね」と提案してくれたものです。
構築の流れ④:投稿先サイトの自動判定 ― 下書き状態で振り分ける
2つのサイトを運営しているので、「この記事はどっちのサイトに投稿するか」を判定する必要があります。
最初は「サイトAに投稿して」「サイトBに投稿して」と自分が指示する仕様だったんですが、それだと完全自動化にならない。
定期実行するなら、投稿先も自動で決まってほしいですよね。
そこで改修したのが、各サイトの下書き状態を見て投稿先を振り分けるロジックです。
– サイトA → サイトB の順で、投稿カテゴリに下書きがあるかチェック
– 下書きがないサイトに投稿する
– 両方に下書きがある場合は投稿せずスキップ(ファイルは未処理のまま残して、次回に再判定)
考え方はシンプルで、「下書きがない=前の記事を公開済み=次の記事を入れてOK」ということ。
自分が下書きを公開するだけで、次の実行時にそのサイトへ自動的に新しい記事が投稿されます。
これによって2サイト間で自然に記事が分配されるようになりました。
運営者としてやることは「下書きを確認して公開する」だけ。
投稿先を意識する必要がなくなったのは地味にラクです。
構築の流れ⑤:cronで定期実行 ― 2時間おきに自動チェック
skillが完成したら、あとはこれを定期的に実行するだけです。
Claude Codeには`claude -p`という非対話モードがあって、プロンプトを渡すとそのまま実行して終了してくれます。
これをmacOSのcrontabに登録して、2時間おきに走らせています。
0 */2 * * * cd "プロジェクトディレクトリ" && claude -p "wp-auto-postスキルを実行して"
2時間おき(0:00、2:00、4:00……)にClaude Codeが起動して、Driveに未処理ファイルがあれば投稿、なければ何もせず終了。
シンプルです。
ちなみに、Claude Codeにはリモートスケジュール機能(Remote Trigger)という、クラウド上で定期実行できる仕組みもあるんですが、今回はローカルに保存してある認証情報(Google DriveのJSONファイルなど)にアクセスする必要があるため使えませんでした。
ローカルのcronで十分だったので、結果的にはこれでよかったかなと思います。
バリデーションと整形 ― 記事の品質チェックもお任せ
記事をWordPressに投稿する前に、テキストの構造チェック(バリデーション)と整形も自動で行っています。
バリデーション(構造チェック)
投稿前に以下をチェックして、異常があればエラーとしてメールで通知してくれます。
– タイトル(1行目)が空でないか
– 4行以上の連続空行がないか
– H2見出しが1つ以上あるか
– 「まとめ」のH2見出しがあるか
– 見出し構造がおかしくないか(H2より前にH3が来ていないかなど)
外部ライターの記事なので、たまにフォーマットが崩れていることもあります。
それをそのまま投稿してしまうのを防げるのは安心感がありますね。
整形(テキスト→HTML変換)
バリデーションを通過したら、テキストファイルをWordPress投稿用のHTMLに変換します。
– 1行目 → 記事タイトル
– `■`で始まる行 → `<h3>`タグ
– 2行以上の空行の後の短い行(60文字以下、句点で終わらない) → `<h2>`タグ
– 記事末尾にリンクを追加(文言はClaudeが毎回生成)
この整形ルールも、自分が「見出しはこういうルールで書いてもらってる」と伝えたら、Claude Codeがそれに合わせた変換ロジックを組んでくれたものです。
メール通知 ― 何が起きたか把握できる安心設計
自動で動く仕組みだからこそ、「ちゃんと動いたのか」「何か問題があったのか」を把握できることが大事ですよね。
この仕組みでは、処理結果をメールで通知するようにしています。
| 状況 | 通知 |
| 投稿成功 | あり(投稿先サイト、記事タイトル、編集URLを記載) |
| バリデーションエラー | あり(エラー内容を記載) |
| その他エラー | あり(エラー内容を記載) |
| 両サイト下書きありでスキップ | あり(スキップ理由を記載) |
| 未処理ファイル0件 | なし |
未処理ファイルが0件のときだけ通知しないようにしています。
2時間おきに動くので、毎回「ファイルはありませんでした」と飛んでくるとさすがに煩わしいので。
投稿が成功したときはWordPressの編集画面URLも一緒に届くので、メールからそのまま記事を確認して公開する、という流れがスムーズにできます。
実際に運用してみて感じたこと
この仕組みを動かし始めてから、あの「そろそろDrive確認しなきゃ」というストレスが完全になくなりました。
メールが届いたら記事を確認して公開するだけ。
それだけです。
運用していて特にいいなと思ったのは、投稿先の自動判定ロジック。
下書きを公開すれば次の記事が自動で入ってくるので、自分のペースで消化していけます。
「あのサイトの記事まだ投稿してなかった」みたいな抜け漏れもなくなりました。
エラーが出たときもメールで教えてくれるので、放置して気づかないということもありません。
バリデーションエラーでライターの記事フォーマットの問題を早めに拾えたこともあって、品質チェックとしても機能しています。
あと、これは構築のプロセスについてですが、改めて振り返ると「自分は本当にコードを書いていないな」と実感します。
API認証の準備は管理画面のポチポチで済んだし、スクリプトの設計・実装・デバッグは全部Claude Code。
自分がやったのは、Claude Codeからの「フォルダIDは何ですか?」「投稿カテゴリはどれですか?」みたいな質問に答えることと、「それでいいよ」と方針を承認することだけでした。
「プログラミングができないと自動化はできない」と思っている人がいたら、Claude Codeのskill機能は試してみる価値があると思います。
必要なのはコーディングスキルじゃなくて、「自分が何をしたいか」を伝えること。
あとはClaudeが形にしてくれます。
まとめ:Claude Codeは「相談相手」であり「実装者」だった
今回の仕組みを振り返ると、自分の役割は「こんなことで困ってる」を伝えて、Claude Codeからの確認に答えただけでした。
構成の設計、Pythonスクリプトの作成、SKILL.mdの記述、デバッグまで、全部Claude Codeがやってくれています。
技術スタック的にはこんな感じです。
– Claude Code(Anthropic公式CLI)+ skill機能
– Python 3.12(venv環境)
– Google Drive API v3
– WordPress REST API
– Gmail SMTP
– macOS crontab
こう書くと結構ガチの技術構成に見えますが、自分がこれらを直接触ったかというと、ほぼ触っていません。
Claude Codeが全部つないでくれました。
skill機能はまだ知名度が低いですが、「手順書を渡せばAIが自律的に作業してくれる」という仕組みはかなり強力です。
定型作業の自動化を考えている人は、ぜひ一度試してみてください。
雑な相談から始めても、ちゃんと形になりますよ。

