DEVELOPMENT LOGS

STUDIO JOURNALS.

ZashStudioの技術実装、サービス設計、そして日々の実験記録。

2026/7/29 スタジオ日誌

夜間の自動ループを作業マシンから常駐サーバへ引っ越した話

記事の起稿・公開・公開後レビューを自動化するループが、当初は開発マシン上の launchd で動いていた。その設計では機械を閉じている夜間に全ジョブが止まる問題があり、常駐サーバへ主要なレッグを移設した。移設で踏んだ落と…

2026/7/29 AI技術・実装

2026年に「相互送客ブログロール」を作り直した話

旅行ブログのサイドバー・記事末尾に「他媒体の新着」を出す機能(いわゆるブログロール)を、WordPressプラグインからAstro+静的ファイル配信の構成に移植した。3時間ごとに自動更新し、中身が変わっていないときはビル…

2026/7/28 AI技術・実装

公開済み記事の自動監査ループを作った ― AIも見出しだけで脊髄反射する

運営している媒体の一つに、公開済みの記事を後から機械的に見直す「公開後監査ループ」を作った。外部の監査役が記事を読んで判定を出し、別のエージェントがその判定を検証し、安全な範囲だけ自分で直す、という二段構えの設計だ。組ん…

2026/7/27 AI技術・実装

無人で回るAIエージェントが「許可を求めて」4日間止まっていた話

複数の媒体に対して headless AI エージェントが夜間スケジュールで記事を自動起稿している。そのうち1本が、許可ディレクトリ外のドキュメントを参照しようとして承認プロンプトで止まり、93.5時間ハングし続けた。「…

2026/7/27 AI技術・実装

サイトマップの lastmod を毎ビルド更新すると「更新詐欺」になる

Astro の静的サイトで <lastmod 付きのサイトマップを正確に出す実装メモ。@astrojs/sitemap は <lastmod を出力しないため自前実装が必要だが、素直に書くとビルド日時が入り「全記事が毎日…

2026/7/26 AI技術・実装

LLMを使った記事生成パイプラインの実装アーキテクチャ

このスタジオでは2種類の記事生成パイプラインが本稼働している。一つは「まとめ記事」の自動生成パイプライン(とあるまとめ媒体向け)、もう一つは「オリジナル記事」の半自動生成パイプライン(the NTM向け)。

2026/7/26 スタジオ日誌

複数のAIエージェントが同じリポジトリで働くためのgit衛生ルール

このスタジオでは現在、Claude Code・Codex・Antigravity・Gemini・Gemma4 の5種のAIエージェントが同じgitリポジトリを横断して作業している。それぞれがブランチを切り、worktre…

2026/7/25 AI技術・実装

記事量産でLLMモデルをどう使い分けるか — 用途別モデル選択の実運用設計

複数のスクリプトが複数のLLMを呼ぶ構成になったとき、「どのスクリプトがどのモデルを使っているか」が散らばると、モデル世代の更新やコスト管理が困難になる。

2026/7/25 AI技術・実装

静的サイトへ移行したら、記事を自動で公開する仕組みが外れていた話

WordPress から Astro(静的サイト)へ移行したとき、記事の入れ物とビルドパイプラインは正常に動いたが、「記事を定期的に公開し続ける仕組み」だけが移設リストから漏れた。移行後しばらくは RSS の器が正常に配…

2026/7/24 スタジオ日誌

「アスタリスク事件」の後日談 — 自動化スクリプトが吐いた日付文字列でビルドが全滅した

[アスタリスク1個でサイトが11日間凍結した話](/journal/cf-pages-skipped-build-freeze) の後日談。前回の「skipped」問題は監視パスの設定で決着したが、しばらく後に今度はまっ…

2026/7/23 キャラクター演出

the NTM のキャラクター吹き出しシステム — Speech.astro の設計と実装

the NTM(thentm.com)の記事で使われているキャラクター吹き出しシステムの実装を記録する。Astro + MDX の構成で、記事本文から <Aiko や <Zash を呼び出すと、表情差分アイコン・吹き出し…

2026/7/22 サービス設計

電話に出るAIをMVPで作るなら — Twilio × OpenAI Realtimeの一次受付 設計案

電話の一次受付をAIに任せるサービスを、MVP(最小限の試作)として作るならどう設計するか——その設計案をまとめる。

2026/7/21 AI技術・実装

人物列伝を半自動量産するパイプラインの設計 — 自動化する工程・しない工程

とあるまとめ媒体で運用している「人物列伝」シリーズを半自動で生産・公開するパイプラインの設計と、初稿で起きた事故の記録。自動化する工程としない工程の切り分けをまとめた。

2026/7/18 スタジオ日誌

ダッシュボードが重い真因は「圧縮し忘れ」だった — 推測仮説を全部外して計測に戻った話

自宅サーバで動かしている管理ダッシュボードの「なんか重い」という体感を、推測だけで直そうとして三度外した記録だ。最後は計測に戻ったら一撃で終わった。

2026/7/18 AI技術・実装

terraform planでは見えない障害 — 「2つの正しいリポジトリ」が合成で壊れる話

terraform plan は「宣言と現実の差分」しか見ない。だから事故は、差分に出てこないもの——宣言に書き忘れたもの、あるいは別の宣言に書いてあるもの——のほうで起きる、という話をまとめる。

2026/7/16 AI技術・実装

回線が変わっても届く自宅サーバ — Tailscaleで作る「常時SSH」メッシュ

回線を渡り歩く自宅サーバに、どこからでも同じ名前でSSHするために、Tailscaleでメッシュを組んだ記録だ。

2026/7/14 AI技術・実装

学習ドリル設計の教訓 — 「測定」と「練習」を分けないと数字が嘘をつく

資格試験のために単一HTMLの想起ドリルを自作した——その実装で踏んだ設計の落とし穴を、資格の中身から切り離して一般化する。

2026/7/14 AI技術・実装

ローカル画像生成スタックの現在地 — 商用OKモデルの選び方とMacの落とし穴

メディア運営で使う記事画像を、外部の従量課金APIからローカル生成(ComfyUI)へ全面的に寄せた構成の棚卸しだ。

2026/7/12 AI技術・実装

監視ボットがアクセス禁止を「対象の消滅」と誤読した — 外形監視の誤判定設計

監視ボットが「アクセスを拒否された自分」と「消えた対象」を区別できず、生きているものを片っ端から「終了」に書き換えた事故の記録だ。

2026/7/12 スタジオ日誌

古いブランチからのrsyncが本番を巻き戻した夜 — 複数エージェント運用のデプロイ規律

これは自慢話ではない。一晩でバグ修正2件を本番から消し飛ばした、運用側の自爆事故の事後談だ。

2026/7/11 AI技術・実装

試験直前までツールを進化させ続けた話 — AIと作る「不満を言うと数分で直る」学習ドリル

資格試験の勉強のために自作した学習ドリルを、試験の直前までAIと一緒に改良し続けた記録だ。

2026/7/10 AI技術・実装

AIに「講義」させるプロンプト設計 — 弱点講義機能で幻覚を抑え込むまで

自作の学習ドリルに「苦手な問題をAIに講義させる」機能を足したときの、プロンプト設計の勘所をまとめる。

2026/7/7 AI技術・実装

収集サーバの上り回線を使わない — エッジで画像を取得してストレージへ直保存する構成

細い上り回線に張り付いた自宅サーバから大量の画像を外部ストレージへ上げようとしてタイムアウトの壁にぶつかり、取得と保存をエッジへ丸ごと引っ越した記録。

2026/7/6 スタジオ日誌

ZashStudioとは何か — 「作った記録」を外に出すためのスタジオ

「作った記録」を外に出すためのスタジオ。ZashStudioが何をやり、何をやらない場所なのかを言語化する。

2026/7/4 スタジオ日誌

公開ボタンを捨てる — Journal自動公開ループと、人間が最後に残した一つの安全弁

以前この Journal で「毎回指示を出す必要があるシステムは、半分しか完成していない」と書いた。その続きとして、Journal の公開そのものを自動化した記録。

2026/7/2 スタジオ日誌

アスタリスク1個で、サイトが11日間サイレント凍結した話 — 監視パスの `**` という落とし穴

本番サイトが11日間、誰にも気づかれず更新停止していた。エラーは一つも出ていない。犯人はビルド監視パスに書かれたアスタリスク1個の差だった。そして、その間違いを最初に自信満々で勧めたのはAIだった。

2026/7/1 スタジオ日誌

埋もれた開発ログを発掘する — 自律AIマネタイズ「Loop-721」から生まれたコンテンツ棚卸しパイプライン

自律AIマネタイズ企画「Loop-721」は完全自動化には届かなかった。だがその過程で生まれた、自分の過去の記録からコンテンツの芽を客観的に発掘する3層パイプラインの話。

2026/6/13 AI技術・実装

回線環境で挙動を分ける — Cloudflare Workerが使えない開発環境でのWordPress画像直接アップロードフォールバック

本番M1サーバーではモバイル回線の上り制限(524エラー)を避けるためにCloudflare Workerに画像移植を任せているが、開発環境ではWorkerが未設定でR2画像のまま投稿されてしまう。これを解決する直接アップロードのフォールバックを仕込んだ話。

2026/6/13 AI技術・実装

同色連続のノイズを間引く — まとめ自動生成における「見やすさ」と色のリズム調整

自動生成したまとめ記事で、感情分析による色付けが隣り合うレスで連続すると非常にうるさくなる。この視覚的なノイズを、わずか十数行の「薄色化」ロジックで解決した話。

2026/4/24 Engineering & Editorial

記事から YouTube Shorts を量産する — 記事ID 1つで MP4 が出てくるパイプラインを組んだ

21,874 記事を持つブログの各記事から、縦型 Shorts を自動生成して予約投稿し、元記事にも埋め戻す。Gemini multimodal × Irodori-TTS × ffmpeg × YouTube Data API の構成で、1本 $0.005・7分・人間作業ゼロ。

2026/4/10 AI技術・実装

アフィリエイト基盤の全面改修 — PA-API 非依存の3ボタンカードと FANZA サイドバー実験

Amazon PA-API のアクセス資格を失った。復活を待つ代わりに、PA-API に依存しない3ボタンカード(Amazon+楽天+DMM)・書影付き商品表示・FANZA サイドバーウィジェットを構築し、REST API の一括処理で全記事に展開した記録。

2026/4/10 キャラクター演出

編集キャラクターシステム V2 — 「賢い相棒」をやめて、世界観の違う3人にする

キャラクター掛け合いが本文の要約になってしまう問題を解剖し、各キャラの世界観を再定義した。中核ルールは一つ——『掛け合いは、本文に書いていないことを言う』。

2026/4/10 AI技術・実装

ZashRSS — WordPress のフィード管理を「レジストリ」にするゼロレイテンシ RSS プラグイン

約30本の外部フィードを扱う WordPress プラグインを自作した。キャッシュ済みフィード・グループ化ショートコード・クリック計測・スクロール地獄にならない管理画面——これを PHP 1ファイル約1,000行に収めた記録。

2026/4/9 Debugging & Frontend

viewport meta 一行で全ページが崩れる — iOS Safari の『見えない 980px』トラップ

the NTM のスマホ表示が崩れていた。メディアクエリを足しても、padding を調整しても、ネガティブマージンを直しても、直らない。真犯人は HTML の <meta name="viewport"> 一行だった。iOS Safari の『initial-scale なし = 980px レイアウト』という挙動を知らなければ、何時間でも溶かせる罠だ。

2026/4/8 Engineering & Editorial

コメント欄は「民意の地層」だ — ヤフコメ分析パイプラインと新フォーマットの設計

ネットのコメント欄を「雑音」と切り捨てるのは簡単だ。だが数百のコメントを構造化してセンチメントを可視化すると、そこには無視できない何かが見えてくる。今日はそのパイプラインを作った。

2026/4/8 Engineering & Editorial

ブランド基盤整備とエネルギーシリーズ第3弾 — 一日でfavicon・GA4・新記事を敷設した

ブランドの視覚的アイデンティティ(favicon)、アクセス計測基盤(GA4)、そして新記事の公開。メディア運営の「見えないインフラ」を一日で3つ敷設した記録。

2026/4/6 Engineering & Editorial

パイプラインに「意思」を持たせる — Antigravity キュー連携と画像生成の再設計

毎回手動で指示を出さなければ動かないエージェントは、道具ではなく荷物だ。GitHub Issueをタスクキューにすることで、Antigravityが自律的に動く仕組みを仕込んだ記録。

2026/4/4 AI技術・実装

ZFE V1.2 — 「一次ソース至上主義」をやめて、LLM による文脈検証へ

Zash Fact Engine のスコアリングモデルを全面刷新した。ドメインの格だけで加点する時代を終わらせ、記事とソースの中身を突き合わせる LLM 引用検証をデプロイパイプラインに組み込んだ記録。

2026/4/3

キャラクター受肉プロジェクト v2.2 — 4人の声の決定と誤読排除エンジン『NAE』

NT Media の4キャラクターに VOICEVOX ベースの「声」を実装した記録。表示テキストと読み上げテキストを分離し、AI 特有の誤読を構造的に排除するエンジン『NAE』を開発・導入した。

2026/4/3 Engineering & Editorial

Beyond the 5.8MB Wall: NTM HQ 最速化への助走

NTM HQ ポータルのアイコンが1枚5.8MB(PNG)もあった問題を、WebP 変換で 208KB まで縮めた記録。

2026/4/3 Engineering & Editorial

The Anatomy of Transparency: 透過されていないPNGを見抜いて白背景を除去する

透過されているつもりだった PNG が実は不透明だった問題を、Sharp で白背景を除去して本当の透過に直した記録。

2026/4/2 キャラクター演出

マガジンスタンドの誕生 — CSS タイポグラフィで作る編集ビジュアルシステム

ZashStudio のキャラクターギャラリーを「雑誌の売り場」風のポータルへ作り替えた。AI イラストと深掘り記事をつなぐ『Editorial Visual System』の実装記録。

2026/4/1 スタジオ日誌

スタジオ再進化 — WordPress中心構成から Astro へ

ZashStudio のサイト構成を全面的に見直し、WordPress 中心のモデルからスタンドアロンの Astro フレームワークへ移行を開始した記録。