Skip to content

ナレッジ下書き: JS 描画(SPA)のページを Browser Rendering で読み取る #1124

Description

@owk-owk130

背景

#1123 のナレッジ下書き生成は URL を Worker で fetch し、HTML からタグを剥がして本文を LLM に渡している。SSR / SSG されていない SPA は <body> が空で、<head>og:description しか拾えない。

実例: https://shujinko-school.jp/ は Nuxt の SPA で、本文 0 文字。下書きは og:description の 1 文だけから作られた。

候補 A: Browser Rendering で描画する

本文が取れなかった(または極端に短い)URL だけ、Cloudflare Browser Rendering の REST エンドポイント(/browser-rendering/markdown)でヘッドレス Chrome に描画させて Markdown を取る 2 段構え。

  • 貼られた URL そのものを読むので、新店舗のようにまだ検索索引に無いページでも取れる
  • 「参照した資料」にその URL がそのまま出る
  • Workers Paid に月 10 時間分が含まれ、1 ページ数秒なので月に数千ページまで追加費用なし
  • 追加は Browser Rendering 権限の API トークン 1 つ。binding の変更は不要

候補 B: エージェント検索(Gemini googleSearch / OpenAI web search)で補う

本文が取れなかった URL について、モデルに Web 検索させて内容を補う。

  • 取れるのは Google の索引と検索スニペット。索引時点で JS が実行されているので SPA でも内容は出るが、新しいページは索引されておらず空振りしやすい
  • その URL の本文ではなく検索結果なので「何を読んだか」を職員に見せられない。feat(knowledge): URL・文章・画像から curated ナレッジの下書きを作って保存する #1123 の検討で「参照元は職員が貼る」方針にした経緯と衝突する
  • 実装は SDK 上にあるツールを付けるだけで軽い。日次の利用上限(D1 か KV でカウンタ)を付ける前提
  • 将来、URL を持たない情報(口頭で聞いた話など)を補う手段が要るなら、そのまま転用できる

判断が要る点

  • どちらを採るか。A は「貼った URL を読む」機能の穴埋めとして確実。B は URL 以外にも使える汎用手段
  • フォールバック条件(本文が N 文字未満か、__nuxt / __next などの目印か)
  • 日次利用上限の置き場所と値
  • ログインが必要なページ(Instagram / X のプロフィール)は描画しても検索しても本文は取れないので対象外にする

参考

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions