0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自動投稿がスキップされた日、スマホだけで記事を出した話

0
Posted at

金曜9時、いつも通り自動投稿が走るはずの時間に何も投稿されていないことに気づいた。ログを見ると「notes/log.mdが前回投稿時から更新されていないため、投稿をスキップします」の一文。バグではなく、意図して仕込んだ安全弁がちゃんと働いた結果だった。

なぜスキップされたのか

このパイプラインでは、記事のネタ元であるnotes/log.mdの中身をSHA256でハッシュ化し、前回投稿時のハッシュと比較している。中身が変わっていなければ「新しいネタがない」とみなして投稿をスキップする、という単純だが効果的な重複投稿防止の仕組みだ。

notes/log.md の中身

SHA256でハッシュ化

前回投稿時のハッシュと比較

↓ 一致(=ネタ切れ)

投稿をスキップ ⏭️

ここで手を止めて「じゃあ月曜まで待つか」でもよかったのだが、せっかくなので今すぐ何か出したくなった。ただ手元にあったのはスマホだけで、PCもVSCodeも開ける状況ではなかった。

スマホだけで記事を出す

そこで、記事の「生成」と「公開」を切り離すことにした。生成はClaude(Cowork)にその場でやらせ、公開はもともと持っていたGitHub Actionsの手動実行(workflow_dispatch)に任せる構成に変更した。具体的には、生成済みの記事JSONをファイルとして渡せる--from-fileオプションをスクリプトに追加し、GitHub Actions側の入力欄からもそのパスを指定できるようにした。

📱 Claudeに記事の下書きJSONを作らせる

GitHubにdraft JSONをpush

GitHubのActionsタブ→Run workflowでfrom_fileを指定

WordPressに公開 + Zennへクロス投稿

notes/posted/ へ自動退避(二重投稿防止)

これで、ブラウザさえあればスマホからでも「今すぐ1本出す」が完結するようになった。GitHub Actions側のSecretsに全部の認証情報を寄せてあるので、手元の端末に鍵を持ち歩く必要がないのも地味に嬉しいポイントだった。

次にやりたいこと

今回は手動でJSONを作ったが、そもそも「スキップされたらClaudeに1本自動生成させて、下書きとしてPRを立てる」くらいまで自動化できそうな気がしている。安全弁で止まった先の「回復」まで自動化するのが次の目標だ。

👉 関連商品をAmazonで探す(smartphone automation)


元記事: 自動投稿がスキップされた日、スマホだけで記事を出した話

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?