Zum Hauptinhalt springen

Videos mit der PageToVid-API automatisieren

Von Gauthier Bros, Gründer von PageToVidAktualisiert am 6 Min. Lesezeit

Die Video-Generierungs-API von PageToVid macht aus einer URL mit einem einzigen HTTP-Aufruf ein vertontes MP4: Du schickst Seite und Briefing mit deinem API-Schlüssel an /api/v1/videos, bekommst sofort eine ID zurück und nach dem Rendering Video, Vorschaubild und Untertiteldatei, per Abfrage oder über einen signierten Webhook. Sie ist ab dem Pro-Tarif enthalten, und ein Rendering kostet dieselben 40 Credits wie im Dashboard.

Dieser Leitfaden ist für Entwicklerinnen und Entwickler, die jedem neuen Produkt, Inserat oder Release ein eigenes Video geben sollen, ohne dass jemand einen Schnitteditor öffnet. Er erklärt Request, Webhook, die wichtigen Felder und die Fehler, die eine automatisierte Pipeline teuer machen. Die Endpunkt-Referenz steht auf der Entwicklerseite.

MolForge, „Test the molecule before you make it“: ein 27-sekündiger 16:9-Film für ein In-silico-Tool zur Wirkstoffsuche, fünf Szenen und 43 gesprochene Wörter, dazu eine separat geschriebene 9:16-Fassung mit 29 Sekunden.

Aus — mit PageToVid gemacht und von seinem Autor veröffentlicht. Auf seiner Seite ansehen → · Alle öffentlichen Filme ansehen →

Ein Rendering von Anfang bis Ende

Rendern läuft asynchron: Ein Film dauert Minuten, also dreht sich die API um eine ID, mit der du später wiederkommst.

  1. Schlüssel anlegen

    Erzeuge auf deiner Kontoseite einen API-Schlüssel. Er beginnt mit cp_live_, hängt an deinem Konto und Credit-Guthaben und gehört in den Header Authorization: Bearer cp_live_…. Behandle ihn wie ein Passwort: Er kann Credits ausgeben.

  2. Rendering starten

    Schick ein POST an /api/v1/videos mit JSON: url (eine öffentliche Seite) und optional goal (explainer, ad, demo, tutorial, article), targetSeconds (15 bis 180), aspect (16:9, 9:16, 1:1 oder 4:5), language, focus (dein Briefing, bis zu 2.000 Zeichen) und callbackUrl. Setz einen Idempotency-Key-Header.

  3. ID speichern

    Die Antwort ist ein 202 mit id, statusUrl und, beim ersten Callback, dem Webhook-Secret, das nur einmal angezeigt wird. Speichere alle drei. Gerendert ist noch nichts.

  4. Auf das Ende warten

    Empfange den Webhook oder frag die statusUrl mit wachsendem Abstand ab. Der Status läuft durch queued, analyzing, scripting, recording, voicing und rendering und endet bei done, held oder error.

  5. Ergebnis lesen, dann die Warnungen

    Ein fertiges Rendering liefert videoUrl, posterUrl, subtitleUrl (WebVTT), durationMs, Breite und Höhe, eine öffentliche pageUrl und einen Qualitäts-score. Ist hasWarnings true, lies warnings, bevor du veröffentlichst.

Ablehnungen kosten nichts und nennen den Grund: eine Seite hinter einer Bot-Prüfung oder mit HTTP-Fehler, eine private Adresse, ein leeres Guthaben (402, NO_CREDITS) oder ein Tarif ohne API (402, UPGRADE_REQUIRED). Lies den code und überspring den Eintrag; eine abgelehnte Seite in einer Schleife neu zu versuchen, ändert nichts, solange sich die Seite nicht ändert.

Webhooks: erst prüfen, dann vertrauen

Erreicht ein Rendering done, held, error oder cancelled, schicken wir ein JSON-Event an seine callbackUrl (oder an den Standard-Webhook des Kontos). Jedes Event trägt drei Header: X-PageToVid-Timestamp, X-PageToVid-Signature und X-PageToVid-Event-Id.

Dein Empfänger sollte:

  1. HMAC-SHA256 mit deinem Secret über Zeitstempel, Punkt und den rohen Body neu berechnen und in konstanter Zeit mit dem sha256=-Wert vergleichen. Das JSON erst danach parsen, nie vorher.
  2. Einen Zeitstempel ablehnen, der älter als fünf Minuten ist. Das ist ein Replay.
  3. Über die Event-ID deduplizieren: Dasselbe Event kommt nie unter zwei IDs, kann aber mehrfach ankommen.
  4. Schnell mit 2xx antworten und die Veröffentlichung danach erledigen.

Die Zustellung wird dreimal im Abstand weniger Sekunden versucht, Weiterleitungen werden nicht verfolgt: Richte den Callback direkt auf deinen Empfänger. Hast du ein Event verpasst, kennt der Status-Endpunkt die Antwort trotzdem. Wir haben das so gebaut, nachdem wir Integrationen fünfzehn Minuten lang pollen sahen; der Webhook ersetzt die Schleife.

Das Beispiel: MolForge in 27 Sekunden

MolForge (molforge.ai) sagt ADMET-Eigenschaften von Molekülen voraus, bevor jemand sie synthetisiert. Der 16:9-Film läuft 27 Sekunden, fünf Szenen, 43 englische Wörter. Er beginnt mit einem KI-Clip einer Chemikerin allein im nächtlichen Labor zu „Months at the bench. Weeks of assays.“, schneidet auf eine Hand im Handschuh, die ein gescheitertes Fläschchen wegwirft („Then the molecule fails anyway“), dann eine Chat-Karte, in der MolForge ein vollständiges Profil liefert und Risiken vor jeder Synthese markiert. Eine Große-Zahl-Karte zeigt 92M+ Verbindungen zum Durchsuchen und Screenen. Der letzte Clip zeigt eine Chemikerin in einem hellen Labor vor einem 3D-Molekül: „Fail fast. On screen, not in the lab.“

Dieser Film ist ein geschriebenes Storyboard, als Animation gerendert, ohne gefilmte Seite. Für die Automatisierung ist das wichtig: /api/v1/videos nimmt eine URL und filmt sie, während ein Storyboard, das du selbst erzeugst (aus einem Changelog, einem Datensatz, einem Produkt-Feed), über das Tool create_animation des MCP-Endpunkts läuft, mit demselben Schlüssel. Siehe Videos mit Claude über MCP erstellen.

Die 9:16-Fassung läuft 29 Sekunden und fügt vor dem Scheitern einen Moment ein: „Your best candidate, finally ready“. Wir haben sie als zweites Storyboard geschrieben, weil die Hochkant-Fassung diese Pause brauchte. Wenn sich das Skript nicht ändert, fordere beide Formate in einem Aufruf mit outputs an.

Felder, die das Ergebnis verändern

Die meisten Integrationen brauchen nur url, aspect und callbackUrl. Diese Felder lohnen sich als Nächstes.

Optionale Felder von POST /api/v1/videos
FeldWas es tutWann du es nutzt

focus

Dein Briefing: Angebot, Zielgruppe, Sätze in Anführungszeichen, die wörtlich gesprochen werden

Jede Produkt- oder Inseratsseite: Preis und Call-to-Action gehören hierher

outputs

Bis zu vier Formate aus einem Storyboard; jedes zusätzliche Format ist ein eigenes Rendering

16:9 für die Seite und 9:16 für Social Media, gleiches Skript

qualityGate

Ein Mindest-Score und was darunter passiert: automatisch korrigieren, zurückhalten oder ausliefern

Jede Pipeline, die ohne menschlichen Blick veröffentlicht

draft

Eine kostenlose Vorschau mit Wasserzeichen und niedriger Auflösung, mit kleinem Stundenkontingent

Die Integration testen, bevor Credits fließen

pronunciations

Wie die Stimme eine Marke oder einen Begriff aussprechen soll

Produktnamen, die die Stimme falsch sagt

Header Idempotency-Key

Derselbe Schlüssel liefert dasselbe Rendering; geänderte Parameter werden mit 409 abgelehnt

Bei jedem Anlegen, immer

Zwei weitere Türen mit demselben Schlüssel: POST /api/v1/videos/:id/translate macht pro Sprache einen neuen Film (bis zu 6 pro Aufruf, neu vertont und neu untertitelt; siehe Videos in mehrere Sprachen lokalisieren), und die Site-Endpunkte analysieren eine Domain und schlagen vor, welche Seiten einen Film verdienen, mit kostenloser Vorschau vor dem Start.

Kosten, Limits und die drei teuren Fehler

Ein Rendering kostet 40 Credits, egal wie lang; jedes zusätzliche Format ist ein weiteres Rendering; Entwürfe sind kostenlos; KI-Clips und -Bilder kommen dazu und werden vor dem Ausgeben beziffert (siehe Credits und was ein Video kostet). Einen Preis pro Aufruf gibt es nicht; die Tarifpreise stehen unter Preise. Ein Konto kann zehn Renderings pro Minute starten, ein Stapel von zweihundert ist also eine Warteschlange, kein Ansturm: abschicken, ID speichern, Webhooks zurückkommen lassen. Ein Rendering, das aus technischen Gründen scheitert, wird automatisch erstattet.

Die Fehler, die wir in echten Integrationen sehen:

  • Wiederholen ohne Idempotency-Key. Ein Timeout bei dir heißt nicht, dass das Rendering nicht gestartet ist. Ohne Schlüssel ist der zweite Versuch ein zweiter Film und eine zweite Abbuchung.
  • Neu rendern per Cronjob. Ein nächtlicher Job über einen unveränderten Katalog zahlt jede Nacht für denselben Film. Löse bei Änderungen aus: neues Produkt, neuer Preis, neues Release.
  • Nur auf done hin veröffentlichen. Ein fertiger Film kann Warnungen tragen: eine Szene, die auf eine Karte zurückgefallen ist, eine langsam geladene Seite. Filtere nach hasWarnings und Score oder stell qualityGate auf Zurückhalten.

Und sortiere, bevor du generierst: Ein Film auf einer Seite, die niemand besucht, sind 40 Credits für nichts. Fang mit deinen meistbesuchten Seiten an, wie im Anwendungsfall E-Commerce-Video-Anzeigen, miss, dann erweitere.

Wann nicht

Wann die API das falsche Werkzeug ist

Du machst ein paar Filme im Monat. Dashboard oder Assistent sind schneller als eine Integration: URL einfügen oder Claude über den MCP-Server fragen, der in jedem Tarif läuft. Das MCP-Setup dauert Minuten.

Du willst jede Woche denselben Film aus einem Feed. Das ist eine Show, kein Skript zum Pflegen: Feed, Format und Obergrenzen, mit kostenloser Vorschau. Siehe wiederkehrende Video-Shows und den Anwendungsfall Release-Notes-Video.

Du brauchst einen Menschen vor der Kamera oder einen eigenen Schnitt. Eine API rendert, was Seite und Briefing hergeben. Ein Kurs mit Moderator oder ein Markenfilm ist Sache eines Studios oder eines Avatar-Tools; die Vergleichsseite zeigt, wo andere Tools passen.

Deine Seiten sind privat. Die API filmt öffentliche Seiten. Bildschirme hinter einem Login brauchen eine Capture-Session ab dem Tarif Scale.

Verwandle deine Website in ein Video — kostenlos

Füge die Seite ein, die gefilmt werden soll. PageToVid schreibt das Skript, filmt die echte Website, vertont sie und liefert das MP4.

Erstes Video gratis · keine Kreditkarte · in Minuten fertig

Häufige Fragen

Welcher Tarif enthält die Video-Generierungs-API?

Pro und alle Tarife darüber. Aufrufe werden nicht extra berechnet: Jedes Rendering verbraucht Credits des Kontos, zu dem der Schlüssel gehört, genau wie ein Rendering aus dem Dashboard.

Muss ich das Ergebnis abfragen?

Nein. Gib eine callbackUrl mit, dann schicken wir ein signiertes Event, wenn das Rendering fertig, zurückgehalten, fehlgeschlagen oder abgebrochen ist. Die Status-URL mit wachsendem Abstand abzufragen funktioniert auch und ist der Plan B, falls ein Event verloren ging.

Kann ich ein Video ohne Webseite erstellen?

Nicht über den videos-Endpunkt, der eine URL filmt. Ein Storyboard, das du schreibst oder erzeugst, wird über das Tool create_animation des MCP-Endpunkts als Animation gerendert, mit demselben API-Schlüssel.

Wie verhindere ich, dass ein Wiederholungsversuch doppelt kostet?

Schick bei jedem Anlegen einen Idempotency-Key-Header mit. Derselbe Schlüssel liefert das bestehende Rendering; derselbe Schlüssel mit anderen Parametern wird mit 409 abgelehnt, und es wird nichts abgebucht.