【開発日記】AIエージェントHermesにSNS投稿を任せる:Postizをローカルで動かして承認つきで接続

【開発日記】AIエージェントHermesにSNS投稿を任せる:Postizをローカルで動かして承認つきで接続

とむ

とむ

自分のPCで常駐させているAIエージェント「Hermes Agent」に、SNSの投稿を任せる準備をしました。OSSのSNS予約投稿ツール「Postiz」をローカルのDockerで動かしてHermesから接続し、Mastodonへの下書き作成・確認・削除までを、承認つきで動かせるところまで来ました。実際の公開はまだしていません。

今日やったこと

  • Hermesで使ってみたいOSSを2つ比較(SNS予約投稿のPostizと、エージェントの記憶を扱うHoncho)。目的に合うPostizから試すことにした
  • Postizはクラウド版もあるが、ローカルのDockerで動かすことにした(7コンテナ・メモリ約2.8GB)
  • 公式のdocker-composeを調整(自分のPCからだけ見えるように待ち受けを限定、イメージのバージョンを固定、デバッグ用のコンテナを外す)
  • Mastodon(mastodon.social)を接続
  • HermesからPostizにMCPで接続し、Postiz側の20個のツールのうち、使う6個だけを登録
  • 書き込み系のツールを呼ぶたびに、Discordに承認ボタンが出るように設定
  • Discordから「チャンネル一覧 → 下書き作成 → 一覧で確認 → 削除」まで試して、動作を確認

詰まったところと、どう解いたか

1. 投稿ツールが、下書き・予約・即時投稿を1つで兼ねていた

Postizの投稿ツールは、引数の type で draft(下書き)・schedule(予約)・now(即時投稿)を切り替える作りでした。使うツールを名前で絞る方法では「下書きだけ許可する」ができません。そこで、HermesのMCP設定にある trust: untrusted を使いました。読み取り専用の印(readOnlyHint: true)が付いていないツールを呼ぶたびに、承認を求める設定です。Postizは投稿や削除のツールに readOnlyHint: false を付けていたので、狙いどおり毎回承認ボタンが出ました。設定の形はこんな感じです。

mcp_servers:
  postiz:
    url: <PostizのURL>/api/mcp
    trust: untrusted        # 書き込み系は毎回承認
    tools:
      include:              # 使うツールだけ登録
        - integrationList
        - integrationSchedulePostTool
        - postsListTool

2. ソースに書かれた名前と、実際に公開されるツール名が違った

ソースを読んで、許可リストに schedulePostTool と書きました。ところが、実際にMCPで公開されていた名前は integrationSchedulePostTool でした。許可リストにない名前はエラーにならずに無視されるので、投稿ツールが読み込まれていませんでした。実際に接続してツール一覧を取り、名前を直しました。ソースを読むだけで決めずに、つないで確かめるのが大事だと分かりました。

3. 本文が承認ボタンより後に届いた

Hermesには「ツールを呼ぶ前に、投稿する本文をチャットに書いて」と指示していました。ところがDiscordでは、同じ応答の中で書いた文章が、承認ボタンより後に届きました。これでは、承認するときに中身が見えません。そこで、何も公開されない下書きは承認ボタンだけで作り、予約・即時投稿・削除は先に中身を見せていったん止まり、返信でOKをもらってから呼ぶ、というルールに分けました。

4. 好きなMastodonサーバーにつなぐ機能が使えなかった

Postizには、好きなMastodonサーバーにつなぐためのコードがありますが、ソースの上で無効化されていました。標準のMastodon接続を使うことにして、mastodon.socialに自分用のアプリを登録してつなぎました。

5. 予約処理のコンテナに、再起動の設定がなかった

Postizの予約投稿は、Temporalというワークフローエンジンが担っています。公式のcomposeでは、Postiz本体・データベース・Redisには自動で立ち上がる設定がありますが、Temporal側の4つのコンテナにはありませんでした。このままだとPCを再起動したあとに予約投稿が止まるので、4つにも設定を追加しました。

とむ(Discord)→ Hermes → Postiz → Mastodon の流れと、操作ごとの確認の手順。下書きは承認ボタンだけで作り、予約・即時投稿・削除は、中身を見せて返信でOKをもらってから承認ボタンを出す。

気づき

mastodon.socialのルールには「生成AIの使用は明示すること」「AIが生成したものだけを投稿するアカウントは認めない」とあります。そこで、AIが書いた本文には最後の行に #AI生成 を付けるようにしました。全部を自動で投稿するのではなく、AIは下書きを作る係、投稿するかどうかは自分が見て決める、という分担が今の形です。

AIエージェントに外部への書き込みを任せるとき、ツールを絞るだけでは足りない場合があります。1つのツールが安全な操作と公開する操作を兼ねているなら、承認の仕組みと、承認の前に中身を見られる手順の両方が必要でした。

次にやること

  • 毎晩作っているSNSの下書きを、Postizの下書きとして入れる形にするか検討
  • 日本の利用者が多いThreadsの追加を検討(開発者アプリの登録とHTTPSの準備が必要そう)
  • PCを再起動したときに、全部が自動で立ち上がるかを確認

あなたも記事の投稿・販売を
始めてみませんか?

Tipsなら簡単に記事を販売できます!
登録無料で始められます!

Tipsなら、無料ですぐに記事の販売をはじめることができます Tipsの詳細はこちら
 

この記事の販売者

とむ

とむの開発日記 開発はClaudeCode、SNSもClaudeCode、基本ClaudeCode ClaudeCodeとHermesAgentの2刀流でいきたいけど、今の割合は9:1ぐらい🌝   投稿はClaudeCodeでのセッションが終わったあとに、MCP経由でやってもらってます。

この販売者が書いた他の記事

  • 【開発日記】workers-auth 1.1.0:期限切れセッションの削除を応答の後ろへ(クラウドで実装→手元で確認)

  • 【開発日記】3社AI比較ツールのモデル更新と、静的アセット化で踏んだexportの罠

  • 【開発日記】新PCへの開発環境の引っ越しで、手順書どおりに行かなかった5つ

関連のおすすめ記事

  • 【AI自動化・マネタイズ実例書】たった2週間〜機械オンチなママでもできた全作業過程

    ¥40,000
    1 %獲得
    (400 円相当)
    みお

    みお

  • ゼロから3日で始動|AIコンサル大全

    ¥124,800
    1 %獲得
    (1,248 円相当)
    水口一星

    水口一星

  • Claude Code 業務効率化の教科書

    ¥4,980
    1 %獲得
    (49 円相当)
    くろだ@海外ガジェット販売

    くろだ@海外ガジェット販売