PHPackages                             carbon/videoplatformeditor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. carbon/videoplatformeditor

ActiveNeos-carbon[Utility &amp; Helpers](/categories/utility)

carbon/videoplatformeditor
==========================

Editors to select Youtube, Vimeo content and download thumbnail and metadata

00PHPCI passing

Since Jun 30Pushed yesterdayCompare

[ Source](https://github.com/CarbonPackages/Carbon.VideoPlatformEditor)[ Packagist](https://packagist.org/packages/carbon/videoplatformeditor)[ RSS](/packages/carbon-videoplatformeditor/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Carbon VideoPlatformEditor
==========================

[](#carbon-videoplatformeditor)

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.

Features
--------

[](#features)

- **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

Requirements
------------

[](#requirements)

- Neos/Neos-UI ~9.1.4

### Requirements for for building the plugin

[](#requirements-for-for-building-the-plugin)

- Node.js 24
- Yarn 3.2.0

Installation
------------

[](#installation)

```
composer require carbon/videoplatformeditor
```

Project Structure
-----------------

[](#project-structure)

### Backend (PHP)

[](#backend-php)

**Core Classes:**

- `Video` - Represents a video entity with metadata
- `VideoPlatformType` - Enum for platform types (YouTube, Vimeo)
- `YoutubeVideoId` / `VimeoVideoId` - Platform-specific video ID models
- `AspectRatio` - Video aspect ratio handling
- `AssetId` - Reference to Neos asset resources

**Infrastructure:**

- `OembedMetadataProvider` - Retrieves metadata via oEmbed protocol
- `YoutubeContentDetailsProvider` - YouTube-specific metadata extraction
- `ImageImporter` - Handles thumbnail asset creation
- `OembedHtmlExtractor` - Parses oEmbed HTML responses
- `AssetUsageExtractionAspect` - Tracks asset usage relationships

**Controllers:**

- `VideoPlatformController` - Backend API endpoints
- `VideoQuery` - Query builder for video searches

### Frontend (TypeScript/React)

[](#frontend-typescriptreact)

**Core Module** (`Modules/core/`):

- `InspectorEditor` - React component for the Neos inspector UI
- `MetadataView` - Displays video metadata and preview
- `Video` domain 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/`

Configuration
-------------

[](#configuration)

### Settings.Neos.Ui.yaml

[](#settingsneosuiyaml)

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/VideoPlatformEditor
```

### Settings.Mvc.yaml

[](#settingsmvcyaml)

Contains MVC-specific configurations for the backend controllers.

### Policy.yaml

[](#policyyaml)

Defines access control policies for video platform operations.

Usage
-----

[](#usage)

### PHP Integration

[](#php-integration)

```
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
);
```

### Neos NodeType

[](#neos-nodetype)

Define a video property in your NodeType:

```
'MyPackage:Content.Video':
  superTypes:
    'Neos.Neos:Content': true
  properties:
    video:
      type: 'Carbon\VideoPlatformEditor\Video'
```

Development
-----------

[](#development)

### Build Commands

[](#build-commands)

```
# Type checking
yarn lint

# Build plugin
yarn build
```

### Project Workspaces

[](#project-workspaces)

This project uses Yarn workspaces:

- `Modules/core` - Core TypeScript domain and utilities
- `Modules/plugin` - Neos UI plugin build

Testing
-------

[](#testing)

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

License
-------

[](#license)

GPL-3.0-or-later

Support
-------

[](#support)

For issues and feature requests, please refer to the repository's issue tracker.

###  Health Score

21

↑

LowBetter than 18% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 69.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/5fec51ac160a110a31a72a54ac29e276a447d8306205a052d35491ac9cf0589b?d=identicon)[jonnitto](/maintainers/jonnitto)

![](https://avatars.githubusercontent.com/u/85400359?v=4)[Marc Henry Schultz](/maintainers/mhsdesign)[@mhsdesign](https://github.com/mhsdesign)

---

Top Contributors

[![mhsdesign](https://avatars.githubusercontent.com/u/85400359?v=4)](https://github.com/mhsdesign "mhsdesign (9 commits)")[![jonnitto](https://avatars.githubusercontent.com/u/4510166?v=4)](https://github.com/jonnitto "jonnitto (4 commits)")

---

Tags

neos

### Embed Badge

![Health badge](/badges/carbon-videoplatformeditor/health.svg)

```
[![Health](https://phpackages.com/badges/carbon-videoplatformeditor/health.svg)](https://phpackages.com/packages/carbon-videoplatformeditor)
```

###  Alternatives

[marcelweidum/filament-expiration-notice

Customize the livewire expiration notice

94135.4k5](/packages/marcelweidum-filament-expiration-notice)[omnia-digital/livewire-calendar

Laravel Livewire calendar component

13268.5k](/packages/omnia-digital-livewire-calendar)[nass600/get-id3

PHP library for handling audio/video files metadata

5833.3k3](/packages/nass600-get-id3)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
