Skip to content
Report library
Purpose / Other

Remotion Best Practices Skill Security Audit

What the author says it does (original text)

Router for all Remotion skills

Independent security check

Do not install or run it yet

Files checked
124
Risks found
8
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
Medium risk

The copied Cesium component executes CDN JavaScript without an integrity check

Source references: 3
What we found

The component dynamically creates a script element, loads Cesium.js from cesium.com, and executes it in the browser. The visible code provides no subresource-integrity hash or locally locked dependency. A fixed version only stabilizes the URL; it does not verify the returned bytes.

Why this matters

If the CDN endpoint or upstream release is compromised, returned code would execute in the rendering browser and could access page data and credentials available there.

If the user copies or imports this component as instructed and runs a preview or render, it dynamically inserts remote CSS and JavaScript from a versioned CDN path. No `integrity` check is visible. A fixed URL version reduces accidental upgrades but does not authenticate the returned bytes; compromised remote content would execute with the render browser's privileges. Users can require locally bundled, locked Cesium assets or verified hashes plus strict network restrictions.

remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:31In the codeOpen original file
const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;const CESIUM_VER = '1.143';const CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;const R = 6371;
Show 2 other places
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:83In the codeOpen original file
const loadCesium = () =>	new Promise<any>((resolve, reject) => {		if ((window as any).Cesium) return resolve((window as any).Cesium);		(window as any).CESIUM_BASE_URL = CDN;		const css = document.createElement('link');		css.rel = 'stylesheet';		css.href = `${CDN}Widgets/widgets.css`;		document.head.appendChild(css);		const script = document.createElement('script');		script.src = `${CDN}Cesium.js`;		script.onload = () => resolve((window as any).Cesium);		script.onerror = () =>			reject(new Error(`Failed to load CesiumJS ${CESIUM_VER}`));		document.head.appendChild(script);	});
remotion-maps/techniques/cesium/TECHNIQUE.md:38In the instructionsOpen original file
1. Copy `assets/CesiumFlythrough.tsx`, a path JSON and `assets/example-Root.tsx` into the Remotion   project, or import the component directly.2. Supply the camera route as `[longitude, latitude][]`. Use only meaningful control points; do not hand-author dozens of tiny corrections.
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 2
High risk

The voiceover workflow asks the user for an ElevenLabs API key in chat

Source references: 4
What we found

When no TTS provider is specified, the reference explicitly tells the agent to recommend ElevenLabs and ask for the API key, although the implementation reads it from an environment variable. Sending the secret through chat is unnecessary to run the script.

Why this matters

The key could remain in conversation history, logs, or support exports. Anyone obtaining it could consume paid TTS quota.

When the voiceover reference is loaded and no provider was specified, its active instruction does say to ask for the API key. The example only needs the key through an environment variable, so sending it in chat is unnecessary. Another reference explicitly says never to ask users to paste secrets into chat, creating a direct conflict. Users should set the key only locally or through a secret manager and ask the author to remove the chat-secret request.

remotion-markup/REFERENCE.md:225In the instructionsOpen original file
## VoiceoverSee [voiceover.md](voiceover.md) for adding an AI-generated voiceover to Remotion compositions using ElevenLabs TTS.
Show 3 other places
remotion-markup/voiceover.md:14In the instructionsOpen original file
By default this guide uses **ElevenLabs** as the TTS provider (`ELEVENLABS_API_KEY` environment variable). Users may substitute any TTS service that can produce an audio file.If the user has not specified a TTS provider, recommend ElevenLabs and ask for their API key.Ensure the environment variable is available when running the generation script:
remotion-markup/voiceover.md:31In the instructionsOpen original file
```ts title="generate-voiceover.ts"const response = await fetch(  `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`,  {    method: "POST",    headers: {      "xi-api-key": process.env.ELEVENLABS_API_KEY!,      "Content-Type": "application/json",      Accept: "audio/mpeg",    },
remotion-saas/rendering.md:41In the instructionsOpen original file
2. Install `@remotion/lambda` using `npx remotion add @remotion/lambda`.3. Create the Lambda role policy, Lambda role, IAM user, user access key, and user policy from the generated Remotion policy commands.4. Store credentials in `.env` using `REMOTION_AWS_ACCESS_KEY_ID` and `REMOTION_AWS_SECRET_ACCESS_KEY`; never ask the user to paste secrets into chat.5. Run the Lambda policy validator if the user wants to verify permissions before deploying; use the user's package manager or the command shown in the docs (`npx remotion lambda policies validate`).6. Deploy the Lambda function. Mention that functions are bound to the Remotion version and must be redeployed after Remotion upgrades.
Medium risk

Dynamic metadata example fetches an arbitrary URL supplied through props

Source references: 3
What we found

The example passes `props.dataUrl` directly to `fetch()` without showing protocol, host, redirect, or private-network restrictions. If rendering props come from an untrusted user, that user can make the rendering environment request an address it can reach.

Why this matters

In a renderer that can reach cloud metadata, internal administration endpoints, or local services, this could be used to probe the internal network. Returned data is also placed into component props and could appear in logs, previews, or generated media. The evidence does not show automatic transmission back to an attacker.

This is a documentation example and does not make a request merely because the Skill is installed. If adopted, however, `calculateMetadata` directly fetches `props.dataUrl` without shown validation of scheme, host, redirects, or private-network addresses. If an external user controls that prop, the renderer could access addresses reachable from its network, enabling SSRF, internal-service probing, or data exposure. Users can require an HTTPS host allowlist and rejection of loopback, private-network, and unexpected redirect targets.

remotion-markup/calculate-metadata.md:105In the instructionsOpen original file
Fetch data or transform props before rendering:```tsxconst calculateMetadata: CalculateMetadataFunction<Props> = async ({  props,  abortSignal,}) => {  const response = await fetch(props.dataUrl, { signal: abortSignal });  const data = await response.json();  return {    props: {      ...props,      fetchedData: data,    },
Show 2 other places
remotion-markup/calculate-metadata.md:108In the instructionsOpen original file
```tsxconst calculateMetadata: CalculateMetadataFunction<Props> = async ({  props,  abortSignal,}) => {  const response = await fetch(props.dataUrl, { signal: abortSignal });  const data = await response.json();
remotion-markup/calculate-metadata.md:124In the instructionsOpen original file
The `abortSignal` cancels stale requests when props change in the Studio.
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 3
High risk

Troubleshooting recommends an “unrestricted” map API key

Source references: 2
What we found

For a 403 during headless rendering, the documentation directly recommends an unrestricted key. Removing source, application, or domain restrictions broadens where the key can be used; if it leaks through the environment, logs, build artifacts, or a client bundle, misuse becomes easier.

Why this matters

An attacker could consume map quota, create charges, or cause throttling or suspension. The following Google guidance narrows its key to one API, but equivalent least-privilege guidance is not given for MapTiler.

This is conditional troubleshooting guidance, not evidence that any key was changed. However, for a MapTiler 403 it explicitly recommends an “unrestricted” key. If followed, a key exposed through a client bundle, logs, or another readable location could be reused for unintended requests, consuming quota or incurring charges. Users can ask for a headless-rendering setup that retains API, origin, or IP restrictions rather than removing all restrictions.

remotion-maps/techniques/cesium/references/3d-troubleshooting.md:37In the instructionsOpen original file
| High-pitch frame shows a void/starfield above the horizon | No atmosphere                                                                                                 | `viewer.scene.skyAtmosphere.show = true`.                                                           || 403 on tiles in headless                                  | Domain-locked MapTiler key                                                                                    | Use an **unrestricted** key.                                                                        || Google root tileset returns 403                           | Map Tiles API disabled, billing absent, wrong key, or application restriction blocks local headless rendering | Enable Map Tiles API and billing; restrict the key to that API while allowing the Remotion request. || Google scene shows a duplicate/competing surface          | MapTiler or the Cesium globe is still enabled                                                                 | Do not add MapTiler; set `viewer.scene.globe.show=false`.                                           |
Show 1 other places
remotion-maps/techniques/cesium/references/3d-troubleshooting.md:38In the instructionsOpen original file
| 403 on tiles in headless                                  | Domain-locked MapTiler key                                                                                    | Use an **unrestricted** key.                                                                        || Google root tileset returns 403                           | Map Tiles API disabled, billing absent, wrong key, or application restriction blocks local headless rendering | Enable Map Tiles API and billing; restrict the key to that API while allowing the Remotion request. || Google scene shows a duplicate/competing surface          | MapTiler or the Cesium globe is still enabled                                                                 | Do not add MapTiler; set `viewer.scene.globe.show=false`.                                           |
Medium risk

Map credentials are placed in client request URLs, and the MapTiler branch calls for an unrestricted key

Source references: 7
What we found

The component reads MapTiler and Google keys from environment variables and interpolates them into browser request URLs. The MapTiler guide explicitly calls for an “unrestricted” key, weakening protection if it is exposed.

Why this matters

Keys may be visible in client code, network diagnostics, or request logs. Without API, origin, quota, or billing restrictions, another party could consume quota and create charges.

When a user adopts the MapTiler/Cesium components, the code reads environment variables and gives the key to a browser SDK or embeds it directly in tile URLs. Such keys can be visible in developer tools, logs, or caches. Client-side map keys are common, but the explicit instruction to use an “unrestricted” key increases quota or billing abuse risk if copied. Users can require a dedicated key restricted to necessary APIs, origins, and quotas; the Google branch already recommends API restriction.

remotion-maps/techniques/maptiler/TECHNIQUE.md:18In the instructionsOpen original file
Render labels as positioned [`<Interactive.Div>`](https://www.remotion.dev/docs/interactive.md) elements.Env `REMOTION_MAPTILER_KEY` (unrestricted). Init the map once (ref guard); update imperatively per frame.
Show 6 other places
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:29In the codeOpen original file
const MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;const CESIUM_VER = '1.143';
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:211In the codeOpen original file
					new C.UrlTemplateImageryProvider({						url: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,						maximumLevel: 20,					}),				);				viewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(					`https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,					{requestVertexNormals: true},
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:228In the codeOpen original file
				viewer.scene.globe.show = false;				const tileset = await C.Cesium3DTileset.fromUrl(					`https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_MAPS_API_KEY}`,					{
remotion-maps/techniques/maptiler/assets/RiverReveal.tsx:19In the codeOpen original file
// Sample route reveal. Replace the imported sample geometry, names, timing, and visual tokens in the// consuming production. The renderer stays static; approved centre/zoom motion is a CSS plate transform.maptilersdk.config.apiKey = process.env.REMOTION_MAPTILER_KEY as string;
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:209In the codeOpen original file
			if (mode === 'landscape') {				viewer.imageryLayers.addImageryProvider(					new C.UrlTemplateImageryProvider({						url: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,						maximumLevel: 20,					}),				);				viewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(					`https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,					{requestVertexNormals: true},				);
remotion-maps/techniques/cesium/TECHNIQUE.md:31In the instructionsOpen original file
Create a billing-enabled Google Map Tiles API key by followinghttps://developers.google.com/maps/documentation/tile/get-api-key. Enable the **Map Tiles API** andrestrict the key to that API. Ensure its application restriction permits local headless Remotionrequests.
Low risk

The install command does not pin a dependency version

Source references: 3
What we found

The installation command does not specify dependency versions. The same command may download different code later, so what you install can differ from what was checked.

Why this matters

A later install may download different code even though the command and this report have not changed.

The risk is supported, although SKILL.md line 39 is only routing text. The actual scaffold workflow applies when no project exists and invokes `create-video@latest`, followed by dependency installation. Because `latest` changes over time, a future run may obtain code not covered by this review. A user can require a tested fixed version and lockfile and confirm the target directory before execution.

SKILL.md:39In the instructionsOpen original file
For advanced rendering beyond simple `npx remotion render`, see: [Rendering Best Practices](./remotion-render/REFERENCE.md)
Show 2 other places
remotion-create/REFERENCE.md:12In the instructionsOpen original file
If a project already exists, skip this.Ensure Node.js and Git is installed, and the current folder is appropriate for starting a new project.
remotion-create/REFERENCE.md:15In the instructionsOpen original file
Scaffold one using:```bashnpx create-video@latest --yes --blank --no-tailwind my-videocd my-videonpm i```
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.Risks found: 2
Medium risk

A map reference tells the agent to hide provider attribution, directly conflicting with other rules

Source references: 5
What we found

The MapTiler geo-preparation reference supplies CSS that sets attribution controls and the MapTiler logo to display:none. Other map rules in the same Skill require provider attribution to remain visible, so different loaded references can produce opposite instructions.

Why this matters

Removing required copyright or provider notices from a finished video may violate licensing or service terms, leading to takedown demands, claims, or account restrictions.

The MapTiler geo-preparation reference explicitly supplies CSS that hides the logo and attribution controls, while the shipped example component enables both, and other map rules require provider attribution to remain visible. Following the former reference could produce output that violates provider licensing or policy and affect publication decisions. Users should require consistent guidance and prohibit hiding attribution until current provider terms are confirmed; the supplied component currently keeps it visible.

remotion-maps/techniques/maptiler/references/map-geo-prep.md:17In the instructionsOpen original file
  layers as needed, and retain only the context borders the production requires.- Logo/attribution: `maptilerLogo:false` + `attributionControl:false` aren't always enough — also hide  via CSS in the component:  ```tsx  <style>    {`      .maplibregl-ctrl-bottom-left,      .maplibregl-ctrl-bottom-right,      .maplibregl-ctrl-attrib,      .maptiler-logo {        display: none !important;      }    `}  </style>  ```
Show 4 other places
remotion-maps/techniques/mapbox/TECHNIQUE.md:26In the instructionsOpen original file
- Do not install `@types/mapbox-gl`; Mapbox GL JS ships its own types.- Keep required provider attribution visible and verify current provider terms before rendering.- Record the source and effective date of custom or disputed geography.- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.
remotion-maps/techniques/cesium/references/3d-flyover-architecture.md:8In the instructionsOpen original file
Create the Viewer with `baseLayer: false`, UI widgets disabled, and`contextOptions.webgl.preserveDrawingBuffer: true`. Never hide the credit display.
remotion-maps/techniques/maptiler/assets/RiverReveal.tsx:140In the codeOpen original file
			bearing: END.bearing,			interactive: false,			attributionControl: true,			navigationControl: false,			geolocateControl: false,			maptilerLogo: true,			fadeDuration: 0,			canvasContextAttributes: {preserveDrawingBuffer: true},
remotion-maps/techniques/mapbox/TECHNIQUE.md:24In the instructionsOpen original file
- Do not add a `mapInstance.remove()` cleanup function; it can interfere with Remotion's render lifecycle.- Use Mapbox style URLs such as `mapbox://styles/mapbox/standard` or a user-provided custom style.- Do not install `@types/mapbox-gl`; Mapbox GL JS ships its own types.- Keep required provider attribution visible and verify current provider terms before rendering.- Record the source and effective date of custom or disputed geography.- Inspect rendered pixels, not only Studio playback, at every required aspect ratio.
Medium risk

Some map examples disable attribution controls or hide provider branding

Source references: 6
What we found

Both Mapbox and MapLibre examples set `attributionControl: false`, and the MapTiler instructions say to hide the logo with CSS. Although the Cesium branch separately says to keep attribution visible, these concrete examples can lead generated videos to omit source identification.

Why this matters

If provider terms or data licenses require visible attribution, publishing the result may lead to license violations, takedown requests, additional licensing costs, or commercial disputes.

These are concrete settings likely to be copied into a composition, not merely warnings: the Mapbox and MapLibre examples disable attribution controls, and the MapTiler instruction says to hide the logo. Unless visible attribution is added elsewhere, output may breach provider attribution or branding terms and affect whether a user can publish it. The Cesium branch requires attribution, but that does not correct the other branches. Users can ask the author to document each provider's permitted presentation and preserve all required credits.

remotion-maps/techniques/mapbox/TECHNIQUE.md:100In the instructionsOpen original file
		const mapInstance = new mapboxgl.Map({			accessToken: mapboxAccessToken,			container: containerRef.current,			style: 'mapbox://styles/mapbox/standard',			center: zurich,			zoom: 7,			interactive: false,			attributionControl: false,			fadeDuration: 0,
Show 5 other places
remotion-maps/techniques/maplibre/TECHNIQUE.md:82In the instructionsOpen original file
		const mapInstance = new maplibregl.Map({			container: containerRef.current,			style: 'https://demotiles.maplibre.org/style.json',			center: zurich,			zoom: 7,			interactive: false,			attributionControl: false,			fadeDuration: 0,
remotion-maps/techniques/maptiler/TECHNIQUE.md:64In the instructionsOpen original file
Strip clutter on `load`: remove `symbol` layers (place labels) and `/other border/i` (admin-1 inner borders); hide the logo via CSS. Keep country + disputed borders.
remotion-maps/techniques/cesium/TECHNIQUE.md:76In the instructionsOpen original file
- Settle landscapes on `globe.tilesLoaded` and cities on `tileset.tilesLoaded`.- Keep all provider attribution visible.- Record the source and effective date of custom or disputed geography.
remotion-maps/techniques/mapbox/TECHNIQUE.md:107In the instructionsOpen original file
			interactive: false,			attributionControl: false,			fadeDuration: 0,
remotion-maps/techniques/maplibre/TECHNIQUE.md:88In the instructionsOpen original file
			interactive: false,			attributionControl: false,			fadeDuration: 0,

Inside this skill

8 instruction sections

This is a routing Skill. It loads different references for video creation, maps, captions, rendering, SaaS, documentation, or upgrades, so its effective permissions and network behavior depend on the selected branch.

View source
SKILL.md:13In the instructionsOpen original file
## Creating a videoIf the user asks to make, create, or build a new video or composition, load [Create a new Remotion video](./remotion-create/REFERENCE.md), whether or not a Remotion project already exists.
SKILL.md:53In the instructionsOpen original file
## Looking up Remotion APIs and documentationTo find and read current Remotion documentation, load [Remotion Docs](./remotion-docs/REFERENCE.md).## UpgradingTo upgrade Remotion, related packages, compatible Mediabunny packages, and installed Remotion Agent Skills, load [Remotion Upgrade](./remotion-upgrade/REFERENCE.md).

The map helper scripts read local GeoJSON, create directories, and write derived JSON/GeoJSON. The Cesium script accepts a command-line output path, while the MapTiler script writes to a fixed out directory.

View source
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:21In the codeOpen original file
const __dir = dirname(fileURLToPath(import.meta.url));const IN = process.argv[2] || resolve(__dir, '../assets/sample-river.geojson');const OUT = process.argv[3] || resolve(__dir, '../assets/cesium-path.json');const havKm = (a, b) => {
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:131In the codeOpen original file
mkdirSync(dirname(OUT), {recursive: true});writeFileSync(OUT, JSON.stringify(path));
remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:179In the codeOpen original file
mkdirSync(dirname(OUT_RIVER), {recursive: true});writeFileSync(OUT_RIVER, JSON.stringify(flow));writeFileSync(OUT_META, JSON.stringify(countryMeta));writeFileSync(OUT_BORDERS, JSON.stringify(borders));console.log(

The 3D map component downloads code, imagery, terrain, or 3D tiles from Cesium, MapTiler, or Google at runtime. Previewing and rendering are therefore not offline operations and may incur third-party API usage.

View source
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:31In the codeOpen original file
const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;const CESIUM_VER = '1.143';const CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;const R = 6371;
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:209In the codeOpen original file
			if (mode === 'landscape') {				viewer.imageryLayers.addImageryProvider(					new C.UrlTemplateImageryProvider({						url: `https://api.maptiler.com/tiles/satellite-v2/{z}/{x}/{y}.jpg?key=${MAPTILER_KEY}`,						maximumLevel: 20,					}),				);				viewer.terrainProvider = await C.CesiumTerrainProvider.fromUrl(					`https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=${MAPTILER_KEY}`,					{requestVertexNormals: true},				);
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:226In the codeOpen original file
			}			if (mode === 'city') {				viewer.scene.globe.show = false;				const tileset = await C.Cesium3DTileset.fromUrl(					`https://tile.googleapis.com/v1/3dtiles/root.json?key=${GOOGLE_MAPS_API_KEY}`,					{						showCreditsOnScreen: true,						maximumScreenSpaceError,					},				);				viewer.scene.primitives.add(tileset);

The upgrade workflow modifies project dependencies and lockfiles and also updates installed Remotion Agent Skills, persistently changing instructions the agent may follow later.

View source
remotion-upgrade/REFERENCE.md:16In the instructionsOpen original file
   This also updates project-local Remotion skills. Skip the manual upgrade below.
remotion-upgrade/REFERENCE.md:18In the instructionsOpen original file
3. If `@remotion/cli` is not available, upgrade manually:   - Get the latest stable Remotion version with `npm view remotion version`.   - Find every installed `remotion` and `@remotion/*` dependency across the project and upgrade them all to that exact version. Preserve their dependency sections and the project's workspace or catalog conventions.   - Read the current [Mediabunny compatibility page](https://www.remotion.dev/docs/mediabunny/version) and determine the Mediabunny version compatible with the target Remotion version. Upgrade every installed `mediabunny` and `@mediabunny/*` package to the documented compatible version.   - Run the project's package manager to update its lockfile.4. If `@remotion/cli` is not available, update the installed Remotion skills:
remotion-upgrade/REFERENCE.md:25In the instructionsOpen original file
   ```bash   npx skills update remotion-best-practices remotion-captions remotion-create remotion-docs remotion-interactivity remotion-maps remotion-markup remotion-multimedia remotion-render remotion-saas remotion-studio remotion-upgrade --yes   ```

This Skill is a router for Remotion workflows: it loads different reference files for video, map, rendering, caption, SaaS, and related tasks rather than implementing them directly in the entry file.

View source
SKILL.md:2In the instructionsOpen original file
---name: remotion-best-practicesdescription: Router for all Remotion skillsversion: 4.0.521
SKILL.md:15In the instructionsOpen original file
If the user asks to make, create, or build a new video or composition, load [Create a new Remotion video](./remotion-create/REFERENCE.md), whether or not a Remotion project already exists.
SKILL.md:27In the instructionsOpen original file
For static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md).

The map branches use external map services. The Mapbox example reads a public access token from an environment variable, MapLibre loads a style from a public HTTPS address, and the Cesium branch describes injecting a CDN script. Map rendering therefore makes network requests and may consume the relevant account's quota or billable resources.

View source
remotion-maps/techniques/mapbox/TECHNIQUE.md:63In the instructionsOpen original file
Mapbox requires a public access token. Prefer passing it as an input prop or reading it from an environment variable that is available to the bundled Remotion code.```tsconst mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;
remotion-maps/techniques/maplibre/TECHNIQUE.md:82In the instructionsOpen original file
		const mapInstance = new maplibregl.Map({			container: containerRef.current,			style: 'https://demotiles.maplibre.org/style.json',			center: zurich,			zoom: 7,
remotion-maps/techniques/cesium/references/3d-troubleshooting.md:50In the instructionsOpen original file
- **`viewer.render()`, never `scene.render()`** per frame. The single biggest trap.- Cesium loads from **CDN**; set `window.CESIUM_BASE_URL` _before_ injecting the script.- `preserveDrawingBuffer: true` or screenshots are blank.

The Skill instructs the agent to preserve changes users make outside the conversation and to treat surprising changes as intentional or ask before overwriting them. This reduces the risk of overwriting user files.

View source
SKILL.md:7In the instructionsOpen original file
## Preserve user changesUsers may make edits in the code outside of the conversation.If you detect a surprising change made in the meanwhile, don't overwrite it, assume it was intentional or ask for confirmation.

The map-preparation branch runs a script and generates several geodata files when progressive routes or country-entry triggers are needed. These are persistent file writes and should be limited to the project and data explicitly selected by the user.

View source
remotion-maps/techniques/maptiler/TECHNIQUE.md:60In the instructionsOpen original file
Use MapTiler vector layers for suitable provider features and custom GeoJSON for story-specific or ordered geometry. If the beat needs country-entry triggers or a progressive line draw, run `scripts/prep-geo.mjs` to bake `country-meta.json`, `borders.geojson`, and the ordered line. Details → `references/map-data-sources.md` and `references/map-geo-prep.md`.

The Skill is a conditional router: when a user creates a video or composition, it loads the creation guide; it also loads that guide when no project exists. The provided lines do not themselves execute a command.

View source
SKILL.md:15In the instructionsOpen original file
If the user asks to make, create, or build a new video or composition, load [Create a new Remotion video](./remotion-create/REFERENCE.md), whether or not a Remotion project already exists.
SKILL.md:19In the instructionsOpen original file
If no Remotion project currently exists, load [Create a new Remotion project](./remotion-create/REFERENCE.md)

It loads different reference guides according to the task, including maps, multimedia, rendering, Studio, SaaS, documentation lookup, and upgrades. Actual actions and permission requirements depend on the referenced guides.

View source
SKILL.md:27In the instructionsOpen original file
For static maps, animated routes and markers, geographic explainers, Mapbox, MapLibre, MapTiler, GeoJSON, or 3D geographic flyovers, load [Remotion Maps](./remotion-maps/REFERENCE.md).
SKILL.md:31In the instructionsOpen original file
For achieving multimedia tasks in the browser, such as trimming, cropping videos, or getting metadata from them, load [Remotion Multimedia](./remotion-multimedia/REFERENCE.md)
SKILL.md:39In the instructionsOpen original file
For advanced rendering beyond simple `npx remotion render`, see: [Rendering Best Practices](./remotion-render/REFERENCE.md)
SKILL.md:59In the instructionsOpen original file
To upgrade Remotion, related packages, compatible Mediabunny packages, and installed Remotion Agent Skills, load [Remotion Upgrade](./remotion-upgrade/REFERENCE.md).

The router instructs the agent not to overwrite unexpected changes made by the user outside the conversation, and to treat them as intentional or request confirmation.

View source
SKILL.md:9In the instructionsOpen original file
Users may make edits in the code outside of the conversation.
SKILL.md:11In the instructionsOpen original file
If you detect a surprising change made in the meanwhile, don't overwrite it, assume it was intentional or ask for confirmation.

The shown map assets are static JSON geographic data, such as country anchors, border coordinates, and river-path coordinates; these lines contain no network request, credential handling, or code-execution instruction.

View source
remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json:5694In the instructionsOpen original file
	},	"bangladesh": {		"stop": 0.897488737517874,		"anchor": [89.83003108960874, 23.720784795521794],		"border": [			[
remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json:599In the instructionsOpen original file
	[89.727, 23.883],	[89.787, 23.796],	[89.85600000000001, 23.748],	[89.919, 23.664],	[89.985, 23.643],	[90.144, 23.544],	[90.249, 23.463]]
Start here · InstructionsSKILL.md
remotion-best-practices
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 5 more sections are available in the original file.

File reference map

References: 40
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records124 files

Coverage and gaps

  • assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-captions/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-create/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-docs/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-interactivity/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-maps/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-markup/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-markup/remotion-maps/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-multimedia/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-render/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-saas/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-studio/assets/remotion-icon.pngVerified non-program resource · 1,286 B
  • remotion-upgrade/assets/remotion-icon.pngVerified non-program resource · 1,286 B
Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjsFull text included
  • remotion-maps/techniques/maptiler/scripts/prep-geo.mjsFull text included
  • remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjsFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjsFull text included
  • remotion-captions/REFERENCE.mdFull text included
  • remotion-create/REFERENCE.mdFull text included
  • remotion-docs/REFERENCE.mdFull text included
  • remotion-interactivity/REFERENCE.mdFull text included
  • remotion-maps/REFERENCE.mdFull text included
  • remotion-markup/REFERENCE.mdFull text included
  • remotion-multimedia/REFERENCE.mdFull text included
  • remotion-render/REFERENCE.mdFull text included
  • remotion-saas/REFERENCE.mdFull text included
  • remotion-studio/REFERENCE.mdFull text included
  • remotion-upgrade/REFERENCE.mdFull text included
  • remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsxFull text included
  • remotion-maps/techniques/cesium/assets/example-Root.tsxFull text included
  • remotion-maps/techniques/cesium/assets/flight-path.tsFull text included
  • remotion-maps/techniques/maptiler/assets/CountryLabel.tsxFull text included
  • remotion-maps/techniques/maptiler/assets/example-Root.tsxFull text included
  • remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.tsFull text included
  • remotion-maps/techniques/maptiler/assets/RiverReveal.tsxFull text included
  • remotion-maps/techniques/maptiler/assets/tokens.tsFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsxFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsxFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.tsFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsxFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsxFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.tsFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsxFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.tsFull text included
  • remotion-captions/display-captions.mdFull text included
  • remotion-captions/import-srt-captions.mdFull text included
  • remotion-captions/transcribe-captions.mdFull text included
  • remotion-create/tailwind.mdFull text included
  • remotion-create/video-layout.mdFull text included
  • remotion-maps/techniques/cesium/assets/cesium-path.jsonFull text included
  • remotion-maps/techniques/cesium/assets/city-path.jsonFull text included
  • remotion-maps/techniques/cesium/assets/sample-river.geojsonFull text included
  • remotion-maps/techniques/cesium/references/3d-data-sources.mdFull text included
  • remotion-maps/techniques/cesium/references/3d-flyover-architecture.mdFull text included
  • remotion-maps/techniques/cesium/references/3d-troubleshooting.mdFull text included
  • remotion-maps/techniques/cesium/TECHNIQUE.mdFull text included
  • remotion-maps/techniques/mapbox/references/render-stability.mdFull text included
  • remotion-maps/techniques/mapbox/TECHNIQUE.mdFull text included
  • remotion-maps/techniques/maplibre/references/render-stability.mdFull text included
  • remotion-maps/techniques/maplibre/TECHNIQUE.mdFull text included
  • remotion-maps/techniques/maptiler/references/map-data-sources.mdFull text included
  • remotion-maps/techniques/maptiler/references/map-explainer-architecture.mdFull text included
  • remotion-maps/techniques/maptiler/references/map-geo-prep.mdFull text included
  • remotion-maps/techniques/maptiler/references/render-stability.mdFull text included
  • remotion-maps/techniques/maptiler/TECHNIQUE.mdFull text included
  • remotion-maps/techniques/static-map/TECHNIQUE.mdFull text included
  • remotion-markup/3d.mdFull text included
  • remotion-markup/audio-visualization.mdFull text included
  • remotion-markup/audio.mdFull text included
  • remotion-markup/calculate-metadata.mdFull text included
  • remotion-markup/compositions.mdFull text included
  • remotion-markup/cropping.mdFull text included
  • remotion-markup/effects.mdFull text included
  • remotion-markup/embedding-videos.mdFull text included
  • remotion-markup/ffmpeg.mdFull text included
  • remotion-markup/gifs.mdFull text included
  • remotion-markup/google-fonts.mdFull text included
  • remotion-markup/html-in-canvas.mdFull text included
  • remotion-markup/images.mdFull text included
  • remotion-markup/local-fonts.mdFull text included
  • remotion-markup/lottie.mdFull text included
  • remotion-markup/measuring-dom-nodes.mdFull text included
  • remotion-markup/measuring-text.mdFull text included
  • remotion-markup/multi-scene-video.mdFull text included
  • remotion-markup/parameters.mdFull text included
  • remotion-markup/remotion-maps/REFERENCE.mdFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.jsonFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/city-path.jsonFull text included
  • remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojsonFull text included
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.mdFull text included
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.mdFull text included
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.mdFull text included
  • remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.mdFull text included
  • remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.mdFull text included
  • remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.mdFull text included
  • remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.mdFull text included
  • remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.mdFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.mdFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.mdFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.mdFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.mdFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.mdFull text included
  • remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.mdFull text included
  • remotion-markup/sequencing.mdFull text included
  • remotion-markup/sfx.mdFull text included
  • remotion-markup/silence-detection.mdFull text included
  • remotion-markup/text-highlights.mdFull text included
  • remotion-markup/timing.mdFull text included
  • remotion-markup/transitions.mdFull text included
  • remotion-markup/video-editing.mdFull text included
  • remotion-markup/voiceover.mdFull text included
  • remotion-multimedia/get-audio-duration.mdFull text included
  • remotion-multimedia/get-video-dimensions.mdFull text included
  • remotion-multimedia/get-video-duration.mdFull text included
  • remotion-render/transparent-videos.mdFull text included
  • remotion-saas/framework.mdFull text included
  • remotion-saas/player.mdFull text included
  • remotion-saas/rendering.mdFull text included
  • agents/openai.yamlFull text included
  • remotion-captions/agents/openai.yamlFull text included
  • remotion-create/agents/openai.yamlFull text included
  • remotion-docs/agents/openai.yamlFull text included
  • remotion-interactivity/agents/openai.yamlFull text included
  • remotion-maps/agents/openai.yamlFull text included
  • remotion-maps/techniques/maptiler/assets/sample-data/country-meta.jsonFull text included
  • remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.jsonFull text included
  • remotion-markup/agents/openai.yamlFull text included
  • remotion-markup/light-leaks.mdFull text included
  • remotion-markup/remotion-maps/agents/openai.yamlFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.jsonFull text included
  • remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.jsonFull text included
  • remotion-multimedia/agents/openai.yamlFull text included
  • remotion-render/agents/openai.yamlFull text included
  • remotion-saas/agents/openai.yamlFull text included
  • remotion-studio/agents/openai.yamlFull text included
  • remotion-upgrade/agents/openai.yamlFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • agents/openai.yamlSupporting file
  • remotion-captions/REFERENCE.mdSupporting file
  • remotion-captions/agents/openai.yamlSupporting file
  • remotion-captions/display-captions.mdSupporting file
  • remotion-captions/import-srt-captions.mdSupporting file
  • remotion-captions/transcribe-captions.mdSupporting file
  • remotion-create/REFERENCE.mdSupporting file
  • remotion-create/agents/openai.yamlSupporting file
  • remotion-create/tailwind.mdSupporting file
  • remotion-create/video-layout.mdSupporting file
  • remotion-docs/REFERENCE.mdSupporting file
  • remotion-docs/agents/openai.yamlSupporting file
  • remotion-interactivity/REFERENCE.mdSupporting file
  • remotion-interactivity/agents/openai.yamlSupporting file
  • remotion-maps/REFERENCE.mdSupporting file
  • remotion-maps/agents/openai.yamlSupporting file
  • remotion-maps/techniques/cesium/TECHNIQUE.mdSupporting file
  • remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsxScript
  • remotion-maps/techniques/cesium/assets/cesium-path.jsonSupporting file
  • remotion-maps/techniques/cesium/assets/city-path.jsonSupporting file
  • remotion-maps/techniques/cesium/assets/example-Root.tsxScript
  • remotion-maps/techniques/cesium/assets/flight-path.tsScript
  • remotion-maps/techniques/cesium/assets/sample-river.geojsonSupporting file
  • remotion-maps/techniques/cesium/references/3d-data-sources.mdSupporting file
  • remotion-maps/techniques/cesium/references/3d-flyover-architecture.mdSupporting file
  • remotion-maps/techniques/cesium/references/3d-troubleshooting.mdSupporting file
  • remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjsScript
  • remotion-maps/techniques/mapbox/TECHNIQUE.mdSupporting file
  • remotion-maps/techniques/mapbox/references/render-stability.mdSupporting file
  • remotion-maps/techniques/maplibre/TECHNIQUE.mdSupporting file
  • remotion-maps/techniques/maplibre/references/render-stability.mdSupporting file
  • remotion-maps/techniques/maptiler/TECHNIQUE.mdSupporting file
  • remotion-maps/techniques/maptiler/assets/CountryLabel.tsxScript
  • remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.tsScript
  • remotion-maps/techniques/maptiler/assets/RiverReveal.tsxScript
  • remotion-maps/techniques/maptiler/assets/example-Root.tsxScript
  • remotion-maps/techniques/maptiler/assets/sample-data/country-meta.jsonSupporting file
  • remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.jsonSupporting file
  • remotion-maps/techniques/maptiler/assets/tokens.tsScript
  • remotion-maps/techniques/maptiler/references/map-data-sources.mdSupporting file
  • remotion-maps/techniques/maptiler/references/map-explainer-architecture.mdSupporting file
  • remotion-maps/techniques/maptiler/references/map-geo-prep.mdSupporting file
  • remotion-maps/techniques/maptiler/references/render-stability.mdSupporting file
  • remotion-maps/techniques/maptiler/scripts/prep-geo.mjsScript
  • remotion-maps/techniques/static-map/TECHNIQUE.mdSupporting file
  • remotion-markup/3d.mdSupporting file
  • remotion-markup/REFERENCE.mdSupporting file
  • remotion-markup/agents/openai.yamlSupporting file
  • remotion-markup/audio-visualization.mdSupporting file
  • remotion-markup/audio.mdSupporting file
  • remotion-markup/calculate-metadata.mdSupporting file
  • remotion-markup/compositions.mdSupporting file
  • remotion-markup/cropping.mdSupporting file
  • remotion-markup/effects.mdSupporting file
  • remotion-markup/embedding-videos.mdSupporting file
  • remotion-markup/ffmpeg.mdSupporting file
  • remotion-markup/gifs.mdSupporting file
  • remotion-markup/google-fonts.mdSupporting file
  • remotion-markup/html-in-canvas.mdSupporting file
  • remotion-markup/images.mdSupporting file
  • remotion-markup/light-leaks.mdSupporting file
  • remotion-markup/local-fonts.mdSupporting file
  • remotion-markup/lottie.mdSupporting file
  • remotion-markup/measuring-dom-nodes.mdSupporting file
  • remotion-markup/measuring-text.mdSupporting file
  • remotion-markup/multi-scene-video.mdSupporting file
  • remotion-markup/parameters.mdSupporting file
  • remotion-markup/remotion-maps/REFERENCE.mdSupporting file
  • remotion-markup/remotion-maps/agents/openai.yamlSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.mdSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsxScript
  • remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.jsonSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/assets/city-path.jsonSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsxScript
  • remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.tsScript
  • remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojsonSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.mdSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.mdSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.mdSupporting file
  • remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjsScript
  • remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.mdSupporting file
  • remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsxScript
  • remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.tsScript
  • remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsxScript
  • remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsxScript
  • remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.jsonSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.jsonSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.tsScript
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.mdSupporting file
  • remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjsScript
  • remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.mdSupporting file
  • remotion-markup/sequencing.mdSupporting file
  • remotion-markup/sfx.mdSupporting file
  • remotion-markup/silence-detection.mdSupporting file
  • remotion-markup/text-highlights.mdSupporting file
  • remotion-markup/timing.mdSupporting file
  • remotion-markup/transitions.mdSupporting file
  • remotion-markup/video-editing.mdSupporting file
  • remotion-markup/voiceover.mdSupporting file
  • remotion-multimedia/REFERENCE.mdSupporting file
  • remotion-multimedia/agents/openai.yamlSupporting file
  • remotion-multimedia/get-audio-duration.mdSupporting file
  • remotion-multimedia/get-video-dimensions.mdSupporting file
  • remotion-multimedia/get-video-duration.mdSupporting file
  • remotion-render/REFERENCE.mdSupporting file
  • remotion-render/agents/openai.yamlSupporting file
  • remotion-render/transparent-videos.mdSupporting file
  • remotion-saas/REFERENCE.mdSupporting file
  • remotion-saas/agents/openai.yamlSupporting file
  • remotion-saas/framework.mdSupporting file
  • remotion-saas/player.mdSupporting file
  • remotion-saas/rendering.mdSupporting file
  • remotion-studio/REFERENCE.mdSupporting file
  • remotion-studio/agents/openai.yamlSupporting file
  • remotion-upgrade/REFERENCE.mdSupporting file
  • remotion-upgrade/agents/openai.yamlSupporting file

Operations mentioned in code and instructions

Install extra software packages
SKILL.md:39In the instructionsOpen original file
For advanced rendering beyond simple `npx remotion render`, see: [Rendering Best Practices](./remotion-render/REFERENCE.md)
remotion-captions/display-captions.md:20In the instructionsOpen original file
```bashnpx remotion add @remotion/captions```
remotion-captions/import-srt-captions.md:20In the instructionsOpen original file
```bashnpx remotion add @remotion/captions # If project uses npmbunx remotion add @remotion/captions # If project uses bun
Connect to websites
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:32In the codeOpen original file
const CESIUM_VER = '1.143';const CDN = `https://cesium.com/downloads/cesiumjs/releases/${CESIUM_VER}/Build/Cesium/`;const R = 6371;
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:179In the codeOpen original file
				throw new Error(					'Set REMOTION_MAPTILER_KEY. Create a key at https://cloud.maptiler.com/account/keys/',				);
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:184In the codeOpen original file
				throw new Error(					'Set REMOTION_GOOGLE_MAPS_API_KEY. Create a Map Tiles API key at https://developers.google.com/maps/documentation/tile/get-api-key',				);
Run commands
remotion-captions/display-captions.md:19In the instructionsOpen original file
```bashnpx remotion add @remotion/captions
remotion-captions/import-srt-captions.md:19In the instructionsOpen original file
```bashnpx remotion add @remotion/captions # If project uses npm
remotion-captions/transcribe-captions.md:17In the instructionsOpen original file
```bashnpx remotion add @remotion/install-whisper-cpp
Read files
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:16In the codeOpen original file
import {readFileSync, writeFileSync, mkdirSync} from 'fs';import {dirname, resolve} from 'path';
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:34In the codeOpen original file
const gorge = JSON.parse(readFileSync(IN, 'utf8')).features[0].geometry	.coordinates;
remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:14In the codeOpen original file
import {readFileSync, writeFileSync, mkdirSync} from 'fs';import {dirname, resolve} from 'path';
Change files
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:16In the codeOpen original file
import {readFileSync, writeFileSync, mkdirSync} from 'fs';import {dirname, resolve} from 'path';
remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:132In the codeOpen original file
mkdirSync(dirname(OUT), {recursive: true});writeFileSync(OUT, JSON.stringify(path));
remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:14In the codeOpen original file
import {readFileSync, writeFileSync, mkdirSync} from 'fs';import {dirname, resolve} from 'path';
Read keys or account settings
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:29In the codeOpen original file
const MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:30In the codeOpen original file
const MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;const CESIUM_VER = '1.143';
remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:182In the codeOpen original file
			}			if (mode === 'city' && !GOOGLE_MAPS_API_KEY) {				throw new Error(
Lines read
28,785
File checksum (to compare versions)
6617d042f89652f234ec83be4d532422e9ba3ff128e2c07a4d59d8942c2c78b9