リード
こんにちは、ぽまらのです。
内省テック(Introspection Tech) のテーマで、X(@syouwanotaisyou) に毎日1本、仏教の教えと生活の実践を短く発信したいと思いました。
ただ、毎朝「調べて・書いて」は続きにくい。一方で、X への 完全自動投稿 は品質や規約の面でも不安があります。
そこで作ったのが、調査と文案作成だけを AI エージェントに任せ、確認と投稿は自分がやる半自動 の仕組みです。
実行は GitHub Actions、通知は Gmail、エージェント本体は Cursor SDK です。生成された文案は毎朝メールで届き、内容を確認してから @syouwanotaisyou に投稿しています。
この記事では、なぜ半自動にしたか、構成、つまずいた点、再現の要点をまとめます。
何を自動化し、何を人間がやるか
| 担当 | 作業 |
|---|---|
| エージェント | 題材調査、投稿文案作成、下書きファイル保存 |
| 人間(ぽまらの) | 内容確認、必要なら手直し、X(@syouwanotaisyou) にコピペ投稿 |
X API での自動投稿は 意図的に入れていません。理由は次の3つです。
- 品質 — 仏教の教えは出典不明の「名言」になりやすく、人間の目が必要
- 規約・炎上 — 自動投稿はアカウント停止リスクもゼロではない
- 文体 — 日本語 X は 140字上限。短く整える最終判断は自分でしたい
「毎日1本・続けられる」ことと「雑に流さない」ことのバランスを、半自動に寄せました。
投稿のテーマと1本の型
ブランド 内省テック に合わせ、次のテーマに固定しています。
- 一言 — 仏教の教え・概念(「〜と言われる」調。偽の「仏陀の言葉」は禁止)
- 今日の一歩 — 仕事・SNS・家事など、今日できる小さな実践
- 文字数 — 日本語 X は 140字以内(ハッシュタグ・改行も含む)
執着を「悪い癖」にしない — 気づいて距離を置く3つの練習 で書いた CBT・ACT 寄りの内省と矛盾しないよう、仕様書でトーンも縛っています。
曜日ごとに題材の軸をローテーション(気づく/無常/慈悲…)し、直近30日と同じ概念を避けるルールもエージェントに渡しています。
全体の流れ(構成図)
flowchart LR
subgraph cloud [GitHub Actions 毎朝7時 JST]
A[Cursor SDK] --> B[下書き .md 作成]
B --> C[リポジトリに commit]
B --> D[Gmail で通知]
end
E[ぽまらの] --> F[メールで確認]
F --> G[X に投稿]
D --> F
C --> F
もう少し噛み砕くと、次のとおりです。
- 毎朝 7:00(日本時間) — GitHub Actions が起動
- Cursor SDK — リポジトリ内の仕様書・プロンプトを読み、エージェントが1本生成
social/x-drafts/YYYY-MM-DD.md— 投稿本文と出典メモを保存- Gmail — 投稿本文をメールで送信(設定時)
- 自分 — メールまたは GitHub 上で確認 → @syouwanotaisyou に貼る
ソースコードは pomarano/x_auto_writing に置いています。
使った技術
| 要素 | 選んだもの | 理由 |
|---|---|---|
| エージェント実行 | Cursor SDK(@cursor/sdk) | 調査+ファイル保存まで一任しやすい |
| 定期実行 | GitHub Actions | PCの影響を受けない |
| 通知 | Gmail SMTP | 個人運用で設定しやすい |
| 投稿 | 手動 | 半自動方針どおり |
実行環境は最初から GitHub Actions にしました。
エージェントに渡している指示(要点)
エージェントへのプロンプトでは、次を必須にしています。
- 仕様書
x-shuuchaku-agent-spec.mdに従う - 出典不明の「仏陀の言葉」を使わない
- 投稿本文は 140字以内(保存前に文字数を数え直す)
- 同じ日のファイルが既にある場合は 二重生成しない(スキップ)
以前の AIハーネス実測記事 で書いたように、AI には「お願い」だけでなく ルールと検証 を渡す方が安定します。今回は文字数チェックや重複回避が、そのハーネスの簡易版だと思っています。
つまずいた点(正直なメモ)
メールが届かない
ワークフローは成功(緑)だったが、受信トレイに無い。→ 受信側でブロック されていただけ。送信元を許可リストに入れたら届くようになった。
手動実行なのにメールがスキップされた
「今日の下書きが既にリポジトリにある」と、当初は 新規作成時だけ メール送信していた。→ 手動実行(Run workflow)のときは 既存下書きでもメール するよう条件を修正。
Node.js 20 非推奨警告
GitHub Actions の checkout / setup-node / action-send-mail が古いと警告。→ v6 / v17 など Node 24 対応版に更新。
日本語 X の文字数
一度 280字想定で書いていたが、日本語投稿は140字 が上限。仕様とプロンプトを再調整した。
設定の概要(再現したい人向け)
細部はリポジトリ内の automation/x-daily/README.md に書いています。ここでは骨子だけ。
GitHub Secrets
| 名前 | 用途 |
|---|---|
CURSOR_API_KEY | Cursor SDK(Dashboard → API Keys) |
NOTIFY_EMAIL | 通知先 |
MAIL_USERNAME | 送信元 Gmail |
MAIL_APP_PASSWORD | Gmail アプリパスワード |
GitHub Variables
| 名前 | 値 |
|---|---|
X_DAILY_EMAIL_ENABLED | true |
動作確認
Actions タブから X Daily Draft を手動実行 → メールに投稿本文が届く → @syouwanotaisyou に貼れるか確認。
うまくいったこと・これから
うまくいったこと
- 毎朝、調査済みの文案がメールで届くリズムができた
- @syouwanotaisyou で毎日1本、内省テックの発信が続いている
- 「続ける」負荷が下がり、ブログ記事・執着アプリ(開発予定)と同じ世界観で X も回せる
これから
- 英語 X 用の別下書きは必要になったら追加
- 執着を手放す アプリ公開時に、週1程度でブログ URL を入れる運用
- 投稿済み
status: postedの管理を、もう少し楽にする
まとめ
- X 投稿を 完全自動 にせず、調査・文案だけ AI、投稿は人間 の半自動にした
- GitHub Actions + Cursor SDK + Gmail で、Mac スリープに依存しない毎朝運用ができる
- 投稿先は X @syouwanotaisyou。日本語 X は 140字、仏教テーマは 出典に注意 — ルールを仕様書とプロンプトに書いた
- つまずき(メールブロック、文字数、Actions 警告)はすべてログと条件で潰せた
エージェント記事の続きとして、「作って運用してみた」まで書けたのが今回です。同じように小さく半自動から始めるのが、個人ブログには合っていると感じています。

コメント