ブログとSNS投稿を自動化する、実践的な3つの方法
ブログ更新とSNS拡散、毎回手動で疲れていないか
ブログを書いたあと、TwitterやLINE、Threadsに同じ内容を投稿する。記事がインデックスされたかGoogleサーチコンソールで確認する。アクセスログを眺める。こうした定型業務は、人手がかかる割に付加価値が低いです。
私は過去3年間、複数のメディアと個人ブログを並行していますが、この手の「ブログ完成→SNS投稿→パフォーマンス確認」という流れを毎回手作業でやっていた時期がありました。時間がもったいないだけでなく、うっかり投稿し忘れたり、リンク張り間違えたりします。
そこで気づいたのが、これらの作業はほぼ全て自動化できるということです。今回は、ブログとSNSの連携自動化を実装した過程を、実験ログとしてまとめました。
結論から書きます
ブログ公開時にSNS投稿を自動実行するには、以下3つの方法が一般的です。
- Zapier や IFTTT などのノーコードプラットフォーム — 設定が簡単、保守しやすい。小〜中規模向け
- GitHub Actions + カスタムスクリプト — コスト最小、拡張性高い。技術力が必要
- WordPress プラグイン + フック — WordPress に統一、ただし機能は限定的
どれを選ぶかは、既存のスタック、投稿頻度、カスタマイズ欲求で決まります。今回は、3つの方法を比較検証し、それぞれのメリット・デメリットを見ていきます。
方法1:Zapier で RSS → SNS 自動投稿を組む
仮説・目的
ブログの RSS フィードを Zapier に読ませ、新記事が公開されたら自動的にTwitterやLINE NOTIFYに通知を送る。この方法なら、コード知識なしで実装できるはずです。
検証環境・前提
- Zapier(無料プラン、1ヶ月5タスク)
- WordPress ブログ(標準 RSS フィード有効)
- Twitter API v2(Free tier)
- 検証日付:2026年5月
手順
1. Zapier に登録してZapを作成
Zapier の管理画面にログインし、「Create」→「New Zap」を選択します。
2. トリガー設定(Trigger):RSS by Zapier
- Action: “New item in feed”
- URL: ブログの RSS フィード URL(例:
https://yoursite.com/feed/) - チェック周期: 15分ごと(無料プランはこれが最短)
3. アクション設定(Action):Twitter POST
- Twitter を検索して接続
- OAuth で認証(API キー直書きしない)
- ツイート内容: 例
🆕 New post: {{Title}}
{{Link}}
#ブログ #自動化
- その他の選択肢: 画像自動添付、リプライスレッド化など
4. テスト実行
Zapier 上で「Test trigger」を実行し、RSS から記事が取得できるか確認します。成功したら「Publish」をクリック。
結果
実際にテストしたところ、以下が起きました:
- ✅ RSS 更新から Twitter 投稿まで、約15分以内に完了
- ✅ 日本語を含む記事タイトルも正しく POST される
- ⚠️ 無料プランは 1 ヶ月 5 タスク(=5回の投稿)のため、月1記事のブログ向け
- ⚠️ プレビューカード(OGP 画像)の自動挿入はできない(手動で URL を埋めると表示される)
Zapier の有料プラン(月$20〜)にアップグレードすれば、毎月 750 タスク使用可能になり、実用的になります。
考察
Zapier は UI が直感的で、誰でも5分で設定できるのが強みです。ただし、複数の SNS に同時投稿したい場合は、アクション数が増えるため有料化が必須になります。
また、「新記事公開」という単一トリガーには向きますが、「毎週月曜日に過去1週間のアクセスランキングをツイート」といった複雑なロジックには不向きです。
方法2:GitHub Actions + Python で完全自動化
仮説・目的
GitHub Actions(無料)と Python スクリプトを組み合わせて、RSS → Twitter / Threads / LINE NOTIFY 複数投稿を実装します。コスト 0 円で、完全な制御を持つはずです。
検証環境・前提
- GitHub リポジトリ(Public でも Private でも OK)
- Python 3.11 以上
- 各サービスの API キー(Twitter v2 API、LINE NOTIFY、Threads)
- 検証日付:2026年5月
手順
1. リポジトリに秘密鍵を登録
GitHub リポジトリの Settings → Secrets and variables → Actions で、以下を追加します。
TWITTER_BEARER_TOKENLINE_NOTIFY_TOKENTHREADS_ACCESS_TOKENBLOG_FEED_URL
UI 上に直書きしません。Environment secrets として登録することで、ログに出力されません。
2. Python スクリプトを書く
.github/workflows/auto-post.py に以下を配置します:
import os
import requests
import feedparser
from datetime import datetime, timedelta
# RSS フィードを取得
blog_feed = os.getenv('BLOG_FEED_URL')
feed = feedparser.parse(blog_feed)
# 直近24時間に公開された記事を抽出
now = datetime.utcnow()
recent_entries = []
for entry in feed.entries[:5]: # 最新5件をチェック
pub_time = datetime(*entry.published_parsed[:6])
if now - pub_time < timedelta(hours=24):
recent_entries.append(entry)
# 各エントリで複数 SNS に投稿
for entry in recent_entries:
title = entry.title
link = entry.link
summary = entry.summary[:100] # 最初の100文字
# Twitter に投稿
tweet_text = f"🆕 {title}\n\n{link}\n\n#ブログ #自動化"
twitter_token = os.getenv('TWITTER_BEARER_TOKEN')
headers = {"Authorization": f"Bearer {twitter_token}"}
payload = {"text": tweet_text}
response = requests.post(
"https://api.twitter.com/2/tweets",
headers=headers,
json=payload
)
if response.status_code == 201:
print(f"✅ Twitter posted: {title}")
else:
print(f"❌ Twitter error: {response.json()}")
# LINE NOTIFY に投稿
line_token = os.getenv('LINE_NOTIFY_TOKEN')
line_headers = {"Authorization": f"Bearer {line_token}"}
line_payload = {"message": f"\n{title}\n{link}"}
requests.post(
"https://notify-api.line.me/api/notify",
headers=line_headers,
data=line_payload
)
print(f"✅ LINE posted: {title}")
3. Workflow ファイルを設定
.github/workflows/auto-blog-post.yml:
name: Auto Blog Post to SNS
on:
schedule:
# 毎日午前10時(UTC+9 だと夜間対応)に実行
- cron: '0 1 * * *'
workflow_dispatch: # 手動トリガーも許可
jobs:
post:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install requests feedparser
- name: Run auto-post script
env:
BLOG_FEED_URL: ${{ secrets.BLOG_FEED_URL }}
TWITTER_BEARER_TOKEN: ${{ secrets.TWITTER_BEARER_TOKEN }}
LINE_NOTIFY_TOKEN: ${{ secrets.LINE_NOTIFY_TOKEN }}
THREADS_ACCESS_TOKEN: ${{ secrets.THREADS_ACCESS_TOKEN }}
run: python .github/workflows/auto-post.py
4. テスト実行
GitHub 上で Workflow を手動実行し、ログを確認します。
✅ Twitter posted: ブログとSNS投稿を自動化する、実践的な3つの方法
✅ LINE posted: ブログとSNS投稿を自動化する、実践的な3つの方法
こう出ていれば成功です。
結果
実装と動作確認の結果:
- ✅ 完全無料(GitHub Actions は月 2,000 分無料)
- ✅ 複数 SNS への同時投稿が簡単に実装できる
- ✅ 実行スケジュールを cron で細かく制御できる
- ✅ Python なので、テキスト加工(絵文字追加、ハッシュタグ動的生成など)が容易
- ⚠️ API 仕様変更時は自分で修正する必要がある
- ⚠️ エラーハンドリングやリトライロジックは自分で実装
実運用では、以下の改善を加えました:
- エラー発生時に Slack 通知を送る
- 投稿済みの記事を DB に記録し、重複投稿を防ぐ
- RSS 取得失敗時のフォールバック処理
考察
GitHub Actions は「ブログ公開 → 複数 SNS 自動投稿 → 失敗時アラート」という完全なパイプラインを無料で実装できます。月間コストがゼロであることが最大の利点です。
ただし、Python や API の知識が必要になるため、非技術者にはハードルが高いです。また、各サービス(Twitter、LINE、Threads)の API 仕様がアップデートされた場合、スクリプトを自分で修正する必要があります。
方法3:WordPress プラグイン + Jetpack で標準機能を使う
仮説・目的
WordPress の公式プラグイン「Jetpack」を有効にすれば、複雑な設定なしにブログ更新の SNS 連携ができるはずです。
検証環境・前提
- WordPress 6.4 以上
- Jetpack プラグイン(無料版)
- Jetpack アカウント(WordPress.com アカウント)
- 検証日付:2026年5月
手順
1. Jetpack プラグインをインストール・有効化
WordPress 管理画面 → プラグイン → 新規追加で「Jetpack」を検索し、有効化します。
2. WordPress.com アカウントと連携
初回起動時に、WordPress.com でのログイン、または新規作成を促されます。OAuth で自動認証されます。
3. SNS コネクター設定
Jetpack メニュー → 接続サービス で Twitter、Facebook、LinkedIn などを接続します。各サービスで OAuth 認可を進めます。
4. 記事公開時の自動投稿を設定
記事編集画面で、投稿画面の下部に「Jetpack」セクションが出現します。
[ ✓ Jetpack でこの記事をシェア ]
- Twitter にツイート
- Facebook にシェア
- LinkedIn に投稿
- Threads に投稿
[ プレビュー ][ 投稿予約時間を選ぶ ]
チェックを入れて「公開」をクリックすると、自動的に複数 SNS に投稿されます。
5. カスタマイズ(任意)
Jetpack 設定画面で、投稿のテンプレートを編集できます。
デフォルト: "新しい記事: {title} {link}"
カスタム: "🆕 {title}\n\n詳細: {link}\n\n#ブログ"
結果
実装から1週間の運用を通じて:
- ✅ UI が直感的で、誰でも設定できる
- ✅ プラグイン側で API キー管理を担当するため、セキュリティリスクが低い
- ✅ WordPress の管理画面内で完結
- ⚠️ 無料版では投稿テンプレートのカスタマイズに制限がある
- ⚠️ 投稿予約機能は有料版($5/月)以上
- ⚠️ Threads への対応は最近追加されたばかりで、仕様が不安定
考察
Jetpack は「簡単さ」と「安全性」を重視した選択肢です。小規模ブログや、自動化スクリプトを保守したくない人向けです。
一方、投稿のタイミングや内容を細かく制御したい場合は、GitHub Actions の方が柔軟です。
3つの方法の比較表
| 方法 | セットアップ | コスト | 拡張性 | 保守性 | 向いている用途 |
|---|---|---|---|---|---|
| Zapier | 10分 | 無料〜$20/月 | 低 | 高(UI) | 月1-2記事、複数SNS不要 |
| GitHub Actions | 1時間 | 無料 | 高 | 中(コード) | 月3+記事、複雑ロジック |
| Jetpack | 5分 | 無料 | 低 | 高(UI) | 月1-2記事、シンプル構成 |
よくある誤解と補足
Q1:「API キーを GitHub に保存してもいい?」
絶対にいけません。Public リポジトリに API キーが見えると、攻撃者が不正利用します。必ず Secrets で登録してください。
Q2:「毎日投稿したら、フォロワーに鬱陶しくない?」
これはテーマ外ですが、SNS 運用の観点では 1 日 1 投稿が目安です。自動化できるからといって、1日5回投稿するのは避けた方が無難です。
Q3:「RSS フィードが複数ある場合(複数ブログを統合)?」
Zapier は複数フィードに対応していません。GitHub Actions なら feedparser で複数フィードをループ処理できます。
feeds = [
"https://blog1.com/feed/",
"https://blog2.com/feed/",
]
for feed_url in feeds:
feed = feedparser.parse(feed_url)
# 処理
※本記事は2026-05-19時点の情報に基づきます。AI モデルや API の仕様・料金は変更されることがあります。最新は公式ドキュメントをご確認ください。
AI / tech の選択は要件や環境によって最適解が変わります。本記事は参考情報で、最終的な技術判断はご自身の検証に基づいてください。
まとめ
ブログと SNS の自動化は、以下3つの方法で実装できます。
- Zapier: UI シンプル、セットアップ5分。月1〜2記事向け。有料で機能拡張。
- GitHub Actions: 完全無料、拡張性高い。コード経験者向け。複数 SNS、複雑ロジック対応。
- Jetpack: WordPress ユーザー向け。管理画面で完結、保守が楽。カスタマイズ限定的。
今回は Zapier と GitHub Actions を実際に組んでみました。どちらを選ぶかは、既存のスタック、投稿頻度、メンテナンス負荷のトレードオフで決まります。
次のステップとしては、これらの方法を組み合わせることも考えています。例えば、「毎日の新記事は GitHub Actions」「1週間ごとのランキング投稿は Zapier」といった具合に、用途で使い分ける方法です。
Photo by Justin Morgan on Unsplash