HTML blocks via the API (Notion Changelog 7/3) : hkob の雑記録 (546)

はじめに

hkob の雑記録の第546回目(連続120日目)は、7/3 の Notion Developer Changelog を解説します。

HTML blocks via the API

7/3 の Changelog は以下のようになっていました。

7/3 の Changelog

API で HTML ブロック を作成できるようになりました。File Upload API で .html ファイルをアップロードし、ブロックの子要素を追加するとき、ページを作成するとき、またはブロックを更新するときに、embed.file_upload を通じて埋め込みブロックに添付します。Notion アプリは、そのファイルの内容をサンドボックス化された iframe 内でインタラクティブにレンダリングします。これは、アプリが /html コマンドで作成する HTML ブロック、およびエージェントが Notion MCP を通じて作成する HTML ブロックと同じものです。

API で HTML ブロックをアップロードできるようになりました。Block はこれまでの embed ブロックで、そこに html ファイルをアップロードできるようになっています。

HTML blocks

API Reference も確認してみます。すると、Embed の項目のサブセクションとして HTML blocks が用意されていました。翻訳しておきます。

アップロードされた HTML ファイルを元にした埋め込みは HTML ブロックです。Notion アプリは、そのファイルにリンクするのではなく、サンドボックス化された iframe 内でファイルの内容をインタラクティブにレンダリングします。これは、アプリが /html コマンドで作成するブロック、およびエージェントが Notion MCP を通じて作成するブロックと同じものです。API で HTML ブロックを作成するには、次のようにします。

  1. File Upload API を使用して、.html または .htm 拡張子のファイルをアップロードします。
  2. ブロックを作成または更新するときに、embed.file_upload を通じて埋め込みブロックに添付します。

HTML ブロックを作成する

{
  "type":"embed",
  "embed": {
    "type":"file_upload",
    "file_upload": {
      "id":"43833259-72ae-404e-8441-b6577f3159b4"
    }
  }
}

HTML ブロックを取得すると、他のファイルベースの埋め込みと同様に、元の HTML ファイルに対する一時的な署名付き embed.url が返されます。埋め込みを HTML 以外のファイルまたは url を指すように更新すると、通常の埋め込みに戻ります。

おわりに

embed ブロックの file_upload は NotionRubyMapping には実装していないので、早速実装したいと思います。一昨日の named icon と今回のものを追加しておきます。また、markdown の async: true もついでに実装しておきます。

hkob.notion.site