[{"data":1,"prerenderedAt":691},["ShallowReactive",2],{"content-/2026-06-18-diary":3,"all-pages-for-dir":689,"og-image-/2026-06-18-diary":690},{"id":4,"title":5,"body":6,"category":671,"description":672,"extension":673,"meta":674,"navigation":598,"ogImage":675,"path":676,"project_name":677,"published":678,"publishedAt":679,"seo":680,"stem":681,"tags":682,"todo":675,"unpublished":678,"updatedAt":675,"__hash__":688},"pages/2026-06/2026-06-18/diary-2026-06-18.md","2026年6月18日の開発日記 - Kindle取り込みパイプライン完成と裏方タスクの整理",{"type":7,"value":8,"toc":652},"minimark",[9,14,31,35,42,45,50,61,67,94,105,108,112,119,123,134,142,144,148,161,165,187,195,197,201,208,212,223,231,233,237,240,244,260,268,270,274,277,281,292,300,302,306,333,337,345,353,355,358,557,559,562,582,584,587,613,615,618],[10,11,13],"h1",{"id":12},"_2026年6月18日の開発日記","2026年6月18日の開発日記",[15,16,17,18,22,23,26,27,30],"p",{},"朝から Kindle Cloud Reader の取り込みパイプラインに張り付き、Chrome 拡張で1ページ目から最終ページまで巡回スクショ → OCR → Turso 投入の流れを ",[19,20,21],"code",{},"/yomitoku-kindle"," 一発で回せる状態まで持っていった。途中で「目次照準が逆」の罠を踏み、画像順序を反転して再 OCR したり、撮影中に Chrome 拡張 UI が映り込む問題を別ウィンドウ分離で抜けたり、罠を一つずつ抜けた一日だった。並行して Eurekapu の Nuxt4 移行で「インタラクティブは Vue、純粋テキストは HTML」のルールを言語化し、",[19,24,25],{},"make-diary"," には朝7時のタスクスケジューラが空振りした日の保険として ",[19,28,29],{},"/update-portfolio"," をチェーン実行する仕組みを足した。",[32,33,34],"h2",{"id":34},"今日のタイムライン",[15,36,37],{},[38,39],"img",{"alt":40,"src":41},"タイムライン","/2026-06/2026-06-18/timeline-2026-06-18.png",[32,43,44],{"id":44},"今日やったこと",[46,47,49],"h3",{"id":48},"_1-kindle-cloud-reader-取り込みパイプラインの完成","1. Kindle Cloud Reader 取り込みパイプラインの完成",[15,51,52,53,56,57,60],{},"Kindle 本を裁断するわけにいかないので、Chrome 拡張機能 ",[19,54,55],{},"chrome-extension-kindle"," が1ページずつスクショを撮って ",[19,58,59],{},"/yomitoku"," パイプラインに渡す形に統合した。途中で目次のページ順が逆になっていてバグり、画像順序を反転してから再 OCR で復旧。撮影中に拡張 UI が映り込む問題は、撮影開始時に Floating Panel を一時退避する形に変えて解消した。",[15,62,63],{},[64,65,66],"strong",{},"主な成果:",[68,69,70,80,91],"ul",{},[71,72,73,75,76,79],"li",{},[19,74,21],{}," スラッシュコマンドが Chrome 拡張トリガー → OCR → Turso 投入 → ",[19,77,78],{},"/restructure-book"," まで自動チェーン",[71,81,82,83,86,87,90],{},"read.amazon.co.jp/notebook の内部 API からハイライト・メモを正規化 JSON で取得し ",[19,84,85],{},"kindle_library"," / ",[19,88,89],{},"kindle_highlights"," テーブルへ",[71,92,93],{},"Chrome 拡張 UI に Floating Panel 追加（クリック不要で操作可能、撮影中は退避）",[15,95,96,99,100],{},[64,97,98],{},"詳細:"," ",[101,102,104],"a",{"href":103},"/yomitoku-kindle-pipeline","Kindle Cloud Reader 取り込みパイプラインの完成",[106,107],"hr",{},[46,109,111],{"id":110},"_2-eurekapu-nuxt4-移行-コンテンツの-html-化ルール策定","2. Eurekapu Nuxt4 移行: コンテンツの HTML 化ルール策定",[15,113,114,115,118],{},"Plan E Phase F-1 で financial-statements カテゴリを Vue から外部 HTML 化しようとしたところ、",[19,116,117],{},"useI18n","・slot scope・動的 component を踏んで中止判定。代わりに「インタラクティブ教材は Vue、純粋な解説テキストは HTML」という判断軸を CLAUDE.md に書き残した。純粋テキストを Vue にするとバンドルが重くなる、という観点を言語化できた。",[15,120,121],{},[64,122,66],{},[68,124,125,128,131],{},[71,126,127],{},"Phase F-1 のゲートチェックで Plan E をいったん凍結",[71,129,130],{},"CLAUDE.md に「Vue vs HTML」の判断軸を追記し、議論ドキュメントへの参照を残した",[71,132,133],{},"過去 Vue コンテンツのうち「Vue 残置」「HTML 化候補」のテーブルを整理",[15,135,136,99,138],{},[64,137,98],{},[101,139,141],{"href":140},"/eurekapu-nuxt4-content-html-rules","Eurekapu Nuxt4 移行のコンテンツHTML化ルール",[106,143],{},[46,145,147],{"id":146},"_3-make-diary-に-update-portfolio-をチェーン化","3. make-diary に /update-portfolio をチェーン化",[15,149,150,151,153,154,156,157,160],{},"毎朝7時の Windows タスクスケジューラが PC スリープで空振りする日が出ていたので、",[19,152,25],{}," の最後で ",[19,155,29],{}," を呼ぶようにして保険を二重化した。",[19,158,159],{},"--skip-if-today-success"," フラグで当日成功実行があれば 1 行スキップする設計にしたので、タスクスケジューラと make-diary 経由が二重で叩いてもポートフォリオシートは破壊されない。今朝の分はタスクが空振りしていたので、make-diary 経由で手動実行して回収した。",[15,162,163],{},[64,164,66],{},[68,166,167,173,181],{},[71,168,169,170,172],{},"ユーザーレベルの ",[19,171,29],{}," スラッシュコマンドを新設",[71,174,175,177,178,180],{},[19,176,25],{}," の Step 12 に ",[19,179,159],{}," 付きでチェーン実行を追加",[71,182,183,186],{},[19,184,185],{},".last-success-date"," ファイルで二重実行を回避",[15,188,189,99,191],{},[64,190,98],{},[101,192,194],{"href":193},"/make-diary-update-portfolio-chain","make-diary に /update-portfolio をチェーン化した話",[106,196],{},[46,198,200],{"id":199},"_4-turso-bytes-synced-クォータ警告-httpオンリーへ寄せる判断","4. Turso Bytes Synced クォータ警告 → HTTPオンリーへ寄せる判断",[15,202,203,204,207],{},"Turso から「Bytes Synced が組織クォータの 75% を超えた」警告が届いた。",[19,205,206],{},"conn.sync()"," で migration スクリプトがハングする現象も並行して起きていて、Embedded Replica の sync が原因だと点と点がつながった。月リセットまではまだ余裕があるので、急ぎ全切替はせず HTTP オンリーで使う用途と Embedded Replica で使う用途を切り分ける方針に落とした。",[15,209,210],{},[64,211,66],{},[68,213,214,217,220],{},[71,215,216],{},"Turso Cloud のアナリティクスを Chrome DevTools 経由で確認",[71,218,219],{},"migration ハングの真犯人を sync 周りと特定",[71,221,222],{},"用途別に HTTP オンリー / Embedded Replica を使い分ける運用ルールを暫定で決定",[15,224,225,99,227],{},[64,226,98],{},[101,228,230],{"href":229},"/turso-bytes-sync-quota-http-only","Turso Bytes Synced 75%警告と HTTPオンリー化の判断",[106,232],{},[46,234,236],{"id":235},"_5-winbond-ローマ字表記対応と-ai-メモリ構造転換の記事化","5. Winbond ローマ字表記対応と AI メモリ構造転換の記事化",[15,238,239],{},"Winbond Electronics の NOR フラッシュが NVIDIA サプライチェーンに参入する報を受けて memory-makers の Winbond ページを開こうとしたら、「ウィンボンド」でしか検索に引っかからない状態に気づいた。社名表記をローマ字でも引けるように整え、並行して「AI メモリサイクルは PC 時代 30 年 + スマホ時代 15 年が 7 年に圧縮された構造的大転換」という観点で SVG 図解付きの記事を起こした。",[15,241,242],{},[64,243,66],{},[68,245,246,249,257],{},[71,247,248],{},"/memory-makers/winbond のローマ字表記対応",[71,250,251,252,256],{},"AI メモリサイクル記事 + SVG 3 枚で図解を公開（",[101,253,255],{"href":254},"/ai-memory-cycle-still-early-stage","AIメモリサイクルはまだ「3合目」","）",[71,258,259],{},"doc-communication + svg-diagram + content-management の3スキル併用フロー",[15,261,262,99,264],{},[64,263,98],{},[101,265,267],{"href":266},"/memory-makers-misc-updates-2026-06-18","Winbond表記対応とAIメモリサイクル構造転換の記事化",[106,269],{},[46,271,273],{"id":272},"_6-冨樫義博短編小説を長編に膨らませるアイデア術の解析","6. 冨樫義博「短編小説を長編に膨らませる」アイデア術の解析",[15,275,276],{},"夜の作業として、冨樫義博がインタビューで語った「短編小説を読んで長編に膨らませる」発言のファクトチェックに入った。レベルEに出てくる「江戸川美穂・筒井雪隆・ディスクン星人」などの作家名露出を起点に、ハンターハンターの設定がどの短編から育ったかを推測まで進めた。引用元（ヘタッピマンガ研究所R STEP16）と推測を明示的に区切る形で公開記事化。",[15,278,279],{},[64,280,66],{},[68,282,283,286,289],{},[71,284,285],{},"発言の出典をヘタッピマンガ研究所R STEP16 と特定",[71,287,288],{},"レベルE = 露骨な引用、ハンターハンター = 隠喩的な引用、という引用レイヤーの差を整理",[71,290,291],{},"玩具修理者・ファッションモデル・ヘルレイザーなど、原典→作中表現の対応をピンポイントで突き合わせ",[15,293,294,99,296],{},[64,295,98],{},[101,297,299],{"href":298},"/togashi-short-stories-method","冨樫義博は短編小説をどう膨らませるか",[106,301],{},[46,303,305],{"id":304},"_7-obsidian-kindle-プラグインの実装メモを公開記事化","7. Obsidian Kindle プラグインの実装メモを公開記事化",[15,307,308,309,312,313,316,317,320,321,324,325,328,329,332],{},"Kindle Cloud Reader からハイライトを取る別経路として、Obsidian の ",[19,310,311],{},"hadynz/obsidian-kindle-plugin"," がどう実装しているかを実装ファイルから読み解いた。Electron ",[19,314,315],{},"remote.BrowserWindow"," で Amazon にユーザーログインさせて cookie を ",[19,318,319],{},"persist:kindle-highlights"," partition に保持、hidden BrowserWindow で ",[19,322,323],{},"read.amazon.xx/notebook"," を ",[19,326,327],{},"loadURL"," → ",[19,330,331],{},"executeJavaScript"," で HTML を抜き出し cheerio でパース、という pass-through 認証方式だった。Chrome 拡張 + DevTools MCP で実装する場合との差分も並べた。",[15,334,335],{},[64,336,66],{},[68,338,339,342],{},[71,340,341],{},"Obsidian Kindle プラグインの認証・スクレイピング・差分同期の構造を整理",[71,343,344],{},"Chrome 拡張 + DevTools MCP 経路との比較表を作成",[15,346,347,99,349],{},[64,348,98],{},[101,350,352],{"href":351},"/obsidian-kindle-plugin-internals","Obsidian Kindle Highlights プラグインの実装メモ",[106,354],{},[32,356,357],{"id":357},"今日の試行錯誤",[359,360,361,383],"table",{},[362,363,364],"thead",{},[365,366,367,371,374,377,380],"tr",{},[368,369,370],"th",{},"#",[368,372,373],{},"テーマ",[368,375,376],{},"試したこと",[368,378,379],{},"結果",[368,381,382],{},"気づき",[384,385,386,404,421,438,455,472,489,506,523,540],"tbody",{},[365,387,388,392,395,398,401],{},[389,390,391],"td",{},"1",[389,393,394],{},"Kindle 巡回スクショの順序",[389,396,397],{},"デフォルト順で OCR",[389,399,400],{},"目次が抜けた",[389,402,403],{},"撮影順が逆だった → 画像順序をプログラムで反転",[365,405,406,409,412,415,418],{},[389,407,408],{},"2",[389,410,411],{},"Chrome 拡張 UI の映り込み",[389,413,414],{},"UI を常時表示のまま撮影",[389,416,417],{},"OCR にゴミが混ざる",[389,419,420],{},"撮影中だけ Floating Panel を退避する形に変更",[365,422,423,426,429,432,435],{},[389,424,425],{},"3",[389,427,428],{},"OCR 背景色",[389,430,431],{},"黒背景で撮影",[389,433,434],{},"図として識別される領域が落ちた",[389,436,437],{},"次回から白背景＋黒文字で撮影に統一",[365,439,440,443,446,449,452],{},[389,441,442],{},"4",[389,444,445],{},"Kindle 拡張アイコンクリック",[389,447,448],{},"クリック必須UI",[389,450,451],{},"自動化に組み込めず",[389,453,454],{},"amazon.co.jp 訪問時に表示する Floating Panel に切り替えて解消",[365,456,457,460,463,466,469],{},[389,458,459],{},"5",[389,461,462],{},"Plan E Phase F-1",[389,464,465],{},"financial-statements の Vue → HTML 化",[389,467,468],{},"useI18n / slot scope / 動的 component で中止",[389,470,471],{},"純粋テキストでも i18n/slot を使っていれば HTML 化対象外、と判断軸を更新",[365,473,474,477,480,483,486],{},[389,475,476],{},"6",[389,478,479],{},"Vue vs HTML の置き場",[389,481,482],{},"「全部 Vue でいい」発言",[389,484,485],{},"バンドルに乗る",[389,487,488],{},"純粋テキストは HTML に、インタラクティブは Vue に、というルールを CLAUDE.md 化",[365,490,491,494,497,500,503],{},[389,492,493],{},"7",[389,495,496],{},"タスクスケジューラ空振り",[389,498,499],{},"朝7時に PC スリープ",[389,501,502],{},"ポートフォリオシートが更新されず",[389,504,505],{},"make-diary の末尾でチェーン実行、--skip-if-today-success で二重実行回避",[365,507,508,511,514,517,520],{},[389,509,510],{},"8",[389,512,513],{},"Turso migration ハング",[389,515,516],{},"conn.sync() で待ち",[389,518,519],{},"戻ってこない",[389,521,522],{},"Bytes Synced クォータ 75% 警告で、sync が真犯人と特定",[365,524,525,528,531,534,537],{},[389,526,527],{},"9",[389,529,530],{},"AI メモリ図解",[389,532,533],{},"「太もも」イメージ図を入れる案",[389,535,536],{},"表現が強すぎて本論が霞む",[389,538,539],{},"太もも図は削除、構造転換の流れだけ SVG 3 枚に絞った",[365,541,542,545,548,551,554],{},[389,543,544],{},"10",[389,546,547],{},"Winbond 表記",[389,549,550],{},"「ウィンボンド」のみで検索",[389,552,553],{},"ローマ字で引っかからない",[389,555,556],{},"表記を全社統一して両方からヒットする状態に",[106,558],{},[32,560,561],{"id":561},"今日の学び",[68,563,564,567,570,576,579],{},[71,565,566],{},"Kindle Cloud Reader からの取り込みは「撮影」「OCR」「DB 投入」「目次整形」の4工程で、どこか1工程で順序が崩れるだけで全部やり直しになる。順序チェックを早い段階でかける",[71,568,569],{},"Vue ファイルに置くか HTML に置くかは「インタラクティブかどうか」で線を引くと迷わない。判断軸を CLAUDE.md に置いたら、次セッションで悩まなくなる",[71,571,572,573,575],{},"タスクスケジューラと make-diary の二重トリガーは、",[19,574,185],{}," のような単純なファイルで二重実行を弾けば素直に作れる",[71,577,578],{},"Turso の Embedded Replica は「速さと引き換えにバイト量を食う」もので、用途ごとに sync するかしないかを選べばクォータも安定する",[71,580,581],{},"引用記事は「出典」「推測」を明示的に区切ると公開しても安心して読める",[106,583],{},[32,585,586],{"id":586},"明日やること",[68,588,591,601,607],{"className":589},[590],"contains-task-list",[71,592,595,600],{"className":593},[594],"task-list-item",[596,597],"input",{"disabled":598,"type":599},true,"checkbox"," /yomitoku-kindle で続きの書籍を取り込み（白背景に変えてから OCR 精度を確認）",[71,602,604,606],{"className":603},[594],[596,605],{"disabled":598,"type":599}," Phase F-1 中止を踏まえた Plan E の方向再検討",[71,608,610,612],{"className":609},[594],[596,611],{"disabled":598,"type":599}," Turso Bytes Synced の推移を1週間モニタリング",[106,614],{},[32,616,617],{"id":617},"関連記事",[68,619,620,624,628,632,636,640,644,648],{},[71,621,622],{},[101,623,104],{"href":103},[71,625,626],{},[101,627,141],{"href":140},[71,629,630],{},[101,631,194],{"href":193},[71,633,634],{},[101,635,230],{"href":229},[71,637,638],{},[101,639,267],{"href":266},[71,641,642],{},[101,643,299],{"href":298},[71,645,646],{},[101,647,255],{"href":254},[71,649,650],{},[101,651,352],{"href":351},{"title":653,"searchDepth":654,"depth":654,"links":655},"",2,[656,657,667,668,669,670],{"id":34,"depth":654,"text":34},{"id":44,"depth":654,"text":44,"children":658},[659,661,662,663,664,665,666],{"id":48,"depth":660,"text":49},3,{"id":110,"depth":660,"text":111},{"id":146,"depth":660,"text":147},{"id":199,"depth":660,"text":200},{"id":235,"depth":660,"text":236},{"id":272,"depth":660,"text":273},{"id":304,"depth":660,"text":305},{"id":357,"depth":654,"text":357},{"id":561,"depth":654,"text":561},{"id":586,"depth":654,"text":586},{"id":617,"depth":654,"text":617},"diary","Kindle Cloud Reader を Chrome 拡張で巡回スクショして OCR にかける /yomitoku-kindle を一日かけて仕上げ、ハイライト・メモも Turso に取り込んだ。並行して Eurekapu Nuxt4 のコンテンツ HTML 化ルール策定、make-diary への update-portfolio チェーン化、Turso Sync クォータの判断、Winbond 表記対応など、裏方の整理が一気に進んだ日。","md",{},null,"/2026-06-18-diary","daily-log",false,"2026-06-18T00:00:00.000Z",{"title":5,"description":672},"2026-06/2026-06-18/diary-2026-06-18",[683,684,685,686,25,687],"日記","Kindle","Turso","Nuxt4","memory-makers","eeEDxs-sJX2g-YuN8BUKWtJ36F0tDKhZUG_UxB12PMY",[],"https://log.eurekapu.com/og/blog/2026-06-18-diary.png?v=2026-06-18T00%3A00%3A00.000Z&title=2026%E5%B9%B46%E6%9C%8818%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20Kindle%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E5%AE%8C%E6%88%90%E3%81%A8%E8%A3%8F%E6%96%B9%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E6%95%B4%E7%90%86&author=Kei%20Komatsu&sig=ddf75f54375a56fc",1782176330018]