codist Fun Notes
記事一覧に戻る
Slack Workflowでブログ投稿を自動化した話
Slack 自動化 CI/CD GitHub Actions

Slack Workflowでブログ投稿を自動化した話

| codist
目次を表示

はじめに

弊社では技術ブログ「Fun Notes」を立ち上げました。しかし、ブログ投稿のためにローカル環境でビルドしてコミットするフローだと、エンジニア以外のメンバーにはハードルが高く、結局投稿が続かないという問題が目に見えていました。
そこで、普段全員が使っているSlackから直接ブログを投稿できる仕組みを構築しました。

従来のブログ投稿フロー

一般的な静的サイトジェネレータを使ったブログの投稿フローは以下のようになります。

  1. ローカルでMarkdownファイルを作成
  2. ビルドコマンドを実行して動作確認
  3. gitでコミット・プッシュ
  4. PRを作成してレビュー
  5. マージ後にCI/CDでデプロイ

エンジニアにとっては当たり前の作業ですが、非エンジニアにとってはgitの操作やMarkdownの記法だけでもハードルになります。

Slack Workflowを使った新しいフロー

今回構築したフローはこうです。

  1. Slackでワークフローフォームを開く
  2. タイトル・タグ・本文などを入力して送信
  3. チャンネルに投稿内容が表示される
  4. AIアシスタントが内容をMarkdownに整形してGitHubにコミット・プッシュ
  5. GitHub ActionsがMarkdownからHTMLをビルドしてNetlifyにデプロイ

Slackのフォームに入力するだけで記事が公開されるため、gitやターミナルに触れる必要が一切ありません。

技術構成

ブログ基盤

  • 静的HTML + Tailwind CSS(既存の会社HPと同じ技術スタック)
  • Markdownをビルドスクリプト(Node.js + marked + gray-matter)でHTMLに変換
  • 同一ドメインのサブディレクトリ(/blog/)で配信し、SEO効果を本体サイトに還元

CI/CDパイプライン

GitHub Actionsのワークフローにブログビルドステップを追加しました。

mainブランチにマージされると、npm ciで依存関係をインストールし、npm run build:blogでMarkdownからHTMLを生成、その後Netlify CLIでデプロイされます。

ビルド生成物はgitignoreしているため、リポジトリにはMarkdownソースだけが管理されます。

Slack Workflow

Slackのワークフロービルダーで投稿フォームを作成しました。フォームには記事タイトル、スラッグ(URL)、タグ、概要、本文、サムネイル画像のフィールドがあります。送信するとチャンネルにテンプレート形式で投稿され、AIアシスタントへの指示のベースになります。

設計で意識したポイント

同一ドメインにこだわった理由

ブログをnoteやZennなどの外部サービスに書くという選択肢もありました。しかし、外部サービスのドメインにコンテンツを置いても、自社ドメインのSEO評価は上がりません。codist.fun/blog/という同一ドメイン配下に置くことで、ブログ記事のSEO効果が会社HPに直接還元されます。

Markdownを選んだ理由

ブログの本文はParagraph(プレーンテキスト)で入力してもらい、見出しやリストなどのMarkdown記法は最低限で済むようにしています。整形が必要な場合はAIアシスタントが補完するため、投稿者は内容に集中できます。

運用の継続性を最優先にした

どんなに優れた仕組みでも、使われなければ意味がありません。今回最も重視したのは投稿のハードルを下げることです。Slackという普段使いのツールから離れずに完結することで、投稿を習慣化しやすくしています。

まとめ

Slack Workflow + AI + GitHub Actions + Netlifyを組み合わせることで、フォーム入力だけでブログ記事を公開できる仕組みが実現しました。技術的には特別なことをしていませんが、既存ツールの組み合わせ方次第で、チーム全体の発信力を底上げできる良い事例になったと思います。