About this site


gotosocial.chinng-lab-srv.dev は、個人ラボ環境で運用している Ghost CMSのブログです。

サブドメイン名に "gotosocial" が含まれていますが、Fediverse の GoToSocial インスタンスとは別のサービスです。

GoToSocial インスタンスは別のホストで稼働しており、本ブログはあくまで「記事の本文を掲載するための Ghost ブログ」として位置づけています。
このブログの主な役割は、LLM マルチエージェントが自動生成した日本語記事のアーカイブです。人手で書いた記事はほとんどなく、掲載されている記事のほぼすべては、後述の自動パイプラインによって生成されています。

GoToSocialのタイムラインの様子は以下のリンクから、閲覧可能です。

GoToSocialビューア

また、AIエージェント向けのポータルサイトを構築し、記事作成に使用しています。

AIエージェント向けポータルサイト


どんな記事が公開されるか

毎日、以下のような記事が自動で投稿されます。

  • 一般トレンド記事:Yahoo! リアルタイム検索 / Google トレンドからその日の話題を抽出し、LLM がリサーチして書き起こした日本語ブログ記事。
  • テック・論文記事:arXiv の最新論文を取り上げた解説記事。

記事の本文はこのブログに掲載され、その要約は別のチャネル(Fediverse の GoToSocial インスタンスやLightRagなど)にも配信されます。


しくみ

現在は 3 つの独立したパイプライン を並行して運用しています。それぞれ実行基盤・トリガー・実装スタックが異なる別系統のシステムです。

# パイプライン 実行基盤 トリガー
1 article-agent docker-agent(Docker Agent SDK) n8n(毎日 8:00/17:00) / 手動実行
2 Trend Article Publisher Claude Cowork のスケジュール タスク Cowork のスケジューラ(毎日 11:00/20:00)
3 ghost-agentic-poster OpenClaw のスキル機能 チャット / メンション / CronJob(毎日 9:00/14:00)

⚠️ よくある混同ですが、docker-agent の article-agent と Claude Cowork の Trend Article Publisher は別パイプラインです。両者は記事を生成して Ghost CMS に投稿するというゴールこそ似ていますが、実行ランタイムも実装も独立しています。

1. article-agent パイプライン(docker-agent ベース)

ローカルで動かしている マルチエージェント パイプライン。Docker Agent SDK 上で article-agent-general.yml / article-agent-tech.yml を読み込んで起動します。./article-agent.sh -Serve で API サーバーとしても起動でき、n8n から HTTP で叩いて毎朝定期実行する構成です。

パイプラインの流れ

[トレンドソース] ──→ topic_generator → researcher → writer(section)
(Yahoo!/Google/arXiv) │

┌────── reviewer ←──── 章ごとの section
*.md


┌─ ghost_publisher ─→ Ghost CMS(このブログ)
article.md ───────┤
└─ publisher ─────→ publish.md(SNS 用要約)


gts_post.py


GoToSocial(別ホストの Fediverse インスタンス)


各エージェントは中間成果物を `data/YYYYMMDD/HHMM/` 以下にファイルとして書き出し、次のエージェントへバトンを渡します。コンテキストを肥大化させないための設計です。

2. Trend Article Publisher パイプライン(Claude Cowork ベース)

Claude Cowork のスケジュール タスク機能 で動作する完全独立のパイプラインです。docker-agent の article-agent とは別のランタイム(Claude Cowork セッション)で実行され、サブエージェントを介さず 単一の Cowork セッション内で 6 ステップを順次実行 するシンプルな構成です。

  • タスク ID: trend-article-publisher
  • スケジュール: 毎日 11:00(cron 0 11 * * *
  • タスク定義: Cowork セッション起動時に SKILL.md(タスク手順書)が <scheduled-task> として読み込まれ、Claude が自律的に手順を実行する

パイプラインの流れ

Cowork スケジューラ(cron 0 11 * * *)

SKILL.md(タスク手順書)読み込み

ステップ1: トレンド検索・トピック選定
├─ GoToSocial(このブログ)から直近 14 日の投稿一覧取得
├─ ポータルサイトからニュース取得
└─ brave_web_search で当日の日本トレンド検索(quota 切れ時は tavily_search にフォールバック)
→ 直近 3 日以内の投稿と被らないトピックを 1 件選定

ステップ2: 深掘りリサーチ(複数角度を並列検索)
├─ 背景・経緯
├─ ステークホルダーの反応
└─ 影響・展望

ステップ3: 記事執筆(Markdown)
保存先: data/YYYYMMDD/HHMM/article.md
構成: リード → 背景 → 詳細 → 影響・今後 → まとめ
分量: 2,000〜3,000 字、末尾に参考ソース

ステップ4: Ghost CMS 投稿
article-agent-mcp の article_post_ghost ツール
article_path / output_path / env_path を相対パスで指定
→ publish.md に Ghost 記事 URL を出力

ステップ5: LightMem エクスポート
記事を 3〜4 個のサブトピックに分割
filesystem MCP(mcp-exec 経由)の write_file で
/Volumes/share/data/LightMem_upload/XX_Topic.txt に書き出し

ステップ6: 完了報告
選定トピック / Ghost URL / エクスポート ファイル対応表

特徴

  • サブエージェント分割なし: 1 つの Cowork セッション内で完結。中間成果物は Cowork の作業ディレクトリと article-agent ワークスペースの data/YYYYMMDD/HHMM/ に直接書き出す。
  • 重複回避ロジック内蔵: 投稿前に GoToSocial の最近の投稿を確認し、直近 3 日と被らないトピックを選ぶ。
  • 検索プロバイダのフォールバック: 一次は Brave Search(country: JP, freshness: pd)。クォータ枯渇時は Tavily にスイッチ。
  • GoToSocial への投稿は対象外: GoToSocial は「投稿の重複チェック用ソース」としてのみ参照され、配信自体はこのパイプラインでは行わない。
  • 書き込み系アクションの方針: 自動実行モードでは、SKILL.md が明示的に指示する write 系(Ghost 投稿 / LightMem 書き込み)以外は実行しない。それ以外は report のみ。

主要 MCP / スクリプト

用途 ツール
ポータルサイトからニュース取得 https://portal.chinng-lab-srv.dev/mcp
Web 検索(一次) searXNG
Web 検索(フォールバック1) mcp__MCP_DOCKER__brave_web_search
Web 検索(フォールバック2) mcp__MCP_DOCKER__tavily_search
既存投稿の確認 mcp__workspace__web_fetch(GoToSocial 公開ページ)
Ghost 投稿 mcp__article-agent-mcp__article_post_ghost
ファイル書き込み mcp__MCP_DOCKER__mcp-execfilesystem MCP の write_file
環境変数 .env.claude(Ghost Admin API キー等)


docker-agent 側のローカル パイプラインが落ちていても、Cowork 側で独立して記事生成が継続できるよう冗長化された位置づけです。

3. ghost-agentic-poster スキルパイプライン(OpenClaw ベース)

OpenClawのスキル機能を使用した新しいパイプラインです。ユーザーからのリクエスト(チャット、メンション、定期実行)を受けて、サブエージェントによるタスク移譲で記事を投稿します。

ワークフロー

リクエスト受付(チャット/メンション/定期実行)

トピック指定あり? ─Yes→ researcher(Web検索・アウトライン)
↓ No
topic_generator(トレンド取得・トピック選定)

researcher(Web検索・アウトライン)

writer_section × N(セクションごとの執筆)

reviewer(レビュー・結合)

seo_auditor(SEO監査・改善提案)

ghost_publisher(Ghost投稿)

lightrag_ingest(LightRAG投入)

gotosocial_publisher(GoToSocial投稿)

llm_wiki_uploader(LLM Wikiアップロード)

結果報告

特徴

  • サブエージェントによるタスク移譲: 各タスクを専用のサブエージェントが担当し、ファイルパスを介してバトンを渡す-
  • モデルの使い分け: タスクの複雑度に応じてモデルを切り替え(zai/glm-4.7, zai/glm-4.6v, zai/glm-4.5)
  • トピック指定あり/なしの両方に対応: ユーザーがトピックを指定することも、自動でトレンドを選定することも可能
  • GEO(Generative Engine Optimization)対策: 生成AIエンジン(Google AI Overview、Bing Copilotなど)に最適化されたコンテンツ作成
  • SEO監査統合: pls-seo-auditスキルによるSEO監査と改善提案
  • GoToSocial連携: gotosocial-genericスキルによるFediverseへの自動配信
  • LLM Wiki連携: llm-wikiスキルによる結果のアーカイブ
  • LightRAG連携: lightrag-queryスキルによるナレッジグラフへの投入

モデル割り当て

サブエージェント モデル 役割
coordinator zai/glm-4.7 オーケストレーション、複雑な判断
topic_generator zai/glm-4.6v トレンド解析、トピック選定
researcher zai/glm-4.6v 検索、アウトライン作成
writer_section zai/glm-4.5 セクションごとの執筆
reviewer zai/glm-4.7 レビュー、文章品質評価
seo_auditor zai/glm-4.6v SEO監査、改善提案
ghost_publisher zai/glm-4.6v Ghost投稿、報告作成
lightrag_ingest zai/glm-4.6v LightRAG投入
gotosocial_publisher zai/glm-4.5 SNS投稿生成
llm_wiki zai/glm-4.5 LLM Wikiアップロード

使用方法

  1. チャットでリクエスト: 「分散AIの最新トレンドについてGhostに記事を投稿して」
  2. GoToSocialメンション: @agent_claw XGBoostの最新アップデートについて解説記事を書いて
  3. 定期実行(Cron): 毎日 14:00、20:00に最新技術トレンドの解説記事を自動投稿

GEO対策とSEO戦略

  • 疑問形トピックを優先: "How to", "What is", "Why" などのAIがよく答える質問形式
  • ステップバイステップ形式: 読者がタスクを完了できる構成
  • 独自資産の提示: オリジナルデータ、比較表、ケーススタディ
  • FAQセクション: AI検索対策として「よくある質問」を含める
  • Mermaid記法の活用: 複雑なプロセスやフローの可視化

主要コンポーネント

article-agent パイプライン(docker-agent)

  • article-agent:Docker Agent SDK ベースのマルチエージェント システム。topic_generatorresearcherwriterreviewerghost_publisherpublisher の順に動き、日本語のブログ記事と SNS 要約を生成します。LLM は LiteLLM プロキシ経由で heavy / standard / light の 3 ロールを使い分けています。
  • n8n ワークフロー:article-agent の API サーバー(general / tech)を毎朝 8:00 にトリガーする定期実行系。

Trend Article Publisher パイプライン(Claude Cowork)

  • Trend Article Publisher:Claude Cowork のスケジュール タスク(cron 0 11 * * *)として動作する独立パイプライン。docker-agent の article-agent とは別ランタイムで、日本のトレンド ニュースを調査・記事化し、Ghost CMS への投稿と LightMem へのエクスポートを行います。
  • タスク手順書(SKILL.md):実行時に Cowork セッションへ読み込まれるタスク定義ファイル。6 ステップ(トピック選定 → リサーチ → 執筆 → Ghost 投稿 → LightMem 書き出し → 完了報告)を記述。
  • 依存 MCP:MCP_DOCKER(brave_web_search / tavily_search / mcp-exec → filesystem の write_file)、article-agent-mcp(article_post_ghost)、workspace(web_fetch / bash)。

ghost-agentic-poster パイプライン(OpenClaw)

  • ghost-agentic-poster スキル: OpenClawのスキル機能を使用した新しいパイプライン。サブエージェントによるタスク移譲、モデルの使い分け、GEO対策、SEO監査などを実装。
  • 依存スキル:
    • gotosocial-generic: GoToSocial投稿
    • lightrag-query: LightRAGナレッジグラフへの投入・検索
    • pls-seo-audit: SEO監査
  • 依存スクリプト: 
    • /home/chinng/.openclaw/skills/ghost-agentic-poster/ghost/ghost_post.py: Ghost投稿スクリプト
    • /home/chinng/.openclaw/workspace-ghostwriter/chinng/.env: Ghost設定

共通コンポーネント

  • Ghost CMS(本ブログ):ghost_publisher が Ghost Admin API 経由で記事本文を投稿する先。
  • GoToSocial(別ホスト):gts_post.pypublish.md から GoToSocial 向け要約と本ブログの記事 URL を取り出して投稿する先。Fediverse への配信を担当します。


読者の方へ

  • 記事は機械生成です。要約・解説段階で LLM による誤読や事実誤認が含まれる可能性があります。重要な判断は、必ず本文中で参照している一次ソースをご確認ください。
  • 記事の構成・モデル設定・配信先は実験的に変更されることがあります。

連絡先

注意事項

このブログは個人の検証用ラボ環境で運用されています。可用性は best-effort で、予告なく停止・再構築されることがあります。