Repository navigation
Conversation
Covers building video experiences on the Cloudinary Video Player — adaptive streaming, chapters, captions, transcripts, hotspots and AI analysis — plus migrating media in from Brightcove, Vimeo, YouTube and Wistia. The skill ships with the claim tests it was built against. They assert the load-bearing factual claims (transformation behaviour, async output shapes, player distribution, source-platform limits) against live endpoints, so a claim going stale fails loudly rather than misleading an agent. The default mode needs no credentials; --cloud additionally provisions a cloud and needs media fixtures via MEDIA_DIR, which are too large to vendor here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
|
||
| --- | ||
|
|
||
| # Phase A — establish the assets |
There was a problem hiding this comment.
Migration is about a third of this skill and most of it applies to images too. Should it be its own skill covering both image and video?
There was a problem hiding this comment.
Main moved skills to skills/<category>/<name>/ in #22, and CONTRIBUTING.md requires that layout. This should move to skills/use-cases/cloudinary-video/
There was a problem hiding this comment.
@ed-cld - I'd think that a general cloudinary-video skill should move to /platform/ (similar to the upload & transformation skills) as a skill that gives general guidance about a major Cloudinary feature-area.
The use-case skills should be about implementing specific common end2end user-oriented use-cases - i.e. "create a product gallery", "generate an instagram post", etc
| license: MIT | ||
| metadata: | ||
| author: cloudinary | ||
| version: '2.1.0' |
There was a problem hiding this comment.
Version should be 1.0.0, and the description should follow the platform shape in CONTRIBUTING.md ("Reference for… Use when…")
| getting existing media onto a cloud.** Those skills handle transformation URLs. | ||
| Use them for that; use this for everything else. | ||
|
|
||
| ## How to use this |
There was a problem hiding this comment.
Most of our other skills have a Quick Start or Non-negotiable rules section near the top. The key video rules here are further down in B2 and B3
|
|
||
| Basic auth with the API key and secret; both `playerOptions` and | ||
| `sourceOptions` are required and take arbitrary player/source keys. Full | ||
| reference: <https://cloudinary.com/documentation/video_player_profiles_reference> |
There was a problem hiding this comment.
This link needs the .md version with ?install_source=skillspack&referrer=video-skill. CI misses it because it only checks .md and llms.txt links
| video.js manages them as *remote* tracks. Use | ||
| `videojs.getPlayer(id).remoteTextTracks()`. | ||
|
|
||
| ## Constructor options |
There was a problem hiding this comment.
The Constructor options, source(), chapters, textTracks, and interactionAreas sections repeat what's in the player docs. Maybe link to the docs there and keep only the traps and don'ts?
| @@ -0,0 +1,122 @@ | |||
| # Field guide: delivery best practices | |||
|
|
|||
| Condensed from Cloudinary's internal CSM video onboarding checks & best | |||
There was a problem hiding this comment.
This mentions it's condensed from the internal CSM guide. We should remove that since the repo is public
| - Android: `f_mp4,vc_av1` → `f_webm,vc_vp9` → `f_mp4,vc_h264` (fallback) | ||
| - iOS: `f_mp4,vc_av1` → `f_mp4,vc_h265` → `f_mp4,vc_h264` (fallback) | ||
|
|
||
| …or by sending an `Accept` header (e.g. `video/webm; codecs="vp9"`, |
There was a problem hiding this comment.
Our docs are missing the Accept header, AV1, and mobile SDK breakpoints info. Would be a good time to add it
| fi | ||
|
|
||
| SKILL=.. | ||
| DEMO_CLOUD=dxuiuruim # a claimed cloud with the full feature set present |
There was a problem hiding this comment.
--cloud mode needs fixtures from the private cloudinary-video-skill repo, and the other checks depend on assets in the dxuiuruim cloud
…tion - Move the skill to skills/platform/cloudinary-video and list it under Platform in the README. - Split out the platform-migration content (getting originals off other platforms, mining an existing site, source-platforms.md) for a separate asset-migration skill; keep two short tips for media from other platforms. - Follow the repo conventions: version 1.0.0, a "Reference for... Use when..." description, When to Use, Quick Start rules, Additional Resources with tracked doc links, and Related Skills. Move upload and preparation detail to references/upload-and-prepare.md to keep SKILL.md under 500 lines. - Correct claims that the docs, the player 4.1.0 source, or live requests contradict: first-request behaviour (streams with the wrong duration; 423 only for async derivations), sourceTypes and breakpoints per source() call, maxDpr, autoplayMode, eager with f_auto, thresholds aligned with the field guidance, audio-only sources, lazy posters, seek thumbnails on loops, and warming with a browser User-Agent. - Trim player.md to traps and link the API reference, drop internal references, and replace em dashes. - Move the claim tests to tests/cloudinary-video, run them against the public demo cloud, and note the tests/ convention in CONTRIBUTING.md.
- Switching one player between progressive and ABR: the breakpoint resize
stays in the player's transformation, so breakpoints: false alone still
returns 400. Recommend separate players, and give the reset that works
(player.transformation({}) plus breakpoints: false), verified in a browser.
- Player facts from the 4.1.0 source: preload defaults to metadata, lazy
resolves to a placeholder until loadPlayer(), controls() is a wrapper
method, which bundles construct synchronously, and colors.text must contrast
with colors.base.
- Captions and tracks: translations need only a language, audio description
goes in a descriptions track, and Studio transcripts can be uploaded only
for translations.
- Delivery: use f_auto:video in the native fallback (matching
cloudinary-transformations), the combined f_auto,q_auto can encode
differently, e_preview fails on very short sources, eager isn't supported
with Optimize by default, and auto_video_details isn't supported by the
SDKs or the MCP.
- Remove undocumented internal endpoints, the unverified quota numbers, the
"how much is verified" section, and demo-specific wording; reconcile the
React guidance with cloudinary-react; make Phase headings H2.
- Make the warming loop stop on real errors and report a timeout, and test
that both f_auto forms are accepted rather than byte-identical.
Adds
cloudinary-videoto the collection as a platform skill, alongsidecloudinary-docsandcloudinary-transformations.What it covers
Building video experiences on the Cloudinary Video Player: choosing adaptive or progressive delivery per source, configuring the player and its saved settings, captions, chapters, transcripts, hotspots, and AI analysis. It covers the video-specific decisions that
cloudinary-transformationsandcloudinary-docsleave open, and points to them for everything else.Layout follows the existing skills:
SKILL.md(When to Use, Quick Start rules, Additional Resources, Related Skills) plus areferences/directory it links into. Version1.0.0; doc links carryinstall_sourceandreferrer=video-skill.Changes from the first version
Based on the review comments on this PR and the Oct 7 skills-pack discussion:
skills/platform/cloudinary-video/and listed under Platform in the README.asset-migrationuse-case skill (Add a draft asset-migration skill #25). Two short tips remain here.player.mdtrimmed to the traps, with a link to the API reference for every option.player.transformation({}); verified in a browser);maxDpr,preload,lazy,autoplayMode, eager withf_autoand with Optimize by default, translated captions, and audio-description tracks;The claim tests
The tests moved out of the skill directory to
tests/cloudinary-video/, so they no longer ship to users who install the skill (noted in CONTRIBUTING.md). They assert the skill's load-bearing claims against live endpoints, now on Cloudinary's publicdemocloud:./tests/cloudinary-video/skill-claims.sh # no credentials needed21 checks pass; the chapters and translated-transcript paths are skipped unless
FEATURE_CLOUDandFEATURE_IDpoint at a cloud that has them.--cloudprovisions a fresh cloud to assert the upload and add-on claims, using any JPEG and speech MP4 set inTEST_IMAGEandTEST_VIDEO.Useful links
Provenance
Developed by @konforti in CloudinaryLtd/cloudinary-video-skill, where the demo site it was built and validated against also lives. Revised by @ed-cld for the review above.
🤖 Generated with Claude Code