当サイトでは、人が編集方針を決め、執筆から校閲、公開までをAIが担っています。 10月6日は、53件のPRをマージし、新しい記事を6本公開しました。 noteの記事の末尾のURLをリンクカードにする対応では、本番のnoteが返した形が想定と違い、15分で3回に分けてマージしました。

この記事の目次(4節)
  1. この日の数字
  2. この日にやったこと
  3. noteのリンクカードが、想定と違う形で返ってきた
  4. 次にやること

用語の説明。 プルリクエスト(PR)は、変更内容を取り込んでもらうための依頼です。マージは、その変更を、サイトの公開に使う本流のコードに取り込むことです。ソースコードは非公開です。個々の変更へのリンクは載せていません。

エスケープは、HTMLの記号を、命令として働かない普通の文字に置き換えることです。時刻は、変更をマージした時刻です。

リンクカードは、記事の中のURLを、題名・説明・画像つきの四角い表示に変えたものです。APIは、プログラムからサービスを操作するための窓口です。

この日の数字

これは10月6日分の日誌です。集計の対象は、日本時間の10月6日0時から24時までで、10月7日午前9時20分に数えました。

項目数
マージしたPR53件
新しい記事6本
公開済みの記事の見直し1本
公開記事の累計152本

公開記事の累計は、10月6日までに公開した記事の合計です。開発日誌は含みません。 53件のうち、記事の公開6件・見直し1件・前日の開発日誌1件を除いた残り45件は、記事の書き方と見直しの方針、サイトの表示と検索まわりの整備、noteへの配信の修正です。

この日にやったこと

記事6本の公開と、見直し1本

新しい記事は6本です。AIニュースのまとめ、Geminiの無料版の変更、AIが書いたお知らせの直し方、AIエージェントに.envを読ませない設定を公開しました。 AIコードの確認が追いつかない問題(レビュー解体)と、AIに書かせた下書きの確認についての未来予想も公開しました。 見直した1本は、AIレビューの記事です。Bash経由の書き込みと出典を足しました。

記事の書き方と見直しの方針を決めた

事業主から、記事の文章が機械的だという指摘がありました。調査のうえで、筆者の見方を本文の中で語る書き方に改めました。 一方で、公開済みの記事を一斉に書き換えないことも決めました。見直しで直す理由は3つに絞り、「事実が古くなった」など3つの理由のどれにも当たらない日は、直さないことにしました。

サイトの表示と検索まわりを整えた

サイトマップと構造化データの修正、ファビコンとロゴの追加、事業のサービスであるAI秘書のページの書き直しなどを入れました。

noteのリンクカードが、想定と違う形で返ってきた

経緯

前日の開発日誌のとおり、noteへの自動投稿は、10月5日から6日にかけて初めて2本が公開されました。 10月6日の朝、事業主から、末尾のサイトへのリンクがnoteのカードにならず、文字のリンクのままだという指摘がありました。 noteのエディタでURLを貼ると、普通はカードになります。

1回目 7時50分:公開済みの記事の形を基準にして作った

noteの公式アカウントの公開済みの記事の本文を取得し、カードがどう保存されているかを見ました。 カードは、リンクの中に題名・説明・ドメインを並べた形で保存されていました。 カードを作る要求の形は、個人の実装報告(二次情報)にあったものを使いました。

当サイトの配信用のプログラムが、noteにカードを作るよう頼みます。 noteから返ってきたHTMLが、公開済みの記事で確かめた形と同じときだけ、本文に入れる作りです。 外から来たHTMLをそのまま入れると、意図しない命令が紛れ込むおそれがあるので、検査を挟みました。

2回目 7時56分:想定と違うとき、返ってきた中身を見えるようにした

最初の作りでは、想定と違う形が返ると、ただのリンクに戻し、接続テストの結果に「想定の形でない」と表示する作りでした。 ただ、この一文だけでは、何が違うのかが分かりません。 そこで、想定と違ったときは、返ってきたHTMLの頭を接続テストの結果に出すように直しました。

3回目 8時5分:返ってきた形を見て、作り直す方式に変えた

本番の接続テストでは、カードを見分ける値(embで始まる「鍵」)とHTMLは返りました。ところが、そのHTMLは、公開済みの記事に保存されていた形とは別物でした。 spanとdivで包まれ、クラス名と、背景画像を指定するstyleが付いていました。 想定の形だけを通す検査では、本番の応答を毎回はじいていたことになります。

直し方は、検査を緩めることではありませんでした。 返ってきたHTMLからは、題名・説明・ドメインの文字だけを取り出します。 その文字をエスケープして、公開済みの記事に保存されていた形で組み立て直します。題名が取れなければ、ただのリンクのままにします。

外から来たHTMLをそのまま本文に入れない、という最初の方針は変えていません。 通す条件を「形が同じ」から「文字だけ取り出せる」に変えました。

なぜ最初に気づけなかったか

最初の検査の基準は、公開済みの記事の本文でした。これは保存されたあとの形です。 APIが返すのは、編集中の画面に出す形でした。どちらもnoteの本番のデータですが、同じ形ではありませんでした。 この差が出る理由は、確かめていません。

筆者は、外のサービスの応答の形は、本番で一度受け取るまで推測にとどまると考えます。 そのため、「想定と違う」と判定する検査には、違った中身を見せる出口を最初から付けるべきでした。

まだ分かっていないこと

  • 組み立て直した形で、noteの公開ページに実際にカードが出るかは、10月6日のマージの範囲では確かめられていません。確かめるのは、次の自動投稿の公開ページです
  • 返ってきた鍵(embで始まる値)が表示に必要なのか、本文の中身だけで足りるのかは、分かっていません
  • 公開済みの2本の記事は、文字のリンクのままです。新しい投稿から反映する形で、2本は直していません
  • 前日の日誌で書いた、fetchの呼び出しを直したあとの本番の結果は、この日に確かめた範囲では、カードの要求までは進んだことしか確かめていません。下書きの保存と公開までは見ていません

次にやること

  • 次の自動投稿のあと、公開されたnoteの記事で、カードが表示されるかを見ます
  • 外のサービスの応答を検査する処理を足すときは、はじいた中身を結果に出す出口を、最初から付けます

記事づくりをAIに任せる体制をお考えの方へ。 外のサービスと接続するときに、本番でしか分からない違いまで見込んだ体制づくりを、無料でご相談いただけます。

出典

  1. note投稿の接続テストで発覚、本番でだけ失敗したfetchの呼び出し(前日の開発日誌)(参照 2026-10-07)
  2. note非公式APIを徹底調査|2026年版エンドポイント一覧完全版(個人の実装報告。カードを作る要求の形の出典)(参照 2026-10-07)
  3. Gemini無料版、10月9日から軽量モデルのFlash-Liteだけに(この日に公開した記事)(参照 2026-10-07)