diff --git a/README.md b/README.md
index 15667e3..5cc7e96 100644
--- a/README.md
+++ b/README.md
@@ -157,3 +157,9 @@ Astro は記事の中身が変わらないと、前の変換結果（`node_modul
 - 同じ記事へのリンクは本文の最初の1か所だけ。書き手が手でリンクを付けていれば、それを1か所目とみなして足さない
 - 自分自身・存在しない番号・リンク／コード／見出し／図の説明の中・ファイル名（`LOG339_01_….png`・`LOG346.md`）・`Log#5` のようなシリーズの中の番号はリンクにしない
 - 英語の記事では、英語版（`LOG201EN`）があればそちらへつなぐ。中のページなので同じタブで移る
+
+## シリーズのページの表・ドキュメント（Google から写す）
+
+- /series1 のスプレッドシートと要件定義書は、iframe で埋め込まず、ページに直接載せている（`src/components/SeriesSheet.astro`・`SeriesDoc.astro`）
+- 中身は Google の「ウェブに公開」版の写し（`src/data/series_docs.json`）。Google 側を直したら `python3 tools/fetch_series_docs.py` を動かして push する。自動では追いかけない
+- 載せる場所は `src/data/static.json` の `{"type": "sheet" | "doc", "key": ...}`。`height` を付けると、その高さで枠の中をスクロールする
diff --git a/src/data/static.json b/src/data/static.json
index fa5b997..82854f4 100644
--- a/src/data/static.json
+++ b/src/data/static.json
@@ -22,8 +22,8 @@
     "link": null
    },
    {
-    "type": "iframe",
-    "html": "<iframe src=\"https://docs.google.com/spreadsheets/d/e/2PACX-1vQnqeo6YmdjAz9VQiH8-PYR4OzF9RdlgEOBe-SMtNjYcwdeHkkw2gNTOnLw9jSHBcWmIT3gaxnYnTH6/pubhtml?widget=true&amp;headers=false\" \n  width=\"100%\" \n  height=\"640px\" \n  frameborder=\"0\">\n  </iframe>",
+    "type": "sheet",
+    "key": "hakobu-progress",
     "height": 640
    },
    {
@@ -32,8 +32,8 @@
     "link": null
    },
    {
-    "type": "embed",
-    "html": "<div class=\"embed\"><iframe src=\"/embeds/series1-1.html\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-presentation\" loading=\"lazy\" title=\"図解\" data-embed allowfullscreen></iframe></div>",
+    "type": "sheet",
+    "key": "hakobu-design-note",
     "height": 480
    },
    {
@@ -42,14 +42,14 @@
     "link": null
    },
    {
-    "type": "embed",
-    "html": "<div class=\"embed\"><iframe src=\"/embeds/series1-2.html\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-presentation\" loading=\"lazy\" title=\"図解\" data-embed allowfullscreen></iframe></div>",
-    "height": null
+    "type": "doc",
+    "key": "hakobu-requirements",
+    "height": 800
    },
    {
-    "type": "embed",
-    "html": "<div class=\"embed\"><iframe src=\"/embeds/series1-3.html\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-presentation\" loading=\"lazy\" title=\"図解\" data-embed allowfullscreen></iframe></div>",
-    "height": null
+    "type": "doc",
+    "key": "tsukamu-requirements",
+    "height": 800
    },
    {
     "type": "text",
@@ -67,9 +67,8 @@
     "link": null
    },
    {
-    "type": "embed",
-    "html": "<div class=\"embed\"><iframe src=\"/embeds/series4-1.html\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-presentation\" loading=\"lazy\" title=\"図解\" data-embed allowfullscreen></iframe></div>",
-    "height": null
+    "type": "sheet",
+    "key": "flow-library"
    }
   ]
  },
diff --git a/src/pages/[series].astro b/src/pages/[series].astro
index 6541048..286844a 100644
--- a/src/pages/[series].astro
+++ b/src/pages/[series].astro
@@ -6,6 +6,8 @@ import LoadMore from '../components/LoadMore.astro';
 import GuideBanner from '../components/GuideBanner.astro';
 import ThinkingBanner from '../components/ThinkingBanner.astro';
 import ServingBanner from '../components/ServingBanner.astro';
+import SeriesSheet from '../components/SeriesSheet.astro';
+import SeriesDoc from '../components/SeriesDoc.astro';
 import { seriesCards, SERIES_PAGES } from '../lib/records';
 import { media } from '../lib/media';
 import staticPages from '../data/static.json';
@@ -46,6 +48,8 @@ const jsonLd = {
       b.type === 'text' ? (b.link ? <a class="s-label" href={b.link} target={b.link.startsWith('/') ? undefined : '_blank'} rel={b.link.startsWith('/') ? undefined : 'noopener'} set:html={b.html} /> : <p class="s-label" set:html={b.html} />)
       : b.type === 'iframe' ? <div class="s-frame" style={`height:${b.height}px`} set:html={b.html} />
       : b.type === 'embed' ? <div class="s-embed" set:html={b.html} />
+      : b.type === 'sheet' ? <SeriesSheet id={b.key} height={b.height} />
+      : b.type === 'doc' ? <SeriesDoc id={b.key} height={b.height} />
       : b.type === 'img' ? (b.link ? <a class="s-img" href={b.link} target="_blank" rel="noopener"><img src={media(b.src)} alt={b.alt || conf.title} loading="lazy" /></a> : <div class="s-img"><img src={media(b.src)} alt={b.alt || conf.title} loading="lazy" /></div>)
       : null
     ))}
