Obsidian Web Clipper のインタープリター機能でAmazon Bedrock と連携してWebページを要約・保存してみた

Obsidian Web Clipper のインタープリター機能でAmazon Bedrock と連携してWebページを要約・保存してみた

2026.04.09

こんにちは、なおにしです。

Obsidian のWeb Clipper を使用してWeb ページの内容をBedrock で要約する機会がありましたのでご紹介します。

はじめに

Obsidian にはWeb Clipper というブラウザ拡張機能があり、開いているWeb ページの内容を効率的にメモとして保存することができます。

https://obsidian.md/clipper

デフォルトではWeb ページの選択箇所をメタデータ付きで保存できますが、インタープリター機能を使用すれば選択箇所をAI で要約した内容を併せて保存するといったこともできるようになります。

https://obsidian.md/ja/help/web-clipper/interpreter

同様の取り組みは既に弊社記事でも公開されています。

https://dev.classmethod.jp/articles/try-obsidian-web-clipper-ai-summary/

インタープリター機能の設定画面では、以下のように連携対象として豊富なAI プロバイダーが選択可能となっています。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_1.png

例えばAnthropic を選択した場合は、以下のように使用するAPI キーを入力する形になります。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_2.png

ここで課題となるのが、例えば以下のようなケースです。

  • AI サービスを契約しておらず、インタープリター機能のためだけに定額制のAI サービスに加入するのはもったいない
  • AI サービスは組織で管理されているため、API キーの払い出しハードルが高い(もしくはできない)
  • 無料枠でAPI キーが使用できるAI サービスでは、モデル改善の学習に使われる可能性がある(公開ページの要約だけが目的であれば学習に使われても問題ないかもしれませんが)

例えば先ほどの記事ではGoogle Gemini をAI プロバイダーとして利用するためにAPI キーを払い出しています。Google Gemini では、利用規約に以下のとおり記載があります。

本無料サービス(Google AI Studio や Gemini API の無料枠など)を使用する場合、 Google は使用者が本サービスに送信したコンテンツと生成された回答を使用し、 Google のプライバシー ポリシーに従って、 Google のプロダクト、サービス、機械学習技術 (Google の企業向けの機能、プロダクト、サービスを含む)の 提供、改良、開発を行います。

品質の向上とサービスの改善を目的として、使用者が行った API 入出力に対して、人間のレビュアーが確認、 注記、処理を行う場合があります。このプロセスの一環として、Google は プライバシーを保護するための措置を講じます。措置には、 Google アカウント、API キー、およびクラウド プロジェクトからのデータの切り離しが含まれます。これらは人間のレビュアーによる読み取りや注記の前に 行われます。本無料サービスには、プライベート情報、機密情報、または個人情報を送信 しないでください。

というわけで、今回はAI プロバイダーとしてカスタムを選択して、Amazon Bedrock との連携を試してみました。(つまり本記事の対象読者はAmazon Bedrock でのAPI キー払い出しの方がハードルが低めという方です)

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_3.png

やってみた

API キーの発行

Bedrock にアクセスしてAPI キーを発行します。用途的に長期API キーになるかと思います。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_4.png

API キーの有効期限が設定できます。有効期限なしも選択できますが、万が一のために多少長い期間でも有効期限は設定しておくことを推奨します。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_5.png

生成したAPI キーはこのタイミングで取得しておかないと再取得できないのでご注意ください。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_6.jpg

Web Clipper のインタープリター設定

プロバイダーとしてカスタムを選択します。プロバイダー名は任意なので、今回はAmazon Bedrockにしました。API キーは先ほど取得済みです。問題はベースURLの部分に何を入力するかです。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_7.jpg

ドキュメントには以下のように記載されています。

カスタムプロバイダーとモデル

カスタムプロバイダーやモデルを追加するには、Web Clipper 設定 → インタープリターに移動します:

  • プロバイダーを追加でプリセットおよびカスタムプロバイダーを設定します。
  • モデルを追加でプリセットおよびカスタムモデルを設定します。
    カスタムプロバイダーを追加する際は、Base URLにチャット補完エンドポイントを使用することをお勧めします。通常は/chat/completionsで終わります。

今回私がハマってしまったポイントは、通常は/chat/completionsで終わりますという部分でした。最初はこの記載があることに気付いておらず、Bedrock で利用するモデルとしてとりあえず「Claude Haiku 4.5」で進めようとしていましたが、結果としてうまくいきませんでした。

生成AI を活用しつつ諸々調査したところ、Web ClipperのソースコードではインタープリターのAI プロバイダー名にカスタムを選択した場合、Ollama などの特定のAI プロバイダー名を指すような文字列が含まれていなければOpenAI 互換のChat Completions API 形式を前提としていることが分かりました。OpenAI 互換形式の判定となった場合、より厳密には以下2つを満たす必要がありました。

  • ベースURL に/v1/chat/completions まで含めて指定する(自動付加されない)
    • パスを指定していないと Cannot read properties of undefined (reading '0') というエラーが発生
  • レスポンスは OpenAI 互換形式(choices[0].message.content)

つまり、ドキュメントにある通常は/chat/completionsで終わりますという記述は、Amazon Bedrock を利用する場合はベースURL にはOpenAI 互換のChat Completions API 形式を記述する必要があると読み替えて良さそうです。この時点で、Bedrock で利用するモデルとしてClaude を選択しようとしていたことが無謀だったと分かります。

一方で、Bedrockには以下の2種類のOpenAI 互換エンドポイントがあります。

エンドポイント URL形式
Bedrock Runtime bedrock-runtime.{region}.amazonaws.com/openai/v1
Bedrock Mantle bedrock-mantle.{region}.api.aws/v1

Bedrock Runtime エンドポイントは従来から提供されていたものですが、Mantle は2025年末に公開された新しい推論エンジンです。

https://aws.amazon.com/jp/blogs/news/exploring-the-zero-operator-access-design-of-mantle/

実際のAPI 呼び出しは弊社記事がありますのでそちらをご参照ください。

https://dev.classmethod.jp/articles/amazon-bedrock-responses-api-from-openai/

今回はどちらのエンドポイントを使えば良いかという点ですが、Chat Completions API を使用するという観点ではどちらでも動作します。

ドキュメントに以下の記述があるので、最初はBedrock Runtime エンドポイントだとOpenAI モデルに限定されるのかなと思っていましたが、実際にAPI を実行したところそうでもなさそうでした。(内部的には既にBedrock Mantle に統合されている?とか考えましたが、そこまで詳細は追っていません)

Supported models and Regions for the OpenAI Chat Completions API

You can use the Create chat completion API with all OpenAI models supported in Amazon Bedrock and in the AWS Regions that support these models. For more information about supported models and regions, see Supported foundation models in Amazon Bedrock.

(和訳)
OpenAI Chat Completions API でサポートされているモデルとリージョン

Amazon Bedrock でサポートされているすべての OpenAI モデルと、それらのモデルをサポートする AWS リージョンで、Chat Completions API を使用できます。サポートされているモデルとリージョンの詳細については、「Amazon Bedrock でサポートされている基盤モデル」を参照してください。

  • DeepSeek-V3.2 をBedrock Runtime 経由で呼び出し
$ curl -sX POST https://bedrock-runtime.ap-northeast-1.amazonaws.com/openai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${BEDROCK_API_KEY}" \
  -d '{"model":"deepseek.v3.2","messages":[{"role":"user","content":"Hello"}],"max_tokens":100}' | jq

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "Hello! 😊 How can I help you today? I'm here to answer questions, chat, or assist with whatever's on your mind. What would you like to talk about?",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1775709286,
  "id": "chatcmpl-c7d090b9-e08d-46c2-8940-d2cc05f42e13",
  "model": "deepseek.v3.2",
  "object": "chat.completion",
  "service_tier": "default",
  "usage": {
    "completion_tokens": 38,
    "prompt_tokens": 5,
    "total_tokens": 43
  }
}
  • DeepSeek-V3.2 をBedrock Mantle 経由で呼び出し
$ curl -sX POST https://bedrock-mantle.ap-northeast-1.api.aws/v1/chat/completions \  
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${BEDROCK_API_KEY}" \
  -d '{"model":"deepseek.v3.2","messages":[{"role":"user","content":"Hello"}],"max_tokens":100}' | jq   
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "Hello! 👋\n\nHow are you today? I'm here and ready to help with anything you'd like—whether it's answering questions, helping with a task, brainstorming, or just having a conversation. What's on your mind? 😊",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1775709251,
  "id": "chatcmpl-d8d96524-bca4-4064-a183-b33d7e06f576",
  "model": "deepseek.v3.2",
  "object": "chat.completion",
  "service_tier": "default",
  "usage": {
    "completion_tokens": 51,
    "prompt_tokens": 5,
    "total_tokens": 56
  }
}

今回は新しいBedrock Mantle エンドポイントを利用し、かつモデルとしてはDeepSeek-V3.2 を適用してみます。利用料金については料金ページをご参照ください。執筆時点では以下のようになっており、Claude Haiku 4.5 よりも廉価です。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_8.png

Mantle では利用可能なモデル一覧を出力可能で、執筆時点では以下のとおりです。(us-east-1でも利用可能なモデルに差異はありませんでした)

$ curl -s https://bedrock-mantle.ap-northeast-1.api.aws/v1/models \
  -H "Authorization: Bearer $BEDROCK_API_KEY" | jq -r '.data[].id' | sort
deepseek.v3.1
deepseek.v3.2
google.gemma-3-12b-it
google.gemma-3-27b-it
google.gemma-3-4b-it
minimax.minimax-m2
minimax.minimax-m2.1
minimax.minimax-m2.5
mistral.devstral-2-123b
mistral.magistral-small-2509
mistral.ministral-3-14b-instruct
mistral.ministral-3-3b-instruct
mistral.ministral-3-8b-instruct
mistral.mistral-large-3-675b-instruct
mistral.voxtral-mini-3b-2507
mistral.voxtral-small-24b-2507
moonshotai.kimi-k2-thinking
moonshotai.kimi-k2.5
nvidia.nemotron-nano-12b-v2
nvidia.nemotron-nano-3-30b
nvidia.nemotron-nano-9b-v2
nvidia.nemotron-super-3-120b
openai.gpt-oss-120b
openai.gpt-oss-20b
openai.gpt-oss-safeguard-120b
openai.gpt-oss-safeguard-20b
qwen.qwen3-235b-a22b-2507
qwen.qwen3-32b
qwen.qwen3-coder-30b-a3b-instruct
qwen.qwen3-coder-480b-a35b-instruct
qwen.qwen3-coder-next
qwen.qwen3-next-80b-a3b-instruct
qwen.qwen3-vl-235b-a22b-instruct
writer.palmyra-vision-7b
zai.glm-4.6
zai.glm-4.7
zai.glm-4.7-flash
zai.glm-5

というわけで、最終的にプロバイダー設定は以下のようになりました。API キーは平文で保存されてしまうので、よりセキュアに管理する場合は、IAM で権限を制御した方が良いかもしれません。前述の方法で長期API キーを発行した場合、内部的にはAmazonBedrockLimitedAccess がアタッチされたIAM ユーザーが作成されています。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_9.jpg

続いて利用するモデルを設定します。プロバイダーには先ほど作成したAmazon Bedrockプロバイダーを選択します。モデル名は任意です。モデルID は先ほどcurl で出力した一覧の値を使用します。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_10.jpg

最終的なインタープリター設定は以下のようになっています。Bedrock Runtime エンドポイントでも動作することを検証していたので、一部登録が残っていますが気にする必要はありません。気をつけていただきたいのはデフォルトインタープリターコンテキストに設定している{{content}}です。ここに何も指定していないと、max_tokens が負の値になるようでエラーが発生しました。個別のテンプレート内でインタープリターコンテキストを指定している場合は不要かもしれません。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_11.jpg

なお、{{content}}のような変数の種類については以下のドキュメントをご参照ください。

https://obsidian.md/ja/help/web-clipper/variables

テンプレートの設定

Web Clipper の内容をどのような形式でObsidian に記録するかはテンプレート設定で指定します。例えば、Daily Note に記録時刻と併せて本文とその要約内容を追記するようなケースでは、以下のように設定します。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_12.png

ノートの内容は以下のとおりです。

### {{time|date:"HH:mm"}} Web Clipper

{{content}}

 {{"内容を3つの箇条書きで要約してください。内容が短すぎる、または長すぎる場合は、柔軟に箇条書き数を変更して問題ありません。要約対象に具体的な数値情報がある場合、なるべく数値情報を残す形で要約してください。"|blockquote}} 

> 引用元: [{{title}}]({{url}})

例えばこちらのページの選択箇所を上記テンプレートを指定してWeb Clipper に渡すと、以下のようになります。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_13.png

推論には4.47秒かかったことが分かります。Obsidianに追加ボタンを押すと、Obsidian には以下のように追記されます。

20260409_naonishi_obsidian-web-clipper-interpreter-amazon-bedrock-summarize_14.png

上記はシンプルな例ですが、テンプレート設定と変数の組み合わせによってWeb ページの内容を柔軟にObsidian に記録することが可能です。

まとめ

Obsidian Web Clipper 便利だなと思って簡単な気持ちでインタープリター機能とBedrock を組み合わせようとしたら、気付いたらMantle など色々勉強することになっていたのでまとめてみました。

本記事がどなたかのお役に立てれば幸いです。

この記事をシェアする

関連記事