DEVELOPMENT LOGS

STUDIO JOURNALS.

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

2026/9/25 サービス設計

AI利用の一行開示を、担当と失敗まで残す共作クレジットに変えた

AIを使った記事や制作物の末尾に「AIを利用しました」と一行だけ書く方式を見直し、題材、実演、採点、構成、裏取りの担当を残す共作クレジットへ変更した。目的はAI利用を免責文にすることではなく、どの工程をAIへ渡し、どこを…

2026/9/25 AI技術・実装

Rosetta廃止予定を調べ、移行不要な環境と4本の例外を切り分けた

将来のmacOSでRosettaが縮小される前提で、arm64環境のどこが影響を受けるかを棚卸しした。結論は「開発環境を全部直す」ではない。対象マシンの主要な実行経路はarm64ネイティブで、移行不要だった。一方、配布元…

2026/9/24 AI技術・実装

AIP-C01をAI Practitionerと取り違えないための試験地図

AWSの生成AI系資格を調べるとき、「AWS AIP」という略称だけを見てAI Practitionerの試験だと解釈すると、学習範囲も問題の深さもずれる。ここでは、筆者が整理した試験情報をもとに、対象をAWS Cert…

2026/9/24 AI技術・実装

模試の点数を合否メーターにしないため、公式Pretestを基準に教材の難度傾向を読み解いた

AIP-C01の学習では、模試の点数が上がると理解も同じ割合で進んだように見える。しかし実際には、教材ごとに問題の目的と難しさが違う。そこで、公式Pretestを基準点として、複数の問題集の点数を合否メーターとして扱わな…

2026/9/24 AI技術・実装

出典接地の被覆率を実データで測り、判定ロジックを調整した

LLMを用いた記事の追記・改稿パイプラインにおいて、元記事の文脈を無視した「一般論の混入」や「固有名詞の薄い振りかけ」を自動検知するため、出典接地の被覆率(Coverage)測定と判定ロジックの多層化を実装した。

2026/9/23 AI技術・実装

古いmainへの直コミットで消えかけた成果を、PR運用へ戻した

AIエージェントが古いローカルmainへ直接コミットし、pushを拒否された後に成果を放置していた問題を、PRを経由する運用へ戻した。実例では、ローカルmainがorigin/mainに対して先行と遅れを同時に持つ分岐状…

2026/9/23 AI技術・実装

収集元が止まったときだけ予備機へ切り替えるフェイルオーバーを組んだ

定時収集を1台だけに任せると、その機体が停止した時間だけデータが欠ける。そこで、常時二重実行するのではなく、主担当が収集していない時だけ予備担当が引き継ぐフェイルオーバーを実装した。対象は定時に実行する収集パイプラインで…

2026/9/23 AI技術・実装

ローカルVLMとComfyUIを連携し、画像からプロンプトを起こして生成するパイプラインを作った

画像を見て、その内容を画像生成用のタグ形式プロンプトへ変換する工程を、ローカルの視覚言語モデル(VLM)からComfyUIの生成処理までつないだ。目的は、画像を説明するだけの機能ではなく、説明結果を次の生成へそのまま渡せ…

2026/9/22 AI技術・実装

モデル分散を実測し、設定を書いただけで配送されない穴を塞いだ

複数のAIを用途ごとに使い分ける設定を用意しても、実行レーンがその設定を読んでいなければ分散は起きない。この問題を、選定・配送・実測の3つに分けて確認できる構成へ直した。対象は、常時稼働環境で動く夜間レーンと、そこから起…

2026/9/22 AI技術・実装

配信物と退避物を分け、公開バケットに状態ファイルを置かない構成へ直した

公開用ストレージと、収集・運用状態を退避する領域の境界を見直した。対象は記事画像をR2へ保存する構成で、状態用の領域から画像を配信していた矛盾を解消し、配信物を媒体別の接頭辞へ分けた。ここで扱うのは、画像を置く場所の整理…

2026/9/22 AI技術・実装

watchdog自身が残した孤児プロセスを回収する

無人ジョブを時間制限付きで実行するrunwithwatchdogに、見張り役自身が残すsleepプロセスを回収する処理を入れた。元の問題は、監視対象のコマンドが先に終了した時、見張り用サブシェルだけを止めても、その子のs…

2026/9/21 AI技術・実装

MiniMax Music 3をApple Siliconのローカル環境で動かした実測

MiniMax Music 3を、Apple SiliconのM5 Pro・64GB・MPS環境へ導入し、どの構成で起動できるかと、曲の長さに対して処理時間がどう増えるかを確認した。音楽生成は「動いた」という一言だけでは…

2026/9/21 AI技術・実装

通知の送信元を手入力から実行レーンの自己申告へ移した

複数の自動レーンから同じ通知スクリプトを呼ぶ運用では、送信元を親プロセスのコマンド行から推測する方法が不安定になる。エージェントを起動するシェルが親になると、実際にどのレーンで発生した通知か分からず、存在しない呼び出し経…

2026/9/21 スタジオ日誌

公開記事の画像404を687本まとめて復旧した

運用中の静的ブログにおいて、公開済み記事から参照されている画像のうち687本が404(リンク切れ)になっていた状態を、個別の手作業修正ではなく専用の復旧スクリプトを作成して一括解消した。

2026/9/20 AI技術・実装

CIが赤いままマージされるのを止めるゲートと、mainの赤を見張る番犬を入れた

AIが連続してプルリクエストを作る運用では、担当者が毎回CIの完了を待ち、緑を確認してからマージする方法は安定しない。そこで、マージ前に検査の完了と成功を確認するゲートと、マージ後にmainが赤くなった状態を知らせる番犬…

2026/9/20 サービス設計

note入稿の崩れをMarkdown変換と図版レンダラで止めた

外部プラットフォームへ記事を移す工程で、Markdownをそのまま貼り付ける方式を見直した。対象は、太字や表が崩れる問題と、記事内の図版を別途画像として用意する問題である。解決策は大きなCMS連携ではなく、正本のMark…

2026/9/20 AI技術・実装

配信ツリーのJPEG 10枚を7.01MBから1.87MBへ再エンコードした

運用中のWebサイト群において、公開配信ツリー(public/ 配下)に残っていた過大なJPEG画像10枚を検出し、URLとファイル名を一切変更せずに再エンコードを実施した。その結果、対象10枚の合計サイズを 7.01 …

2026/9/19 AI技術・実装

実装はあるのに実行されないレーンを、機体固定と回帰テストで塞ぐ

実装済みのレーンが、毎日 applied=0 のまま一度も処理を実行していない状態を点検した。原因は、GPU を必要とするレーンが汎用リースの既定値へ吸収され、実行対象から外れてもエラーを出さず停止していたことだった。実…

2026/9/19 AI技術・実装

常駐サービスの待ち受けをループバックに閉じ、実機で守るテストを足した

常駐しているSearXNGとダッシュボードの待ち受けを、必要な機体だけが明示的に外へ開ける構成へ変更した。対象はSearXNGの8080番ポートとダッシュボードの8765番ポートである。設定値を一律に127.0.0.1へ…

2026/9/19 スタジオ日誌

レビュー行列を塞いだ原稿を戻し、滞留を見張るレーンを足した

レビュー待ちの原稿が1本詰まると、後続の原稿も同じ場所で待ち続ける。処理そのものが落ちていなくても、キューが進まない状態は外から見えにくい。この問題に対し、詰まりを検出する reviewreadyqueue.py と回帰…

2026/9/18 スタジオ日誌

PRにならないまま消えかける作業を未pushブランチ検出で見張る

AIエージェントが worktree で作業する運用では、変更が作業ブランチの中に閉じたまま、PRにもならず、mainにも届かない状態が起こる。今回の対象は、すでにPRになった作業の滞留ではない。そもそも一度も push…

2026/9/18 AI技術・実装

submodule を含む worktree は、後始末の remove に --force が要る

複数エージェントが同じリポジトリで作業すると、作業開始時の git worktree add だけでなく、終了時の worktree 撤去までが自動化の一部になる。submodule を含む構成では、通常の git wo…

2026/9/16 AI技術・実装

挿絵消失を自動修復し、alt属性の内部文字列露出を防ぐ

記事公開後の画像チェックに、本文の挿絵タグそのものが残っているかを確認する検査を追加した。従来のスモークテストは画像URLのリンク切れを見ていたが、手動作業などの巻き添えで画像タグが消えたケースでは、検査対象となるURL…

2026/9/16 AI技術・実装

モバイルCLS 0.41の原因を特定し、本文画像の寸法補完を実装した

モバイルのCumulative Layout Shift(CLS)が0.41まで悪化した問題を、本文画像にwidthとheightが無いことから切り分けた。目視で「表示が遅い」と判断するのではなく、画像が読み込まれる前に…

2026/9/15 AI技術・実装

自動で立てたIssueがslug改名で自動クローズされずに残る穴を塞いだ

画像生成を後段へ回す自動化では、記事が画像待ちになった時点で依頼Issueを作り、生成物がそろったら公開処理の後段でIssueを閉じる。ここで記事の slug を、依頼と記事を結び付ける識別子として使っていた。公開前後に…

2026/9/15 AI技術・実装

通知台帳を機ごと・日ごとの鍵で非公開ストレージへ集約した

無人運用の通知をDiscordの画面だけに残すと、後から全体像を確認しにくい。複数の機体が別々に通知を送る構成では、1台の日報を見ても全体の一部しか分からない。そこで、各機の通知台帳をローカルで記録し、後から機ごと・日ご…

2026/9/15 AI技術・実装

mainのnode_modules symlinkをやめ、worktreeごとに依存を入れる

Git worktreeで自動処理を実行するとき、mainリポジトリのnodemodulesをsymlinkで共有する構成をやめ、各worktreeの中で依存をインストールする共通処理へ寄せた。対象は8本の自動処理で、依…

2026/9/12 AI技術・実装

HeartMuLa-oss-3BのMPS環境で確認したAR LMのbf16による条件付け破綻

Apache 2.0ライセンスの音楽生成基盤モデル HeartMuLa-oss-3B を、heartlibのcloneとPython 3.12の仮想環境でローカル導入した。Apple SiliconのMPSで生成を確認し…

2026/9/12 スタジオ日誌

消したはずの生成物がmainリポジトリへ再発する経路を塞いだ

リポジトリから生成物を削除したのに、しばらくすると同じファイルが main リポジトリへ戻ってくる問題を、個別ファイルの掃除ではなく再発経路の修正として扱った。対象になったのは staleprwatchlatest.js…

2026/9/12 サービス設計

耳のつくスマホドックをコンセプト機として設計し、実験物をLABに集約した

耳のつく据置スマホドック「ZM-01」のコンセプト機ページを作り、実験物を /lab に集約した。販売中の製品ではなく、設計のみ・実機なしのコンセプト機として組み立てた設計記録で、掲載画像は画像生成によるコンセプトレンダーである。

2026/9/11 AI技術・実装

MiniMax H3をApple Siliconで動かすためのMPS必須パッチと実測

MiniMax H3をApple SiliconのM5 Pro・メモリ64GB環境で動かし、MPSで詰まる箇所をパッチで回避した。対象のワークフローでは、ComfyUI側のINT8経路が torch.intmm を無条件…

2026/9/11 スタジオ日誌

送客クリックに来ていた謎アクセスの調査と挙動ベースのボット判定

運営中の複数Webメディア間を結ぶ相互送客リンクやRSSアンテナのクリックログを精査したところ、記録された送客クリックの8割以上がごく一部のクローラによる異常なアクセスで占められていることが判明した。

2026/9/11 スタジオ日誌

メインリポジトリに溜まった未追跡ファイルの棚卸し(ドキュメントの相対パス指定が生んだ誤出力)

複数のAIエージェントと人間が同一リポジトリで作業を進める環境において、リポジトリルートに溜まっていた未追跡ファイル(untracked files)の棚卸しと恒久的な再発防止策を実施した。

2026/9/10 スタジオ日誌

立ち上げ期の英語記事7本を日本語にリライトした判断 — 多言語展開から母語への絞り込み

サイト立ち上げ初期(2026年4月)に英語で執筆・公開していた Journal 記事7本について、読者体験の向上と検索流入の最適化、ならびにサイト全体の文体統一を図るため、日本語への全面リライトを実施した。

2026/9/10 AI技術・実装

判定用LLMをローカル機に降ろしてAPI枠を節約できるか実測した話(137本測定と見送り判断)

日次で大量のコンテンツを処理する自動化パイプラインにおいて、クラウドLLM(定額サブスク枠)の消費を抑える目的で、選定判定の1段目(トピック分類・型分類)をローカルマシンの Ollama に移設できるか検証した。

2026/9/8 AI技術・実装

GitHub Actions の auto-merge が「no merge base」で落ちる原因 — shallow fetch の罠

GitHub Actions で稼働している自動マージおよびプルリクエスト(PR)検証ワークフローにおいて、fatal: origin/main...HEAD: no merge base(exit code 128)と…

2026/9/8 スタジオ日誌

リポジトリ内の残骸ディレクトリ掃除と命名重複の解消 — sites.json 監査の記録

複数サイトを一元管理するモノレポ構成のリポジトリにおいて、過去のドメイン移行や構成変更に伴って生じていた残骸ディレクトリの撤去、設定ファイル(sites.json)のキー名と実ファイルパスの整合、ならびに環境変数プレフィ…

2026/9/8 スタジオ日誌

公開直後だけ404になる問題の切り分け — 静的サイトの反映待ちと未公開先行リンクを混同しない手順

静的サイトの自動公開パイプラインにおいて、公開直後の外形監視(postpublish-check)が複数記事で HTTP 404 を検知した際、原因を「デプロイ反映待ち」と「未公開下書きへの先行リンク」の2つに正しく切り…

2026/9/7 AI技術・実装

「出典は生きているのに数値だけ古い」を機械で見つける — 基準日のない数字と一次情報の乖離を防ぐ検査設計

記事内の統計データや規制料金などの数値をファクトチェックする工程において、「数値に基準日(時点)が明記されていない」という指摘の調査をきっかけに、参照資料と実データの重大な乖離を発見し、是正した事例を記録する。

2026/9/7 スタジオ日誌

実在しない報告書を出典に書いていた。なぜ入って、どこまで塞いだか

4月に、AI生成コンテンツが増えすぎて「見てもらいたい気持ち」がインフレする、という記事を公開した。その中で図版を1枚作り、「人間制作への信頼 +30%」という数字を出し、出典として2つの報告書名を添えている。

2026/9/7 AI技術・実装

X APIが403を返したときの切り分け — 予算加算の先走りと診断ヘッダー欠落を防ぐ設計

外部SNS(X / 旧Twitter)への自動投稿スクリプトにおいて、HTTP 403 Forbidden が発生した際に「失敗したリクエストまで予算を消費したと記録されてしまう問題」と「エラー本文だけでは原因が切り分け…

2026/9/6 スタジオ日誌

「全有料ユーザーの使用量をリセットします」を読んだAIが、自分の使用量をリセットした

使用量の改善に関する告知文を、そのままチャットへ貼り付けた。文章の冒頭には「CodexおよびChatGPT Workの全有料ユーザーの使用量をリセットします」とある。

2026/9/6 AI技術・実装

サイトマップは存在するだけでは足りない — indexから辿れることを検査する

静的サイトの public/ にサイトマップが置かれていて、HTTP 200 を返していても、検索エンジンがそこへ到達できるとは限らない。今回の焦点は、個々の XML の疎通ではなく、sitemap-index.xml …

2026/9/6 スタジオ日誌

「動いていないコード」の棚卸し — 未使用スクリプトの退役判断と形骸化した番犬の修正

手順書やルール文書に「必須」と書かれていたスクリプトが、実際には自動パイプラインのどこからも呼ばれておらず、本番記事にも長期間出力されていなかったことが判明した。対象は物販アフィリエイトの推薦ブロックを生成する scri…

2026/9/5 スタジオ日誌

異常通知(Discord)の総点検 — テスト投稿と設計どおりの配信を誤警報にしない

複数の自動ジョブやCIから送られる Discord 通知の履歴を点検したところ、直近7日間の通知 143件のうち、およそ 15% にあたる 22件が「自動テストの実行」に起因して本番チャンネルへ誤って投稿されていたことが…

2026/9/5 AI技術・実装

索引率の指標が「別々のURL窓」を比べていた — 壊れた観測を0%と偽らない指標ガードの設計

Google Search Console(GSC)の URL 検査 API を定期実行してサイトのインデックス率(索引率)を記録するパイプラインにおいて、API への問い合わせが 100件すべて HTTP 403 で失…

2026/9/5 AI技術・実装

番犬のexit codeを健康状態と混ぜない — 実行成否と異常通知を分離する

自動化の番犬が異常を見つけたとき、常に exit 1 を返す設計を見直した。launchd が見る終了コードは「番犬自身が点検を実行できたか」と「点検対象の世界に異常があるか」を同じ値で表していた。そのため、対象の異常が…

2026/9/4 スタジオ日誌

ドリップ公開が止まる/出ない時の切り分け手順

毎日1本ずつ公開するドリップ処理が止まったとき、公開処理本体だけを疑わず、下書き・検証・画像・生成元を順番に確認する切り分け手順を整理する。題材になった停止では、公開待ちの下書きが存在していたにもかかわらず、処理は先へ進…

2026/9/4 AI技術・実装

CI の Python を 3.9.6 から 3.11.9 へ上げた話(古いランタイムに縛られた自動化の移行)

self-hosted runner 上で動く自動化の Python 実行環境を、Apple 同梱の 3.9.6 の絶対パス参照から、pyenv で管理する 3.11.9 の解決へ移行した。対象は10個のワークフローで、…

2026/9/4 スタジオ日誌

取り下げた原稿が「救出」経路で復活して自動公開された — 削除ではなく印を残す

取り下げた原稿が、後から別の自動処理に救出され、公開レーンへ戻る経路を止めた。焦点は、取り下げ操作を「ファイルの削除」として扱わないことにある。削除されたファイルは、回収漏れの作業なのか、公開してはいけない原稿なのかを機…

2026/9/3 スタジオ日誌

Cloudflare Pagesの失敗が届かなかった — デプロイ経路を出口で止める

本番ビルドが失敗しても通知が読まれず、別の経路では検査完了を待たずに変更が main に入る状態を見直した。対象は記事の内容ではなく、記事を本番へ運ぶデプロイ経路である。失敗を検知するだけでなく、壊れた入力を出口へ進ませ…

2026/9/3 AI技術・実装

worktree に降りると .env を見失うスクリプトを共通ローダに寄せた

Git worktree から無人スクリプトを起動したとき、メインリポジトリにある .env を見失う問題を解決するため、設定の探索・読み込み処理を共通ローダへ集約した。対象は認証情報や通知設定を読む処理である。work…

2026/9/3 スタジオ日誌

M1 の launchd ジョブが異常終了していたのに気づけなかった — 未ロードを定期点検する

常駐ジョブについて、plist がリポジトリに存在することと、実機で正しくロードされていることを分けて点検する仕組みを整えた。対象は macOS の launchd で動く無人レーンである。設定ファイルを書いた、PRをマ…

2026/9/1 スタジオ日誌

自動投稿スクリプトが、別の自動処理が挿した画像を毎回消していた話

下書きから本文を組み直す更新処理と、公開後に画像を差し込む処理の間で起きた衝突を整理する。対象は、本文を下書きから再生成する投稿スクリプトと、既存投稿へ挿絵を追加する画像処理レッグである。別々に見るとどちらも正しい処理で…

2026/9/1 AI技術・実装

画像オフロードの403を再試行し続けない — 失敗を状態として残す

画像を外部から取得してアーカイブする処理では、HTTP 403 を一時的な拒否と見るか、恒久的に取得できない状態と見るかで挙動が変わる。以前の実装は Worker の 403 を一時障害と解釈し、再試行を続けていた。削除…

2026/9/1 スタジオ日誌

安全弁の点検スクリプトが環境差で嘘をつかないようにする

自動公開や定期処理には、動かすための設定だけでなく止めるための安全弁がある。問題は、その安全弁がルール上は有効でも、実機では別の値になっていることだ。さらに、別の機械から対象機を点検する場合、点検コマンドが対象機ではなく…

2026/8/29 AI技術・実装

無人ジョブを1件の画像エラーで止めない — 非同期attachの失敗隔離

記事本文の作成と画像処理を別のジョブで進める構成では、記事と画像の中間状態が必ず発生する。本稿では、画像attachの後段で1件のAPIエラーがバッチ全体を止めていた問題と、slug再検索・記事単位の失敗隔離による対処を整理する。

2026/8/29 AI技術・実装

蛍光マーカーの色を全媒体共通にするのをやめた話

本文の強調に使う色は、色コード単体で決められない。明るい背景向けの黄色いマーカーをダークテーマへ持ち込むと、白に近い本文との組み合わせが崩れ、強調したい箇所が読みにくくなる。そこで媒体ごとにテーマを分け、ダークテーマでは…

2026/8/29 AI技術・実装

Qwen3.8 27B をローカルで画像判定に当てて畳んだ — 導入手順と、MacBook Pro M5 Pro / 64GB に「LLMの仕事」がない話

生成した記事アイキャッチを、ローカルの視覚言語モデル Qwen3.8 27B で自動チェックする仕組みを組んだ。2日で本番投入し、対照実験を1本走らせて止めた。稼働は正味1日である。

2026/8/25 AI技術・実装

ビルドが緑でも本番は古い — デプロイのステイルネスを番犬で検知する

静的サイトのデプロイで怖いのは、ビルドが失敗して赤くなるケースだけではない。ビルドが走らず、本番が古い成果物を返し続けるケースがある。しかも古いページでも HTTP 200 を返すため、外形監視だけでは正常に見える。

2026/8/25 スタジオ日誌

パイプラインがミラー用リポジトリに直接書き込んでいた事故

自動処理の作業先を間違えると、単なる未追跡ファイルの増加では終わらない。origin/main を追従するためのミラー用チェックアウトへ画像生成レッグが prompts.json を書き戻し、未追跡の入力をそこへ残してい…

2026/8/25 スタジオ日誌

ルールに書いた安全弁が、実機に本当に入っているかを機械で点検する

自動公開の設定は、憲章や設計書に書かれているだけでは効かない。ジョブを止めたつもりでも launchd に残っている、設定ファイルを書き換えたのに再ロードしていない、環境変数が無いためスクリプトの既定値に戻っている、とい…

2026/8/24 スタジオ日誌

n8nとDifyを本線へ入れなかった理由 — 自動化の正本をどこに置くか

n8nとDifyを、既存のAI記事制作・公開パイプラインへ導入できるか評価した。結論は、どちらも技術的には導入可能だが、本線には入れないという判断である。理由は「動かないから」ではなく、現在の運用がgitを単一真実源とし…

2026/8/24 AI技術・実装

存在しないURLが200を返す — 静的サイトのsoft 404を二重に検知する

静的サイトを移行した後、存在しないURLへアクセスしてもトップページがHTTP 200を返すことがある。この状態はsoft 404と呼ばれ、ステータスコードだけを見る公開後チェックを無効にする。本稿では、404ページをビ…

2026/8/23 スタジオ日誌

無人パイプラインを駐車中のブランチから救い出す作業ルート設計

画像生成と記事処理を自動化すると、生成物の品質だけでなく「どのチェックアウトに書き込んだか」が成果物の回収可否を左右します。作業者がたまたまチェックアウトしていた本体リポジトリへ画像や状態ファイルを書き込む構成では、処理…

2026/8/23 AI技術・実装

秘匿情報を一括マスクしたら、無人ジョブの認証まで消えた話

外部から取得した本文をCLIへ渡す処理では、子プロセスに不要な環境変数を引き継がない方が安全です。そこで、名前に KEY、TOKEN、PASSWORD、SECRET、CREDENTIALS、WEBHOOK を含む環境変数…

2026/8/23 AI技術・実装

自動生成の補足を、出典の本文まで検査する設計にした

自動生成記事の補足欄に、内容としては正しそうな説明が入っていても、指定された出典が根拠になっていないことがあります。たとえば画像だけの投稿を出典に指定したり、存在しない投稿番号を指したり、出典本文を言い直しただけの文章を…

2026/8/21 スタジオ日誌

サーバーで動く実体とリポジトリの分岐を解消し、公開ループを版管理下へ戻した

静的サイトの公開ループについて、リポジトリが想定している構成と、常駐サーバーで実際に動いている構成が分岐していた状態を棚卸しした。今回の整理で、サーバー側にしか存在しなかった自動化のプロンプトと実行定義をリポジトリへ取り…

2026/8/21 スタジオ日誌

ブログ記事ページを「ターミナル/ラボ意匠」に作り替えた設計

ZashStudioの記事ページを、一般的なブログ本文の見た目から、ターミナルとラボノートを思わせる意匠へ変更した。対象は記事本文の内容ではなく、記事を読む画面の構造である。記事の場所を示すプロンプト風の行、ツリー形式の…

2026/8/20 スタジオ日誌

外部監査役に判定はさせない — Antigravity CLIをレビュー担当に据えた公開前チェックの設計

公開前レビューを、記事を実装したAI自身にやらせると、自分の書いた文章を自分でチェックする構図になる。見落としは見落としのまま素通りしやすい。そこで別のCLIツール(Antigravity CLI、略称agy)を「読者目…

2026/8/19 サービス設計

「どこから来たクリックか」を数える識別子が経路ごとにバラバラだった話

複数のWebメディアを横断で運営していると、「このクリックはどこから来たか」を表す識別子が、経路(Amazonアソシエイト・アフィリエイトリダイレクタ・直リンクのUTM)ごとにバラバラの語彙で振られていく。今回、実際に「…

2026/8/17 AI技術・実装

「あと何%使えるか」を1枚にした — 複数AIエージェントのクォータ計器を作った話

複数のAIエージェント(CLI)を並行して使っていると、各エージェントのトークン消費量を並べて見ても、「次の仕事をどこへ振るか」の判断材料にはならない。知りたいのは消費量そのものではなく、「あとどれくらい使えるか」と「今…

2026/8/15 AI技術・実装

反映されない時、Retry を押す前に見る3か所 — Cloudflare Pages の切り分け手順

マージしたのに本番が古いまま、という状況で最初にやることは再試行ではない。プロジェクトの特定、Status 列の読み方、トークンの切り分けの3つを順に見れば、押すべき時と押してはいけない時が分かれる。実際に押す場所を2回間違えた記録から手順化した。

2026/8/15 AI技術・実装

オープンウェイトは何が開いていないのか — 定義・ライセンス条項・動かす金額の実測

「オープンソースのAIモデル」と紹介されるものの大半は、オープンソースの定義を満たしていない。定義が要求する3点、ライセンスに実際に書いてある制限、学習データの開示状況、そして動かすのに要る金額を、一次資料と実勢価格で並べた。呼び方ではなく条項と数字で判定するための資料。

2026/8/15 サービス設計

「公開していい?」の確認をやめて、公開後レビュー+督促で閉じるループに設計し直した話

姉妹メディアの一つ(the NTM)で、記事公開前に人間の承認を待つゲートを外し、「出してから直す」設計に切り替えた。無人で公開するかわりに、公開後チェックのワークフローと督促スクリプトを追加し、機械的に直せる範囲はその…

2026/8/14 AI技術・実装

記事本文にアフィリンクを焼き込まず、ビルド時にremarkで自動注入する設計にした話

版元が運用する旅行系媒体の一つ(以下 TB)では、記事本文に Amazon・楽天のアフィリエイト CTA を直接書き込む運用をしていた。この方式は、リンク切れやアソシエイトタグの変更が起きるたびに、該当する記事を1本ずつ…

2026/8/14 AI技術・実装

AIに反対弁論をさせてから数字を取る — 安いモデルを編成に足さなかった検討記録

1桁安いフロンティアモデルを自動化基盤の手駒に足すか検討した。結論は不採用だが、記事の中身は結論ではなく手順にある。AIに現状肯定をさせた後で役を反転させ、全力で導入を説得させてから数字を取りに行った。その結果「直感は当たっていたが、理由は外れていた」ことが分かった記録。

2026/8/12 AI技術・実装

「astro buildに失敗」という通知が嘘をついていた話 — 真因はnpmが見えていないことだった

常駐サーバのlaunchdジョブとして、内部リンク補強スクリプトを毎日回している。ある日から、正当なリンク修正の自動マージが毎回見送られ、Discordには「astro buildに失敗」とだけ通知が届くようになった。ビ…

2026/8/11 AI技術・実装

AI検索を第二戦線にする — llms.txt と構造化データを静的ブログに入れた

検索エンジンからの流入経路とは別に、LLM(ChatGPTやClaudeなどの対話型AI、あるいはそれらが使う検索基盤)に直接読まれる経路を整備した実装記録。やったことは大きく2つで、(1) サイトの構造・記事一覧をAI…

2026/8/10 スタジオ日誌

4つの指標を見に行くのをやめて「週1レコード」に集約した話

ゼロから始めたAI執筆ブログが検索エンジンにどう発見・評価されていくかを追うために、GSC・Google索引カバレッジ・Bing・GA4という4つの指標をバラバラに見に行くのをやめ、週1回1レコードへ集約するスクリプトを…

2026/8/9 AI技術・実装

「本文が詰まって見える」の真犯人はテーマ側の1行のmarginだった話

版元が運用する媒体の一つ(以下 MT)で「本文が読みにくい」という指摘があった。「読みにくい」は主観的な感想で、そのままでは直しようがない。実際に CSS まで遡って原因を特定し、対処を組み立て、さらに本番へ可逆な形でデ…

2026/8/8 AI技術・実装

AIエージェントを役割で使い分ける — 性能・コスト・用途の実測メモ

複数のAIエージェント(Claude Code / Codex / Antigravity / Gemini API)を1つの自動化基盤に同居させて運用している。どれが「速いか」ではなく「同じ枠で何タスク完了するか」で並べ直した実測メモ。週間トークンの65.5%を無人サーバが食っていた件と、その配分をどう組み替えたかを記録する。

2026/8/7 サービス設計

複数のAIに仕事を渡すとき、「誰が何を決めてよいか」を先に契約にする

同じリポジトリで複数のAIエージェントを併走させていると、最初にぶつかる壁は技術的な衝突ではなく権限の衝突だった。「この判断は自分でやってよいのか」が曖昧なまま走らせると、勝手に踏み込んで事故を起こすか、逆に許可を待って…

2026/8/6 サービス設計

メディア運用を「4つのループ×計測」で標準化した

複数の媒体でコンテンツ運用をしていると、うまくいく媒体とそうでない媒体のやり方が少しずつ独自進化して、横に揃えるのが難しくなる。それぞれの媒体担当が経験則で「このやり方が効く」と思い込んだまま運用が固定化すると、新しい媒…

2026/8/5 スタジオ日誌

散文で書いたルールは守られない — 実名の漏れをCIの機械ゲートで閉じた話

外部に公開する制作ログの初稿に、伏せて運用しているはずの姉妹プロジェクトの名前とリポジトリの実パスが載ったまま上がってきたことがあった。ルール自体はドキュメントに明文化されていたが、「書く側が毎回思い出す」ことに依存して…

2026/8/4 AI技術・実装

自動化は「壊れる」より「静かに枯れる」で止まる — 在庫切れを鳴らす側の設計

実装ステータス: 実装済み(複数の公開パイプラインで稼働中)

2026/8/3 AI技術・実装

エージェントの過去セッションを横断検索できるようにした — ctx 導入記録

コーディングエージェントを複数マシンで使っていると、「あの判断、どのセッションでやったか」が誰にも分からなくなる。ログは各マシンのホームディレクトリに JSONL で残っているが、機械横断で検索する手段が標準では無い。

2026/8/2 AI技術・実装

コードグラフでエージェントの読み込みトークンは98%減った(ただしgrepが勝つ問いもある) — AI利用コスト実測レポート #02

シリーズ第1回は「定額プランで月いくら得しているか」という総量の話だった。今回は逆方向、投げるトークンそのものを減らす側を測る(第1回で予告したモデル別内訳は次回に回す)。

2026/7/31 スタジオ日誌

見出し画像が無い記事を「公開させない」のをやめた話 — ゲートを足すと詰まる

版元が運用している媒体のひとつで自動公開を回していたところ、見出し画像が無いまま記事が1本公開された(2026-07-23)。素直な対処は「画像が無い記事は公開させない」というゲートを1行足すことだが、実際にはそれを避けた。なぜ…

2026/7/30 スタジオ日誌

定額プランは実際いくら得しているか — AI利用コスト実測レポート #01

GitHub組織プロフィール向けに「AI Compute」バッジを作った。直近7日と観測期間累計のトークン使用量を、従量課金APIで処理した場合のコストに換算して表示するものだ。作りながら、このロジックはそのまま読者向け…

2026/7/30 AI技術・実装

「なぜそうしたか」を履歴から引くと1,166,528トークン、専用インデックスなら5,893 — AI利用コスト実測レポート #03

第2回は「今のコードはどう繋がっているか」をコードグラフで引く話だった。今回は対になるもう半分、「なぜそうしたか」を過去のセッション履歴から引く側を測る。

2026/7/30 AI技術・実装

CIの無料枠が尽きると自前ランナーまで止まる — 自動マージをローカル常駐プロセスへ移した話

GitHub Actions の無料実行枠を使い切った際、セルフホスト(self-hosted)ランナーを用意しているにも関わらず、すべての CI ジョブが止まることに気づいた。恒久策として、ドラフト PR の自動マージ…

2026/7/30 AI技術・実装

サイトは200を返したまま「計測だけ」死ぬ — 測定タグの生死をHTTPステータスで判断してはいけない

自社の複数サイトで GA4 計測の断絶が同時発覚した。いずれもサイト自体は正常に HTTP 200 を返しており、通常の死活監視では一切捕まらないタイプの障害だった。「計測そのものを監視する」番犬(scripts/mea…

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 フレームワークへ移行を開始した記録。