LiveCanvas · Live Canvas
Turn a user's one-sentence brief into an evidence-based Live Photo motion card that is readable when static and whose motion clearly explains the content. Formerly named LiveChart and now named LiveCanvas (Live Canvas), it covers charts, images, and scene-based storytelling. By default, it proactively designs topic-relevant imagery/icons and scene actions; charts are only an optional form of expression. Chinese, Remotion, 1080×1440, 30 fps, approximately 3 seconds, and no audio are the defaults. These are starting points and may be adjusted to suit the content; the 3-second duration is not a claimed Apple format limitation.
First define the content, then design the motion
- Extract the subject, metric, time range, comparison relationship, and intended use from the request. Specific requirements take priority; do not treat examples supplied by the user as fixed templates.
- Search for and verify the data, and read Data & Methodology. Save the original evidence, facts, or structured data before writing the title, numbers, and annotations. For subjects without a time series, use a fact card, process, or scene-based explanation; do not fabricate data merely to create a chart.
- Write a brief production plan: a one-sentence conclusion, the fact/data methodology, the cover's information hierarchy, a storyboard timeline, and an asset plan. Choose an expression suited to the subject rather than defaulting to a line chart with numbers. Make design judgments directly; ask a question only when missing information would materially change the answer.
- Produce it according to Cover & Motion. Apply the animate principles from Emil Kowalski: purposeful, restrained, continuous motion and a clear rhythm. The user has specified Remotion, so do not execute the upstream tool-substitution step or mechanically apply interactive component duration limits to an explanatory video.
Visual expression
- By default, place objects from the subject in the frame: product PNGs, coffee cups, cars, trains, medals, city photos, weather emojis, and so on. Select a cohesive set of assets relevant to the content rather than decorating the corner of a chart.
- Design each object's entrance, movement, arrangement, replacement, or state change to explain the content. For example, a train can move past year markers, a coffee cup can bring out a store card, and a city scene can change with the seasons.
- Combine scenes, image comparisons, icon arrays, timelines, process demonstrations, key text, and necessary charts according to the subject. Use a chart on its own only when it is genuinely the clearest option or the user explicitly requests it.
- When using images or emojis, read Images & Icons, which is responsible for finding assets, checking usability, and adding them to the project; there is no need to ask the user to provide assets before starting.
Search defaults
- “Past 3 years”: a rolling three-year period ending on the latest reliable completed observation date; state the actual start and end dates, and do not default to three year-end values. For monthly charts, use completed month-end observations; note the latest incomplete month separately.
- “Full-year temperature” with no year specified: use the most recent complete calendar year and default to the monthly average temperature; explain this choice at the beginning. If the intent is clearly long-term climate, use climate averages with an explicit baseline period.
- For cross-company comparisons, align observation dates, metrics, and currencies, or explicitly use a same-base index while retaining the original absolute values.
- Allow increases, decreases, flat periods, and seasonal cycles. Do not plot a decline as growth merely because the user asked for a “growth curve.”
- Interpret dates in the user's time zone, and do not hard-code “this year” based on the machine date.
Production and packaging
Read
Runtime & Delivery and
Direct Delivery. Asset paths are relative to this skill directory; refer to that absolute path as
.
- Copy as the starting point for the rendering project into the current directory, and use the included lockfile with . Its line chart is only an example, and the composition should be rewritten according to the storyboard rather than treated as the default finished layout. Do not generate output or install dependencies inside the installed skill.
- The sample contains synthetic data for testing only. For a production piece, replace the data and copy, and complete fact-checking before removing the sample marker.
- For time series, use to check dates, source references, coverage, and ranges. For other content, use a matching factual/comparison structure according to Data & Methodology; do not force it into a date series. Passing validation does not mean the source facts have been verified.
- Drive every animation with ; CSS animation, wall-clock time, unseeded randomness, and built-in animations from web image libraries are prohibited.
- Integrate images, emojis, text, scenes, and charts into a single storyboard, preserving traceable facts, a static cover, deterministic rendering, and a validation workflow.
- Export from a complete hold frame of the same composition, and record . The cover image must appear within the animation, and still-image-time must point to the same moment.
- Use
scripts/pair_live_photo.swift
to write the silent H.264 video and JPEG cover as paired resources. This is an intermediate step, not completed delivery; transcode other inputs first, and do not silently discard the user's audio track.
- After packaging, do not run a standard transcode on the paired MOV again, because doing so may lose its metadata track.
- Use
scripts/package_live_photo.py
to generate a single, clearly named package. Label it as a Live Photo resource package; do not promise that the iPhone Files app can preview it directly. Do not automatically open or import it in the Photos app, and do not modify the photo library. Do not stop at a JPG + MOV paired resource.
Verification and completion criteria
Check facts and assets first, then preview the cover and video: spot-check the beginning, the midpoint of the main action, transitions, data extrema (if any), and the cover hold frame; inspect image loading, emoji glyphs, transparent edges, Chinese fonts, label occlusion, value synchronization, units, dates, and cropping. Confirm that the motion explains the subject rather than merely showing changing numbers and bars. Do not smooth real curves in a way that introduces artificial peaks or troughs; break the line at missing observations.
Record each status separately, and do not treat success in one as proof of the next:
- Data and source verification; machine validation is only one part of it.
- The cover and MP4 have been rendered, assets and primary motion are visible, and metadata and frame checks have passed.
- The Live Photo identifier matches, and the timed metadata is positioned correctly.
- loads successfully on the local machine, or the specific failure is documented.
- The package is complete, and the paired resource hashes match.
- Gallery import, device playback, third-party platform uploads, and lock-screen compatibility are optional. Perform and document them only when the user explicitly requests them; they are not prerequisites for file delivery.
Without macOS, complete the data, cover, project, and video, retain the packaging commands, and clearly state that the Live Photo was not generated. After local loading and package-integrity validation, the
resource package can be delivered; this does not prove that the phone can preview, save, or play it.
Delivery
Create a separate directory for each subject and provide a directly viewable preview and a
Live Photo resource package, along with
. Also retain
, the original evidence,
, the editable Remotion project with local assets, the asset manifest
(when assets are used),
,
, the internal
paired resources and manifest, and
. The archive is for transmission only and is not a directly recognizable Live Photo.
Prioritize showing a viewable cover/dynamic preview, then attach the
resource package link, the data cutoff date, and validation status. If the user requests direct preview on a phone, verify the receiving path; do not claim that the request has been met merely because the file package was generated or local loading succeeded. If the transfer interface cannot send a directory package, attach
and state that extracting it yields the resource package, which must still be read by an app that supports Live Photo. LivePhotosKit web previewing and saving as a native Live Photo are two separate capabilities; do not promise capabilities that have not been implemented. Label the cover and MP4 only as previews; if the chat interface cannot display Apple Live Photos natively, explain briefly. Do not interpret “direct delivery of a Live Photo” as importing into the photo library, do not request photo-library permissions, and do not automatically open a
that could trigger an import. Do not publish to social platforms unless requested.
Example triggers
-
“Use LiveCanvas to visualize Xiaomi's market capitalization over the past three years.”
-
“Turn Apple's and Xiaomi's market capitalizations over the past three years into two Live Photos with a consistent visual style.”
-
“Turn last year's full-year temperature in Beijing into a Live Photo, and design the cover as well.”
-
“Turn this dataset into an animated infographic and export it as an Apple Live Photo.”
-
“Use a coffee cup PNG and store cards to create an expansion story for Luckin Coffee and Starbucks.”
-
“Use a train, year markers, and mileage figures to create a Live Photo motion graphic about China's high-speed rail network.”