from goanimate import CustomAction class TauntAction(CustomAction): def apply(self, character, timeline): character.set_expression("angry") character.play_gesture("finger_wag") timeline.add_keyframe(character, "hand_angle", 45, at=0.5)
project.add_scene(scene1) project.save_json("output/project.json") project.render_mp4("output/video.mp4") # if puppeteer available 4. Core Concepts 4.1 Project Top-level container. Manages scenes, assets, and output settings.
project.render_mp4("sales_pitch.mp4")
scene2 = Scene(8.0, "chart_background") chart = Prop("bar_chart_growth", position=(400,300)) scene2.add_prop(chart) scene2.add_dialog(jane, "We grew 20% this quarter.", start=0, end=3) scene2.camera.zoom(1.8, duration=2.0) project.add_scene(scene2)
from goanimate import Action Action.WAVE_HAND Action.NOD_HEAD Action.SHRUG Action.POINT_UP Action.JUMP Action.WALK_TO(x, y, duration) scene.add_dialog( character=bob, text="Hello world!", start=1.0, end=3.5, tts_voice="en-US_JamesV3", # IBM Watson / Azure style auto_lipsync=True ) If auto_lipsync=True , the wrapper generates mouth shape keyframes based on phonemes. 5. Advanced Usage 5.1 Camera Controls camera = scene.camera camera.pan_to(x=200, y=300, duration=2.0) camera.zoom(level=1.5, duration=1.0) camera.shake(intensity=0.2, duration=0.5) 5.2 Props and Assets from goanimate import Prop laptop = Prop( asset_id="laptop_01", position=(500, 400), layer="foreground"|"midground"|"background" ) scene.add_prop(laptop) scene.animate_prop(laptop, "rotate", angle=45, duration=1.0) 5.3 Conditional Logic & Variables Use variable substitution to create dynamic videos:
Goanimate Wrapper 2.0.0 Apr 2026
from goanimate import CustomAction class TauntAction(CustomAction): def apply(self, character, timeline): character.set_expression("angry") character.play_gesture("finger_wag") timeline.add_keyframe(character, "hand_angle", 45, at=0.5)
project.add_scene(scene1) project.save_json("output/project.json") project.render_mp4("output/video.mp4") # if puppeteer available 4. Core Concepts 4.1 Project Top-level container. Manages scenes, assets, and output settings. goanimate wrapper 2.0.0
project.render_mp4("sales_pitch.mp4")
scene2 = Scene(8.0, "chart_background") chart = Prop("bar_chart_growth", position=(400,300)) scene2.add_prop(chart) scene2.add_dialog(jane, "We grew 20% this quarter.", start=0, end=3) scene2.camera.zoom(1.8, duration=2.0) project.add_scene(scene2) project
from goanimate import Action Action.WAVE_HAND Action.NOD_HEAD Action.SHRUG Action.POINT_UP Action.JUMP Action.WALK_TO(x, y, duration) scene.add_dialog( character=bob, text="Hello world!", start=1.0, end=3.5, tts_voice="en-US_JamesV3", # IBM Watson / Azure style auto_lipsync=True ) If auto_lipsync=True , the wrapper generates mouth shape keyframes based on phonemes. 5. Advanced Usage 5.1 Camera Controls camera = scene.camera camera.pan_to(x=200, y=300, duration=2.0) camera.zoom(level=1.5, duration=1.0) camera.shake(intensity=0.2, duration=0.5) 5.2 Props and Assets from goanimate import Prop laptop = Prop( asset_id="laptop_01", position=(500, 400), layer="foreground"|"midground"|"background" ) scene.add_prop(laptop) scene.animate_prop(laptop, "rotate", angle=45, duration=1.0) 5.3 Conditional Logic & Variables Use variable substitution to create dynamic videos: project.render_mp4("sales_pitch.mp4")
scene2 = Scene(8.0