1. התקנה
בוורדפרס: תוספים ← הוספת תוסף ← העלאת תוסף, בוחרים את viewstream-wordpress.zip, התקנה ואז הפעלה. נדרשים וורדפרס 6.4 ומעלה ו-PHP 8.1 ומעלה.
כל מה שיש ב-ViewStream זמין גם מחוץ ל-Studio. מטמיעים את הנגן בשורה אחת, בונים אתר או אפליקציה משלכם על ה-Sites Delivery API, שולפים קאץ'-אפ, סיכומי AI, מגישים וכתוביות דרך ה-REST API, מגיבים לאירועים עם Webhooks חתומים, מפרסמים תוכניות כפודקאסט ומחברים עוזרי AI דרך MCP. הדוגמאות כאן מוכנות להעתקה: החליפו את acme, <channel-id> ו-$VS_KEY בערכים שלכם.
את קטעי הקוד האלה Studio מכין בשבילכם: פתחו ערוץ, סרטון או קליפ ובחרו הטמעה ושיתוף. המיתוג, הסקין, השפה, הפרסומות והדומיינים המורשים מגיעים מתצורת הנגן שאתם עורכים ב-Studio (נגנים), כך ששינוי שם מגיע לכל העמודים תוך כדקה.
ההטמעה הפשוטה ביותר, עובדת בכל מערכת ניהול תוכן. אפשרויות: 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.
ה-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
צרו מפתח 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[@]}"
הרשאה 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[@]}"
מהשרת שלכם (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 (זמין גם בעברית).
קבלו בקשת 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": {…}}
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));
}
סמנו תוכנית כפודקאסט ב-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
ל-ViewStream יש שרת MCP, כך ש-Claude, Cursor ועוזרי AI אחרים יכולים לעבוד מול הפלטפורמה עם מפתח ה-API שלכם ובהרשאות שלו: „מה משודר עכשיו בכל הערוצים?”, „מצא את הראיון של אתמול על התקציב ותכין ממנו קליפ של 60 שניות”. העוזר יכול גם לקרוא את התיעוד, באנגלית ובעברית.
claude mcp add --transport http viewstream \ https://api.viewstream.co.il/mcp \ --header "Authorization: Bearer <key>"
{
"mcpServers": {
"viewstream": {
"url": "https://api.viewstream.co.il/mcp",
"headers": { "Authorization": "Bearer <key>" }
}
}
}
תנו לעוזר מפתח נפרד עם הרשאות קריאה בלבד, אלא אם הוא אמור לשנות דברים. כל קריאה שלו נרשמת ביומן הביקורת. כתובת השרת והפקודה מוכנות להעתקה גם ב-Studio ← אינטגרציות.
לסוכני AI: כל 17 הכלים וההרשאות שלהם, הגדרה ל-Claude Code, Cursor ו-Claude Desktop ותיעוד קריא למכונות (llms.txt) נמצאים בעמוד המפתחים.
@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" />; }
הפנו 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 לא חלה, והמפתח לא מגיע לדפדפן.
התוסף של ViewStream הופך סרטונים חדשים, קליפים סופיים, כתבות AI ותוכניות לצפייה חוזרת לפוסטים בוורדפרס, מוסיף בלוק סרטון ViewStream, ומעלה סרטונים מהדפדפן ישירות לאחסון של ViewStream. בעברית ובאנגלית, בלי להעתיק מפתח API.
בוורדפרס: תוספים ← הוספת תוסף ← העלאת תוסף, בוחרים את viewstream-wordpress.zip, התקנה ואז הפעלה. נדרשים וורדפרס 6.4 ומעלה ו-PHP 8.1 ומעלה.
הגדרות ← ViewStream ← התחברות ל-ViewStream. נפתח ViewStream Studio: מתחברים, בוחרים את הארגון, רואים בדיוק אילו הרשאות האתר מקבל ומאשרים. חוזרים לוורדפרס מחוברים: לאתר נוצר מפתח משלו (WordPress: <האתר>, אפשר לבטל אותו ב-Studio ← אינטגרציות ← מפתחות API), וה-webhook נרשם אוטומטית.
סרטונים שפורסמו, קליפים סופיים, כתבות AI שפורסמו, תוכניות שהסתיימו. הפוסטים נשמרים כטיוטה כברירת מחדל, או ממתינים לסקירה, או מתפרסמים מיד, עם סוג התוכן, הקטגוריה, הכותב והנגן שתבחרו.
מדיה ← ViewStream או מתוך הבלוק: הקובץ עובר מהדפדפן ישירות לאחסון של ViewStream בחלקים של 64 MB, לא דרך שרת הוורדפרס, עם פס התקדמות והמשך אחרי תקלה. בעורך: בלוק סרטון ViewStream או [viewstream id="…" kind="vod"].
ניתוק בתוסף מבטל את המפתח שלו. הסרת התוסף מוחקת את כל ההגדרות שלו; הפוסטים נשארים. סוכנויות שמעדיפות מפתח ידני יכולות להדביק אותו תחת מתקדם.
כל פעולה, שדה והרשאה. בחרו עברית בראש העמוד. קובצי OpenAPI להורדה.
סקינים, תצורות, הדגמות חיות והרשימה המלאה של אפשרויות ההטמעה.
רכיבי שורות תוכן, שידור חי, לוח שידורים, קאץ'-אפ ונגן לאתרי Headless.
מתכננים אינטגרציה? נעזור בתכנון ונעבור איתכם על הקריאות הראשונות.
לקוחות והסוכנויות שלהם מקבלים מפתחות API, גישה לפי הרשאות ועזרה ישירה מהצוות שבונה את הפלטפורמה.