ViewStream
EN
אינטגרציות · למפתחים ולסוכנויות

מחברים את ViewStream לאתר, לאפליקציות ולמערכות שלכם.

כל מה שיש ב-ViewStream זמין גם מחוץ ל-Studio. מטמיעים את הנגן בשורה אחת, בונים אתר או אפליקציה משלכם על ה-Sites Delivery API, שולפים קאץ'-אפ, סיכומי AI, מגישים וכתוביות דרך ה-REST API, מגיבים לאירועים עם Webhooks חתומים, מפרסמים תוכניות כפודקאסט ומחברים עוזרי AI דרך MCP. הדוגמאות כאן מוכנות להעתקה: החליפו את acme, <channel-id> ו-$VS_KEY בערכים שלכם.

1 · הטמעת הנגן

נגן בכל עמוד, בשורה אחת.

את קטעי הקוד האלה Studio מכין בשבילכם: פתחו ערוץ, סרטון או קליפ ובחרו הטמעה ושיתוף. המיתוג, הסקין, השפה, הפרסומות והדומיינים המורשים מגיעים מתצורת הנגן שאתם עורכים ב-Studio ‏(נגנים), כך ששינוי שם מגיע לכל העמודים תוך כדקה.

iframe

ההטמעה הפשוטה ביותר, עובדת בכל מערכת ניהול תוכן. אפשרויות: autoplay=1 (מושתק), start=<seconds>, lang=he|en|ru|ar, config=<name>.

<iframe src="https://player.viewstream.co.il/e/acme/live/main"
        allow="autoplay; fullscreen; picture-in-picture" allowfullscreen
        style="aspect-ratio:16/9;width:100%;border:0"></iframe>

<!-- a video or a clip -->
<iframe src="https://player.viewstream.co.il/e/acme/vod/<asset-id>" …></iframe>
<iframe src="https://player.viewstream.co.il/e/acme/clip/<clip-id>" …></iframe>

תגית נגן

הנגן בתוך העמוד שלכם, עם גישה לאירועים שלו. גם כשיש כמה נגנים בעמוד, קוד הנגן נטען פעם אחת בלבד.

<script async src="https://player.viewstream.co.il/embed.js"
        data-src="https://cdn.example.net/live/acme/main/master.m3u8"
        data-tenant="acme"
        data-config="news"
        data-lang="he"></script>

<script>
document.addEventListener('vs:ready', function (e) {
  var player = e.detail.player;   // a Video.js player
  player.on('play',  function () { /* … */ });
  player.on('ended', function () { /* … */ });
});
</script>

קישור שיתוף פותח עמוד צפייה מתארח עם תצוגה מקדימה לרשתות החברתיות, למשל: https://player.viewstream.co.il/w/acme/live/main תוכן מוגן: הנגן מבקש כתובות חתומות בעצמו, או שהשרת שלכם חותם אותן עם POST /v1/playback/tokens.

2 · אתרים Headless

הממשק שלכם, התוכן שלנו.

ה-Sites Delivery API מגיש את כל מה שמוצג באתר ViewStream: עמודים, תוכניות, פרקים עם סיכומי AI ומגישים, לוח שידורים, קאץ'-אפ, חיפוש ומפות אתר. הוא ציבורי, נשמר במטמון ולא דורש מפתח, ומחזיר JSON עם CORS — אפשר לקרוא לו מהדפדפן, מ-Next.js או מאפליקציה.

תוכנית והפרקים שלה

כתובת בסיס: https://api.viewstream.co.il/s/v1/<site>/ את ה-slug של האתר מוצאים ב-Studio ← אתרים.

# the site: theme, menus, player settings
curl -s https://api.viewstream.co.il/s/v1/acme/config

# what a path is (page, show, video, programme …)
curl -s "https://api.viewstream.co.il/s/v1/acme/route?path=/show/evening-news"

# one show, with episodes, summaries and presenters
curl -s https://api.viewstream.co.il/s/v1/acme/entities/show/evening-news

# today's guide with catch-up and start-over links
curl -s "https://api.viewstream.co.il/s/v1/acme/epg?channel=main&day=2026-10-06"

# Hebrew-aware search over shows, videos and catch-up
curl -s -G https://api.viewstream.co.il/s/v1/acme/search --data-urlencode "q=תקציב"

או רכיבים מוכנים

רכיבי Web Components מציגים שורות תוכן, את השידור החי, לוח שידורים, קאץ'-אפ ואת הנגן, בעיצוב של האתר שלכם. עברית וכיוון מימין לשמאל כברירת מחדל; לאנגלית הוסיפו lang="en".

<script type="module"
  src="https://player.viewstream.co.il/sdk/[email protected]"></script>

<vs-hero          site="acme" channel="main"></vs-hero>
<vs-rail          site="acme" path="/" section="1"></vs-rail>
<vs-catchup-days  site="acme" channel="main" days="3"></vs-catchup-days>
<vs-epg           site="acme" channel="main"></vs-epg>
<vs-player        site="acme" channel="main"></vs-player>

הדגמה חיה: player.viewstream.co.il/sdk/demo.html

3 · REST API

קאץ'-אפ, סיכומים וכתוביות לכל שידור.

צרו מפתח API ב-Studio ← אינטגרציות ← מפתחות API, תנו לו רק את ההרשאות שהוא צריך, ושלחו אותו כ-Bearer token. זה אותו API שמפעיל את Studio עצמו: העלאות, קליפים, ערוצים, לוח השידורים, סטטיסטיקות וייצוא נתונים גולמיים.

export VS_KEY=vs_xxxxxxxx_…               # never in browser code: call the API from your backend
API=https://api.viewstream.co.il/v1
H=(-H "Authorization: Bearer $VS_KEY")

קאץ'-אפ: רשימה וחיפוש

הרשאה channels:read. נגנו מ-play_start עד play_end: ההתחלה והסיום האמיתיים של השידור, כפי שה-AI זיהה, ולא זמני הלוח.

# your channels and their ids
curl -s "$API/channels" "${H[@]}"

# programmes of one day
curl -s "$API/channels/<channel-id>/catchup?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z" "${H[@]}"

# search titles, guide text and AI summaries
curl -s -G "$API/channels/<channel-id>/catchup/search" \
     --data-urlencode "q=ריבית" "${H[@]}"

סיכום AI ומגישים

הרשאה assets:read. סיכום בעברית, מגישים מאומתים ונושאים לכל שידור.

curl -s "$API/programmes/<programme-id>/summary" "${H[@]}"
{
  "status": "ready",
  "summary": "…",
  "presenters": ["…"],
  "presenters_source": "series",
  "topics": ["…", "…"],
  "words": 104,
  "updated_at": "2026-10-06T18:12:40Z"
}

כתוביות

הרשאה assets:read. כל שפות הכתוביות של שידור, סרטון או קליפ, ולכל אחת קובץ WebVTT מוכן לשימוש — או הכתוביות המתוזמנות כ-JSON.

# languages, status and the WebVTT URL of each track
curl -s "$API/subtitles/subjects/<programme-id>" "${H[@]}" \
  | jq '.languages[] | {lang, status, vtt: .track.vtt_url}'

# the cues of one track as JSON
curl -s "$API/subtitles/tracks/<track-id>/cues" "${H[@]}"

אותו דבר ב-JavaScript

מהשרת שלכם (Node 18 ומעלה, בלי ספריות).

const API = 'https://api.viewstream.co.il/v1';
const vs = (path) => fetch(API + path, {
  headers: { Authorization: `Bearer ${process.env.VS_KEY}` },
}).then((r) => r.ok ? r.json() : Promise.reject(r.status));

const { items } = await vs(`/channels/${channelId}/catchup`);
for (const p of items.filter((p) => p.status === 'recorded')) {
  const s = await vs(`/programmes/${p.id}/summary`);
  console.log(p.title, s.presenters.join(', '), s.summary);
}

שגיאות מוחזרות כ-application/problem+json. בחריגה ממגבלת הקצב מתקבל 429 עם Retry-After. ההפניה המלאה, עם כל השדות, נמצאת בתיעוד ה-API (זמין גם בעברית).

4 · Webhooks

יודעים ברגע שמשהו קורה.

קבלו בקשת POST חתומה ב-HTTPS כשסרטון מוכן, כשקליפ סופי, כששידור מתחיל, כשפיד מתחלף או כשהתראה נדלקת. משלוחים שנכשלו נשלחים שוב אוטומטית, ואפשר לשלוח אותם מחדש מ-Studio ← אינטגרציות ← Webhooks.

הרשמה

הרשאה webhooks:manage. התשובה מציגה את סוד החתימה (secret) פעם אחת בלבד — שמרו אותו.

curl -s -X POST "$API/webhooks" "${H[@]}" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://cms.example.com/vs-hook",
       "events": ["asset.ready", "clip.ready", "channel.programme_started"]}'
// what you receive
POST /vs-hook
X-VS-Event: asset.ready
X-VS-Timestamp: 1791295200
X-VS-Signature: sha256=…

{"id": "…", "type": "asset.ready", "at": "2026-10-06T08:00:00Z", "data": {…}}

אימות החתימה (Node)

HMAC-SHA256 על <timestamp>.<raw body>. אמתו לפני שאתם מפענחים את הגוף, ודחו חותמות זמן ישנות.

import crypto from 'node:crypto';

export function verify(secret, rawBody, ts, sig) {
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
  const want = 'sha256=' + crypto.createHmac('sha256', secret)
    .update(`${ts}.`).update(rawBody).digest('hex');
  return want.length === sig.length &&
    crypto.timingSafeEqual(Buffer.from(want), Buffer.from(sig));
}
5 · פודקאסטים

כל תוכנית יכולה להיות גם פודקאסט.

סמנו תוכנית כפודקאסט ב-Studio ← אתרים, ו-ViewStream יכין גרסת אודיו לכל פרק ויפרסם פיד RSS תקני עם תמונה, תיאור ופרקים. מגישים את הפיד פעם אחת ל-Apple Podcasts, ל-Spotify או ל-YouTube Music, ופרקים חדשים מופיעים שם מעצמם. פרקי הווידאו נשארים באתר שלכם.

https://<your-site-domain>/podcast/<show-slug>/feed.xml
https://api.viewstream.co.il/s/v1/acme/podcast/<show-slug>/feed.xml
6 · עוזרי AI

שואלים את הפלטפורמה בשפה פשוטה.

ל-ViewStream יש שרת MCP, כך ש-Claude,‏ Cursor ועוזרי AI אחרים יכולים לעבוד מול הפלטפורמה עם מפתח ה-API שלכם ובהרשאות שלו: „מה משודר עכשיו בכל הערוצים?”, „מצא את הראיון של אתמול על התקציב ותכין ממנו קליפ של 60 שניות”. העוזר יכול גם לקרוא את התיעוד, באנגלית ובעברית.

Claude Code

claude mcp add --transport http viewstream \
  https://api.viewstream.co.il/mcp \
  --header "Authorization: Bearer <key>"

Cursor ולקוחות אחרים

{
  "mcpServers": {
    "viewstream": {
      "url": "https://api.viewstream.co.il/mcp",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

תנו לעוזר מפתח נפרד עם הרשאות קריאה בלבד, אלא אם הוא אמור לשנות דברים. כל קריאה שלו נרשמת ביומן הביקורת. כתובת השרת והפקודה מוכנות להעתקה גם ב-Studio ← אינטגרציות.

לסוכני AI: כל 17 הכלים וההרשאות שלהם, הגדרה ל-Claude Code,‏ Cursor ו-Claude Desktop ותיעוד קריא למכונות (llms.txt) נמצאים בעמוד המפתחים.

7 · Next.js ו-Vercel

אתר וידאו ב-Vercel תוך אחר צהריים.

@viewstream/next מביא לכל אתר App Router את הנגן, פונקציות API עם תגיות מטמון של Next.js, נתיב webhook חתום והעלאה ישירה מהדפדפן. אתר הבסיס, בעברית ובאנגלית, כולל סרטונים אחרונים, חיפוש בקאץ'-אפ שפותח את התוכנית בשנייה שבה משהו נאמר, תקצירי AI ומגישים, כתבות AI ודף העלאה. מגדירים שלושה משתני סביבה ב-Vercel ומעלים.

דף סרטון

מפתח ה-API נשאר בשרת. הדפים נשמרים במטמון ומתרעננים לפי תגית.

// app/v/[id]/page.tsx
import { createViewStream } from '@viewstream/next/server';
import { ViewStreamPlayer } from '@viewstream/next/client';

const vs = createViewStream(); // VIEWSTREAM_API_KEY, VIEWSTREAM_TENANT

export default async function Page({ params }) {
  const { id } = await params;
  const video = await vs.assets.get(id);
  return <ViewStreamPlayer tenant="acme" kind="vod" id={video.id} lang="he" />;
}

מפרסמים ב-Studio, האתר מתעדכן

הפנו webhook לנתיב הזה עם asset.published,‏ clip.final ו-artifact.published. החתימה נבדקת, והדפים שהשתנו מתרעננים מיד.

// app/api/viewstream/webhook/route.ts
import { viewstreamWebhook } from '@viewstream/next/webhook';

export const POST = viewstreamWebhook({
  secret: process.env.VIEWSTREAM_WEBHOOK_SECRET,
});

העלאות עוברות מהדפדפן ישירות לאחסון של ViewStream בחלקים, עם אסימון העלאה בלבד, כך שמגבלת גודל הבקשה של Vercel לא חלה, והמפתח לא מגיע לדפדפן.

8 · וורדפרס

אתר הוורדפרס שלכם, מחובר בלחיצה אחת.

התוסף של ViewStream הופך סרטונים חדשים, קליפים סופיים, כתבות AI ותוכניות לצפייה חוזרת לפוסטים בוורדפרס, מוסיף בלוק סרטון ViewStream, ומעלה סרטונים מהדפדפן ישירות לאחסון של ViewStream. בעברית ובאנגלית, בלי להעתיק מפתח API.

1. התקנה

בוורדפרס: תוספים ← הוספת תוסף ← העלאת תוסף, בוחרים את viewstream-wordpress.zip, התקנה ואז הפעלה. נדרשים וורדפרס 6.4 ומעלה ו-PHP 8.1 ומעלה.

2. התחברות ל-ViewStream

הגדרות ← ViewStream ← התחברות ל-ViewStream. נפתח ViewStream Studio: מתחברים, בוחרים את הארגון, רואים בדיוק אילו הרשאות האתר מקבל ומאשרים. חוזרים לוורדפרס מחוברים: לאתר נוצר מפתח משלו (WordPress: <האתר>, אפשר לבטל אותו ב-Studio ← אינטגרציות ← מפתחות API), וה-webhook נרשם אוטומטית.

3. בוחרים מה הופך לפוסט

סרטונים שפורסמו, קליפים סופיים, כתבות AI שפורסמו, תוכניות שהסתיימו. הפוסטים נשמרים כטיוטה כברירת מחדל, או ממתינים לסקירה, או מתפרסמים מיד, עם סוג התוכן, הקטגוריה, הכותב והנגן שתבחרו.

4. העלאה והטמעה

מדיה ← ViewStream או מתוך הבלוק: הקובץ עובר מהדפדפן ישירות לאחסון של ViewStream בחלקים של 64 MB, לא דרך שרת הוורדפרס, עם פס התקדמות והמשך אחרי תקלה. בעורך: בלוק סרטון ViewStream או [viewstream id="…" kind="vod"].

צפו: שלושה מדריכים קצרים

1 · התקנת התוסף
2 · חיבור החשבון
3 · פרסום אוטומטי

ניתוק בתוסף מבטל את המפתח שלו. הסרת התוסף מוחקת את כל ההגדרות שלו; הפוסטים נשארים. סוכנויות שמעדיפות מפתח ידני יכולות להדביק אותו תחת מתקדם.

בונים על ViewStream?

לקוחות והסוכנויות שלהם מקבלים מפתחות API, גישה לפי הרשאות ועזרה ישירה מהצוות שבונה את הפלטפורמה.