Discourse MCPでテーマを素早く構築する

,

コミュニティを立ち上げる際の最大の障壁は、しばしば「自分だけのものにする」という点です。

フォントやスタイルを、自分のブランドに合わせることを望んでいるはずです。

この記事では、以下を用いて比較的簡単に行えることについて紹介します。

ここでは Codex を選びました。最近リリースされた GPT-6 Astra は、驚くほど才能のあるビジュアルアーティストだからです。Kimi K3Fable もこの分野ではかなり強力ですが、このデモでは Astra を使用しています。

ステップ 1 - API キーの生成

次のページへ移動します: your.site/admin/api/keys/new

グローバル API キーを生成します。

セキュリティに関する注意: このキーを安全に保管してください。作業が完了したら、サイトへの無制限のアクセス権限を付与するため、失効させることを検討してください。

ステップ 2 - Discourse MCP の追加

このチュートリアルでは codex を使用しています:

編集: ~/.codex/config.toml

[mcp_servers.discourse]
command = "npx"
args = [
  "-y",
  "@discourse/mcp@latest",
  "--toolsets",
  "all",
  "--allow-writes",
  "--site",
  "https://figment123.discourse.group",
  "--auth_pairs",
  '[{"site":"YOUR_SITE","api_key":"YOUR_API_KEY","api_username":"system"}]',
]

(注: Codex では、有効化または無効化される MCP を選択することはできません。設定内のすべてが有効になります。MCP を一時的に無効にするには、enabled = false を設定できます)

:writing_hand: ツールに関する注記: Discourse MCP は 140 以上のツールをサポートしており、この設定によりそれらすべてが利用可能になります。Claude や Codex などの最新のハーネスはこれを問題なく処理できますが、これほど多くのツールがある場合、多くのハーネスは苦戦する可能性があります。例えば、Grok build ではフィルタリングが必要になります。

Discourse MCP を追加した後、エージェントがそれへのアクセスを確認してください:

ステップ 3 - エージェントに仕事をするためのツールを与える

エージェントには以下があると、パフォーマンスが大幅に向上します。

  1. 目、つまり自分の作業を見る能力。(playwright MCP、computer use など)
  2. コンテキスト、Discourse MCP が役立ちますが、Discourse のソースコードも役立ちます。
  3. 画像生成 - アセットなどが必要な場合。

ChatGPT アプリには組み込みブラウザがあります。それを使用していることを確認してください。discourse/discourse コードベースをクローンし、Discourse ディレクトリからエージェントを開始することを確認してください。

これらはすべて必須ではありませんが、これらがあると、はるかに良い結果が得られます。

ステップ 4 - エージェントに知性と明確なブリーフを与える

ここでは非常に良い結果を見たいと思ったため、GPT-6 Astra XHIGH を選択しました。

次に、AI と一緒に何が必要か(The New Yorker スタイルのコミュニティテーマ)について小さなブリーフを書きました。

AI が作成したブリーフ

The Salon を構築してください。これは洗練された Discourse テーマであり、顧客が Discourse のアイデンティティをいかに劇的に変えられるかを示すものです。クリエイティブな参照は The New Yorker です。読者が会話に参加するエディトリアルな機関です。レプリカではなく、オリジナルのアイデンティティを作成してください—借りたロゴや無許可の独自フォントは使用しないでください。温かみのあるアイボリー (#F7F4ED)、ほぼ黒のインク (#20201E)、抑制されたエディトリアルな赤 (#B52B32)、細いルール、寛大な余白、表現力のあるセリフ体の見出し、読みやすいセリフ体の本文、コンパクトなサンセリフ体のメタデータを使用してください。モノクロのイラストはユーモアと個性を加えるべきです。デモに必要なすべてのアセット—フォント、イラスト、写真、アバター、アイコン—を入手、ダウンロード、または生成するための創造的な裁量があります—適切にライセンスされた素材を使用し、必要な場合帰属情報を保持してください。一般的な SaaS カード、偽の羊皮紙、装飾的な雑多なものを避けてください。異なる色付きのストックフォーラムではなく、その中に生きたコミュニティを持つ現代的な文学雑誌を目指してください。

デモインスタンスに、体験を魅力的にするために必要なカテゴリ、トピック、返信、架空の貢献者プロファイル、サポートコンテンツをステージングすることについて明示的に許可されています。 既存の実コンテンツを保持し、架空のアクティビティはデモデータとして明確に識別可能にしてください。個性的な説明とイラストを持つ 5 つのエディトリアル部門—The Commons、Arts & Letters、City Life、Science & Ideas、Table Talk—を作成してください。強力な THE SALON マストヘッド、厳選されたリードディスカッション、セカンダリーヘッドライン、最新の会話セクションを構築してください。「いつからすべての趣味がサイドハッスルになったのか?」や「実際にあなたの考えを変えるものは何ですか?」のような、考え深く多様なディスカッションをシードし、説得力のあるオープニングポスト、実質的な意見の相違、短い返信、引用、よく選ばれた画像を含めてください。密度、スクロール、ナビゲーションを示すのに十分なコンテンツを埋め込み、反復的なフィラーを使用したり、重要な画面を空にしたりしないでください。すべてのヘッドラインは実際のトピックを開き、アクティビティ、返信数、未読状態は表示可能でなければなりません。カテゴリリスト、トピックページ、検索、コンポーザーを通じてアイデンティティを貫き通してください。オープニングポストは美しく組版されたエッセイのように感じられ、返信はコンパクトで実用的な会話のままです。モバイルは落ち着いた単一カラムの体験になり、ダークモードも同様に意図的なものであるべきです。

実装の詳細を選択する前に、ターゲットとなる Discourse バージョンとサポートされているテーマ API を確認してください。メンテナンス可能なテーマと焦点を絞ったテーマコンポーネントを優先し、コアのパッチ、不要なプラグイン、もろい DOM 操作、発明された機能を避けてください。エディトリアルのキュレーションを明示的かつ設定可能にしてください。すべての詳細について承認を求めるのではなく、可逆的なデザイン、アセット、ステージングの決定を自律的に進め、代表的なホームページとコンテンツが埋められたトピックページで視覚言語を確立し、その後サポートするサーフェスを仕上げてください。インストール可能なテーマ、必要なコンポーネント、再現可能なデモコンテンツセットアップ、アセットの出所、簡潔なインストール手順を納品してください。デスクトップとモバイルの両方で、実際の Discourse インスタンスで結果を検証し、キーボードナビゲーション、コントラスト、未読状態、検索、引用、コンポーザーを含めてください。テーマを適用する前後の同じステージングコミュニティをキャプチャし、変革が疑いようのないものであることを確認してください。基準は顧客向けのデモであり—モックアップではなく、美しいホームページだけでなく、まったく異なる場所の感覚を持つ、一貫した、機能するコミュニティです。

  • 必要に応じて Discourse ソースを参照
  • https://figment123.discourse.group/ はデモサイトであり、自由に操作できます。進捗を確認しながら、テーマを有効にしてください。
  • 必要に応じてトピックを作成

ステップ 5 - とても素晴らしい !

1 時間 10 分後、Astra Xhigh は完了しました。

New Yorker にインスパイアされた素敵なテーマです。

このテーマは完璧ではなく、エッジケースがあります。ステップ 6 のリファインを推奨します。デザインがずれている部分を貼り付け、エージェントに修正させる方法です。しかし、出発点としては、今日これができることは本当に驚くべきことです。1 年前には不可能でした。

リアルタイムでのリファインの例:

「いいね!」 24

何か見落としているわけではないですが、これはカスタムのAIエージェントハーネスを使って実現したように見えます。 :high_five: :+1:

AIエージェントハーネスは、Claude CodeOpenAI CodexOpenCodeのようなAIコーディングハーネスよりも広い概念なので、この用語に初めて触れる人向けに、霧を晴らしてくれるような良い入門的なリファレンスを探してみました:

もし1行だけ覚えておくなら:

モデルは考え、エージェントは行動し、ハーネスはエージェントがバカな行動をしないように保つ。


個人的には、エージェント自体が新奇性を失いつつある一方、目的別に構築されたAIハーネスの方が、物語のより興味深い部分になりつつある段階に来ているのではないかと思います。

単に「どのエージェントを使っているのか?」と聞くのではなく、より有用な問いは、ますます「その周りにどんなハーネスを構築したのか?」となるのではないでしょうか。

「いいね!」 2

いや、カスタムハーネスは作ったけど、これは完全にバニラ状態のChatGPTアプリ(Linux版)、Discourse MCP、そしてDiscourseのトライアル版だけだよ。

MacではChatGPTはさらに機能が豊富で、あらゆるアプリを制御できるので、例えば構築中にFirefoxやChromeでテストしたり、iPhoneシミュレータを使ったりもできる。

私のカスタムハーネスでも同様の結果が得られるので、別のサンプルを公開するよ。 https://chatgpt.com/download/

「いいね!」 6

米国以外のモデルとして比較・評価してみたい方に向けて、興味深い新しいリリース情報を1つ追加します:

「いいね!」 1

後で簡単なデモを行うことは間違いなくできますが、Astraに近づくどころか、まだかなり遠いと思います。

「いいね!」 3

いいね!特にトップ記事にはすごく共感できるよ!:sweat_smile:

当時はかなり懐疑的でしたが、DeepSeekはV4版でその価値を証明してくれました。GPT-6 アストラはフロンティアモデルですが、このようなタスクにおいては、DS 4.1が非常に優れた代替手段になり得る可能性が高いです。

まあ、公平にテストするには、Astraの作業を自分のハーネスでやり直して、それからLLMを差し替える必要があるから、ちょっと時間がかかると思う

セルフホスティングユーザーにも対応しています。


また、私の試みです。正直に言うと、私が現在作業しているプロジェクトやコミュニティには完璧ではないと感じますが、それでもかなり良い結果を出してくれました。


「いいね!」 4

最高ですね!AIとの体験におけるリアルさ(「おい…」って感じ、笑)もすごく共感できます :laughing:

「いいね!」 1

DeepSeek 4.1 flash maxでテストランを実行しました。

完全な記録はここにあります: https://gisthost.github.io/?28dedf78da999ccca5b5b4feb1d58fc9/index.html

これは少し汚染(コンタミネーション)がありました。dv コンテナ上でテストを実行していたため、ある時点でエージェントが、MCPに頼るよりもDockerを使って変更を加える方が効率的だと判断したからです。

画像生成にはQwen 3 Imageを使用しました。

「目(視覚)」のために、エージェントにchrome-devtools-mcpを与えました。これにより、Linux上でChromiumを使用するように簡単に設定できます。私の場合、これが好ましい選択肢です:

   "chromium-devtools": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-devtools-mcp@latest",
        "--headless=true",
        "--executable-path=/usr/bin/chromium",
        "--chrome-arg=--no-sandbox",
        "--chrome-arg=--disable-dev-shm-usage"
      ]
    },

全体のランでは、ドライバーエージェントとサブエージェントの両方にDeepSeek 4.1 flashを使用しました。

TUIモードでそれを駆動するためにterm-llm.comを使用しました:

結果:

観察結果

ブリーフ(要件定義)は重要です。優れたブリーフがあれば結果も優れ、貧弱なブリーフではLLMの whims(気まぐれ)に任せることになります。優れたブリーフとは、構造や色について述べ、例を示すなどしたものことです。


DeepSeek 4.1 flashはこのテストで非常に高い能力を発揮し、非常に安価でした。99%のキャッシュ読み取り、読み取りトークンわずか280万という条件下では、オフピーク時で約1.52ドル、ピーク時では3.04ドルの費用がかかりました。Astraはトークン効率がはるかに高いため、これは公平な比較ではありませんが、参考までに、Astraで同数のトークンを使用する場合の料金は325ドルになります。

保守的に見積もっても、トークン効率を考慮に入れても、Astraでこのようなデザインを実現するには50〜100ドルはかかるでしょう。現在のAPIコストでは、1ドル50セントで実現することは不可能です。

私はOpenCodeのGoプランでこれを実行しましたが、月額10ドルのプランにわずかな減りすら感じませんでした:

このランについて印象的だった点がいくつかあります。無人で数時間にわたって実行できたことです。スレッドの最初の投稿にある全く同じブリーフに対して、勤勉かつ慎重に行動しました。ブリーフのすべての項目に対応しようと試み、徹底的にすべてをテストしました。

多くのことを正しく行い、デザインは堅牢でした。

ただし、これはGPT 6 Astraではありません。デザインは私にはLLMによるもののように感じます。余白、フォント、細部への配慮はAstraとは異なりました。また、Astraほどビジョン(視覚認識)の忠実度が高いわけではないことも明確です。1回目の反復後、多くの明らかな視覚的なバグがありましたが、プラス面としては、プロンプトを与えればそれらの大部分を修正できました。

なぜかこれだけは修正を拒否しました:

しかし、その他のクセ(不具合)はうまく処理されました。

ビルドの中で最も印象的だったのは、整然とすることへのこだわりです。

  • 証拠用のフォルダを作成しました
  • テーマをクリーンにエンジニアリングし、多くのファイルに分割し、テストすることまで試みました

全体的に言えば、50〜100倍安いモデルからAstraのような品質を期待すべきではありませんが、ツールとしては、コストのわずか一部ですばらしい結果を生み出せることは間違いありません。

後から考えると、dvコンテナ内で直接テーマを構築してからアップロードすることを推奨します。YOLOモードで安全に実行でき、セットアップも非常に簡単だからです。


来週、これ围绕してさらにいくつかの実験を行い、いくつかの例を投稿する予定です。

「いいね!」 8

そういうものも見たいです :eyes:

「いいね!」 2

試してみたところ、Astraだけが提示された見た目と完全に一致するようになり、他のモデルは視覚的な一貫性を保つことに失敗したようです。カスタムUI要素を作成する際に、追加の提案はありますか?

カスタムUI要素については、dvコンテナ内で作業することを強くお勧めします。これにより、コード内の例を見つけやすくなります。

「いいね!」 1