- What does snordian/h5p-extractor actually do?
- It is a thin PHP orchestration layer that produces server-side HTML for H5P content instead of relying on the browser-side H5P Player. It extracts .h5p archives and gives you access to h5p.json, content.json, interactive content markup, and library metadata. The rendering heavy lifting is done by the H5P core libraries rather than by this package itself, so treat it as an export and serialization adapter.
- How do I install h5p-extractor in a Laravel application?
- Install it with Composer, for example composer require snordian/h5p-extractor, and then wrap calls in your own service class or queued job. There is no Laravel service provider or facade coupling to unwind, so integration is mostly a matter of passing a stored .h5p file or extracted content directory into the extractor. Keep the extractor behind an application-owned interface so you can swap or fork it later.
- Do I need headless Chromium or Node to render H5P content?
- Per the package design, static HTML generation relies on a headless browser runtime that executes the player and captures the resulting DOM, so a Chromium binary and its shared libraries must exist on every host that renders. Before committing, confirm which rendering backend the current release actually requires and whether the version is pinned. This is an environmental dependency, not a PHP one, so plan your container image accordingly.
- Which Laravel and PHP versions are supported?
- The package is PHP-native with no Laravel coupling, so it works on any Laravel version whose PHP constraint satisfies the package's composer.json. Check the require block in composer.json for the exact PHP floor rather than assuming a Laravel-version matrix. Because the real constraint is the headless browser environment, PHP version is usually the easy part of the compatibility question.
- Can I use it to make H5P content indexable by search engines?
- Yes, that is one of the main use cases: server-rendered HTML gives crawlers real markup instead of content injected by JavaScript at runtime. It also suits static lesson snapshots, offline or mobile bundles, email and PDF certificate exports, and compliance archiving. Keep the existing client-side player as the permanent fallback for anything that needs live interaction.
- Does it support interactive content types like drag-and-drop or branching scenarios?
- Anything stateful degrades to a static snapshot, so branching scenarios, drag-and-drop scoring, and adaptive paths will not behave interactively in the extracted output. Treat the extractor as an export and render adapter, never as the primary playback path. Validate the fidelity ceiling per content type before rollout, especially for your top ten most-used content types.
- Can I run h5p-extractor on Laravel Vapor or shared hosting?
- Generally no, unless you provision the runtime yourself. A Chromium binary, its shared libraries, fonts, adequate memory, and a sandbox strategy must exist on every host that renders, which rules out naive shared hosting and complicates serverless targets such as Vapor and Lambda. A container-based worker pool on ECS, Fargate, Kubernetes, or a Forge-provisioned VM is the realistic deployment shape, and the hosting decision changes the estimate more than any code concern.
- Is it safe to render third-party .h5p packages on my server?
- H5P packages are executable content, so rendering them in a headless browser on your infrastructure is an untrusted-code execution path. Isolate rendering in a sandboxed container with restricted egress, no access to application secrets, and a hard render timeout ceiling. Long-lived browser processes can leak memory or hang on heavy content, so run renders in short-lived workers and recycle them aggressively.
- How do I keep H5P library versions in sync between authoring and rendering?
- Rendered output depends on the exact H5P core and content-type library versions present on the server. Authors publishing against newer libraries than the server carries will either fail or render degraded output, which is a silent per-content-type failure mode. Consider storing a per-content render manifest that records the library versions used, and re-render artifacts when libraries are upgraded.
- Is h5p-extractor production-ready, and should I fork it?
- It is flagged as a proof of concept with very low adoption: roughly six stars, zero dependents, a single maintainer, and a trust score around 0.06. There is no ecosystem validation and no bus factor, so plan for an internal fork from day one and budget the fork-and-own cost. Confirm maintainer responsiveness to issues and check the licensing posture of the H5P libraries bundled into your output artifacts before committing.