Max Nardit
ローカル LLM

Share2Agent で Web ページを Ollama に送る方法

ローカルの Ollama モデルで任意の Web ページを処理します。記事の要約、ドキュメントの翻訳、ポイントの抽出、コンテンツの分析などです。Share2Agent は小さな Webhook レシーバーにページを送り、レシーバーが Ollama の API を呼び出して結果を保存します。


前提条件

  • Ollama がインストールされ、稼働している (ollama.com)
  • モデルがプル済み (例: ollama pull llama3.2)
  • Share2Agent Chrome 拡張機能がインストール済み
  • Python 3.10+

ステップ 1: Webhook レシーバーを作成する

このスクリプトは Share2Agent からページを受信し、コメントをプロンプトとしてコンテンツを Ollama に送り、元のページと LLM のレスポンスの両方を保存します。

これを ollama_receiver.py として保存します。

python
#!/usr/bin/env python3
"""Share2Agent → Ollama webhook receiver."""
 
import json
import urllib.request
from datetime import datetime
from http.server import HTTPServer, BaseHTTPRequestHandler
from pathlib import Path
 
PORT = 9876
OUTPUT_DIR = Path.home() / "share2agent-ollama"
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL = "llama3.2"
DEFAULT_PROMPT = "Summarize this article in 3-5 bullet points."
 
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
 
 
def call_ollama(prompt: str, content: str) -> str:
    payload = json.dumps({
        "model": MODEL,
        "prompt": f"{prompt}\n\n---\n\n{content}",
        "stream": False,
    }).encode()
    req = urllib.request.Request(
        OLLAMA_URL,
        data=payload,
        headers={"Content-Type": "application/json"},
    )
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.loads(resp.read())["response"]
 
 
class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        length = int(self.headers.get("Content-Length", 0))
        data = json.loads(self.rfile.read(length))
 
        title = data.get("title", "untitled")
        content = data.get("content", "")
        comment = data.get("comment", "").strip()
        prompt = comment if comment else DEFAULT_PROMPT
 
        print(f"Processing: {title[:60]}...")
        result = call_ollama(prompt, content)
 
        # Save result
        ts = datetime.now().strftime("%Y-%m-%d-%H%M")
        slug = title[:40].lower().replace(" ", "-")
        out = OUTPUT_DIR / f"{ts}-{slug}.md"
        out.write_text(
            f"# {title}\n\n"
            f"**Prompt:** {prompt}\n"
            f"**Source:** {data.get('url', '')}\n\n"
            f"---\n\n{result}\n"
        )
        print(f"Saved: {out.name}")
 
        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.send_header("Access-Control-Allow-Origin", "*")
        self.end_headers()
        self.wfile.write(json.dumps({"status": "ok"}).encode())
 
    def do_OPTIONS(self):
        self.send_response(204)
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Allow-Methods", "POST, OPTIONS")
        self.send_header("Access-Control-Allow-Headers", "Content-Type")
        self.end_headers()
 
 
if __name__ == "__main__":
    print(f"Ollama receiver on :{PORT} (model: {MODEL})")
    HTTPServer(("0.0.0.0", PORT), Handler).serve_forever()

ステップ 2: レシーバーを起動する

bash
python3 -u ollama_receiver.py

Ollama が起動していることを確認してください (ollama serve または Ollama アプリ)。


ステップ 3: Share2Agent を設定する

  1. Chrome で Share2Agent 拡張機能のアイコンをクリックします。
  2. Settings を開きます。
  3. Webhook URLhttp://localhost:9876 に設定します。
  4. 保存します。

ステップ 4: ページを処理する

  1. 任意の記事またはドキュメントページに移動します。
  2. Share2Agent のアイコンをクリックします。
  3. comment フィールドに指示を入力します。
    • Summarize in 3 bullets
    • Translate to Spanish
    • Extract all code examples
    • List the pros and cons mentioned
  4. Share をクリックします。

コメントを空にすると、レシーバーはデフォルトプロンプト ("Summarize this article in 3-5 bullet points") を使います。

結果は ~/share2agent-ollama/ に保存されます。

~/share2agent-ollama/2026-03-28-1430-understanding-rust-lifetimes.md

カスタマイズ

モデルを変更: MODEL 変数を編集します。ollama list で利用可能なモデルを確認できます。

デフォルトプロンプトを変更: DEFAULT_PROMPT を編集して、別のフォールバック動作を設定します。

タイムアウトを調整: 長いドキュメントや遅いモデルに対しては、urlopentimeout=120 の値を増やします。

ストリーミングレスポンス: Ollama のペイロードで "stream": True を設定し、チャンクを逐次読み込んでリアルタイム出力にします。


次のステップ

  • Web UI を追加: シンプルな HTML ページでレシーバーを拡張し、処理結果をリアルタイムで表示します。
  • コメントのキーワードでルーティング: コメントに応じて異なるモデルやプロンプトを使い分けます (例: "translate" は多言語モデル、"code" はコーディングモデル)。
  • 他のツールと連携: Ollama の出力を別の AI ツール (Aider、Cursor、Windsurf) が監視するディレクトリに保存して、2 段階パイプラインを作ります。
Share2Agent で Web ページを Ollama に送る