Eigenen Webhook-Receiver für Share2Agent bauen
Baue einen eigenen Webhook-Receiver für Share2Agent in jeder beliebigen Sprache. Dieser Guide deckt das vollständige Payload-Schema, funktionierende Beispiele in Python und Node.js sowie einen curl-Befehl zum Testen ab.
Voraussetzungen
- Python 3.x oder Node.js 18+ (je nach Stack)
- Share2Agent Chrome-Erweiterung installiert
Payload-Schema
Share2Agent sendet einen POST-Request mit JSON-Body. Hier alle Felder:
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
url | string | ja | Die URL der Seite |
title | string | ja | Der Seitentitel (aus dem <title>-Tag) |
content | string | ja | Extrahierter sauberer Text (HTML entfernt, Whitespace normalisiert) |
comment | string | nein | Instruktion oder Notiz des Users (leerer String, wenn nicht gesetzt) |
timestamp | string | ja | ISO-8601-Zeitstempel des Teilens |
meta | object | ja | Metadaten-Objekt (siehe unten) |
meta-Objekt:
| Feld | Typ | Beschreibung |
|---|---|---|
description | string | Meta-Description der Seite |
og_image | string | Open-Graph-Image-URL |
author | string | Autor der Seite (aus Meta-Tags) |
language | string | Sprachcode der Seite (z.B. en, de) |
Beispiel-Payload:
json
{
"url": "https://example.com/article",
"title": "Understanding WebSockets",
"content": "WebSockets provide full-duplex communication channels...",
"comment": "Save for later review",
"timestamp": "2026-03-28T12:00:00.000Z",
"meta": {
"description": "A guide to WebSocket protocol",
"og_image": "https://example.com/og.png",
"author": "Jane Smith",
"language": "en"
}
}Python-Receiver (Flask)
Ein minimaler Receiver in 15 Zeilen:
python
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/", methods=["POST"])
def receive():
data = request.get_json()
if not data or "content" not in data:
return jsonify({"error": "Missing content"}), 400
print(f"Received: {data.get('title', 'untitled')}")
print(f"URL: {data.get('url', '')}")
print(f"Comment: {data.get('comment', '')}")
print(f"Content length: {len(data.get('content', ''))} chars")
# --- Deine Logik hier ---
# Speichere in Datenbank, rufe eine API auf, triggere eine Pipeline, etc.
return jsonify({"status": "ok"})
if __name__ == "__main__":
app.run(port=9876)Starte ihn:
bash
pip install flask
python3 receiver.pyNode.js-Receiver (Express)
Derselbe Receiver in Node.js:
javascript
const express = require("express");
const app = express();
app.use(express.json({ limit: "5mb" }));
app.post("/", (req, res) => {
const { title, url, content, comment, meta } = req.body;
if (!content) return res.status(400).json({ error: "Missing content" });
console.log(`Received: ${title || "untitled"}`);
console.log(`URL: ${url || ""}`);
console.log(`Comment: ${comment || ""}`);
console.log(`Content length: ${(content || "").length} chars`);
// --- Deine Logik hier ---
res.json({ status: "ok" });
});
app.listen(9876, () => console.log("Listening on :9876"));Starte ihn:
bash
npm install express
node receiver.jsMit curl testen
Simuliere einen Share2Agent-Webhook, um deinen Receiver ohne Browser-Erweiterung zu testen:
bash
curl -X POST http://localhost:9876 \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/test",
"title": "Test Page",
"content": "This is a test of the webhook receiver.",
"comment": "Testing integration",
"timestamp": "2026-03-28T12:00:00.000Z",
"meta": {
"description": "Test page",
"og_image": "",
"author": "",
"language": "en"
}
}'Erwartete Antwort:
json
{"status": "ok"}Tipps
- Content-Type validieren - prüfe vor dem Parsen, ob der Request
Content-Type: application/jsonenthält. Share2Agent sendet immer JSON, andere Quellen vielleicht nicht. - Leere Kommentare behandeln - das
comment-Feld ist ein leerer String, wenn der User nichts eingegeben hat. Prüfe darauf, bevor du es als Prompt oder Instruktion verwendest. - Maximale Body-Größe setzen - Share2Agent begrenzt Payloads auf 5 MB. Setze dasselbe Limit auf deinem Receiver, um Missbrauch zu verhindern (
express.json({ limit: "5mb" })in Node, oder prüfeContent-Lengthin Python). - CORS-Header senden - wenn du aus einem Browser testest, füge
Access-Control-Allow-Origin: *hinzu und behandleOPTIONS-Preflight-Requests. Share2Agent sendet Requests aus einem Chrome-Extension-Kontext, der CORS-Header benötigt. - Schnell antworten - Share2Agent wartet auf eine Antwort. Wenn deine Verarbeitung mehr als ein paar Sekunden dauert, akzeptiere den Webhook sofort mit einem
200und verarbeite im Hintergrund.
Was als Nächstes?
- Authentifizierung hinzufügen - hänge ein Secret-Token an die Webhook-URL (z.B.
http://localhost:9876?token=mysecret) und validiere es im Receiver. - Verarbeitungs-Pipeline aufbauen - kombiniere deinen Receiver mit einer Message-Queue (Redis, RabbitMQ), um mehrere Seiten parallel zu verarbeiten.
- Öffentlich deployen - stelle deinen Receiver hinter einen Reverse-Proxy (Caddy, nginx) mit HTTPS, sodass du Seiten von jedem Gerät teilen kannst, nicht nur lokal.