A Neos CMS plugin that provides editors and infrastructure for managing videos from popular platforms (YouTube and Vimeo), with automatic metadata extraction and thumbnail downloading.
- Multi-platform support: Seamless integration with YouTube and Vimeo
- Inspector Editor: User-friendly UI component for selecting and managing videos in Neos backend
- Automatic Metadata Extraction: Fetches video metadata including title, duration, and aspect ratio
- Thumbnail Management: Automatically downloads and stores video thumbnails as Neos assets
- oEmbed Integration: Uses oEmbed protocol for reliable metadata extraction
- TypeScript Support: Modern frontend development with TypeScript and React
- Neos/Neos-UI ~9.1.4
- Node.js 24
- Yarn 3.2.0
composer require carbon/videoplatformeditorCore Classes:
Video- Represents a video entity with metadataVideoPlatformType- Enum for platform types (YouTube, Vimeo)YoutubeVideoId/VimeoVideoId- Platform-specific video ID modelsAspectRatio- Video aspect ratio handlingAssetId- Reference to Neos asset resources
Infrastructure:
OembedMetadataProvider- Retrieves metadata via oEmbed protocolYoutubeContentDetailsProvider- YouTube-specific metadata extractionImageImporter- Handles thumbnail asset creationOembedHtmlExtractor- Parses oEmbed HTML responsesAssetUsageExtractionAspect- Tracks asset usage relationships
Controllers:
VideoPlatformController- Backend API endpointsVideoQuery- Query builder for video searches
Core Module (Modules/core/):
InspectorEditor- React component for the Neos inspector UIMetadataView- Displays video metadata and previewVideodomain model - TypeScript representation of video data- HTTP client for backend communication
Plugin Module (Modules/plugin/):
- Built with esbuild for production optimization
- Compiled JavaScript and CSS served from
Resources/Public/
Registers the VideoPlatformEditor as the inspector editor for the Video data type:
Neos:
Neos:
userInterface:
inspector:
dataTypes:
Carbon\VideoPlatformEditor\Video:
editor: Carbon.VideoPlatformEditor/Inspector/Editors/VideoPlatformEditorContains MVC-specific configurations for the backend controllers.
Defines access control policies for video platform operations.
use Carbon\VideoPlatformEditor\Video;
use Carbon\VideoPlatformEditor\YoutubeVideoId;
$video = new Video(
id: YoutubeVideoId::fromString('dQw4w9WgXcQ'),
title: 'Video Title',
duration: 212,
aspectRatio: AspectRatio::SIXTEEN_NINE,
thumbnail: null
);Define a video property in your NodeType:
'MyPackage:Content.Video':
superTypes:
'Neos.Neos:Content': true
properties:
video:
type: 'Carbon\VideoPlatformEditor\Video'# Type checking
yarn lint
# Build plugin
yarn buildThis project uses Yarn workspaces:
Modules/core- Core TypeScript domain and utilitiesModules/plugin- Neos UI plugin build
Unit and functional tests are located in Tests/:
# Run tests
vendor/bin/phpunit Tests/Test coverage includes:
- Video serialization/deserialization
- oEmbed metadata extraction
- YouTube content details
- Aspect ratio handling
- Asset usage tracking
GPL-3.0-or-later
For issues and feature requests, please refer to the repository's issue tracker.