Où le trouver
Chaque export écrit <name>.events.json à côté de la vidéo, dans ~/Movies/Kirocast/Exports : un MP4, un GIF, un export pour l’IA ou une prise en Mode conversation. Quand le projet a une transcription, <name>.transcript.json se trouve à côté, sur la même horloge.
Le fichier s’explique de lui-même : ses champs principaux précisent les unités et le sens de chaque type d’annotation, si bien qu’un modèle peut le lire seul.
Les champs principaux
{
"conventions": {
"coordinates": "normalized 0..1, origin top-left, relative to the captured screen area (before zoom/padding)",
"effects": "events on the \"effects\" track are editorial cues added by the author; …",
"time": "seconds in the exported video timeline"
},
"effectSemantics": { "focus": { … }, "mask": { … }, "tapTap": { … } },
"events": [ … ],
"format": "kirocast-events",
"generator": "Kirocast 1.0.0 (founder mode)",
"summary": {
"clicks": 9,
"effects": { "focus": 2, "mask": 1, "tapTap": 1 },
"fragments": 2,
"hasCameraOverlay": true,
"zoomSegments": 4
},
"version": 1,
"video": {
"duration": 42.6,
"file": "Export_1787674297.mp4",
"fps": 60,
"resolution": { "height": 1080, "width": 1920 }
}
} | Champ | Contenu |
|---|---|
format, version | Toujours kirocast-events, version 1. De nouveaux champs et types d’événements peuvent apparaître au sein d’une version ; un lecteur ignore simplement ceux qu’il ne connaît pas. |
video | Le nom du fichier exporté, sa durée en secondes, sa taille en pixels et sa fréquence d’images, lus dans le fichier lui-même. |
summary | Les totaux en un coup d’œil : clics, zooms, clips, chaque type d’effet, et la présence d’une bulle webcam. |
conventions | Les unités de temps et de position, en toutes lettres. |
effectSemantics | Pour chaque type d’effet : son intent, son attentionPriority, s’il désigne un point ou une zone (geometry), et une phrase qui en donne le sens (meaning). Voir Clics et annotations. |
events | Une seule liste, dans l’ordre chronologique. |
Temps et position
test exprimé en secondes depuis le début de la vidéo exportée, à la milliseconde près. Les coupes et les changements de vitesse sont déjà appliqués : un clic dans un passage coupé est retiré, et un clic dans un clip accéléré tombe là où il apparaît à l’écran.endTfigure sur les événements qui durent, comme un zoom ou une annotation. Les événements instantanés, comme un clic, n’ont quet.xetyvont de 0 à 1, à partir du coin supérieur gauche de la zone enregistrée, avant zoom et marges.x0.5,y0.5 désigne le centre de ce que vous avez enregistré, quel que soit le cadrage de l’export.rectest une zone dans les mêmes unités :xetypour son coin supérieur gauche, pluswidthetheight.
Quand deux événements partagent le même t, la cause vient d’abord : le clic, puis le zoom qu’il déclenche.
Tous les types d’événements
{ "endT": 18.4, "sourceEnd": 18.4, "sourceStart": 0, "speed": 1, "t": 0, "track": "clip", "type": "fragment" },
{ "button": "left", "clickCount": 1, "t": 2.4, "track": "cursor", "type": "click", "x": 0.42, "y": 0.31 },
{ "endT": 3.1, "factor": 2, "t": 2.4, "track": "zoom", "transition": "smooth", "type": "zoomIn" },
{ "t": 2.4, "track": "position", "type": "focusPoint", "x": 0.42, "y": 0.31 } | Événement | Ce qu’il indique | Champs |
|---|---|---|
clip · fragment | Un clip de la timeline montée, de t à endT | sourceStart et sourceEnd (en secondes dans l’enregistrement d’origine), speed |
cursor · click | Un clic de souris | x, y, button (left, right ou other), clickCount (2 pour un double-clic) |
zoom · zoomIn / zoomOut | L’image zoome ou revient en arrière, et atteint factor à endT | factor, transition (smooth ou linear) |
position · focusPoint | Le point sur lequel le zoom se centre | x, y |
effects · focus | Une annotation intelligente autour d’une zone | rect, target facultatif |
effects · tapTap | Un repère Tap Tap sur un point | x, y, target facultatif |
effects · mask | Un flou de confidentialité sur une zone | rect, blurRadius |
overlay · cameraBubble | L’emplacement de la bulle webcam, pour toute la vidéo | rect |
Les déplacements du pointeur entre les clics restent hors du fichier, ce qui le garde assez court pour être lu d’une traite.
Ces vidéos montrent toujours toute la zone enregistrée. Leur fichier d’événements liste quand même les zooms du projet, comme trace de ce que vous vouliez mettre en avant ; les images, elles, restent en vue complète, et les positions s’y appliquent directement.
Clics et annotations
Un clic est une action qui a eu lieu à l’écran. Un effet est un repère que vous avez ajouté pour guider le regard. Le fichier sépare les deux : les clics se trouvent sur la piste cursor, et chaque effet porte "interaction": false, pour qu’un lecteur ne prenne jamais une annotation pour un clic.
{ "attentionPriority": "high", "endT": 11.75, "intent": "highlight_target", "interaction": false,
"rect": { "height": 0.12, "width": 0.2, "x": 0.35, "y": 0.22 },
"t": 8.75, "target": { "kind": "button", "label": "Export" }, "track": "effects", "type": "focus" } | Effet | intent | attentionPriority | Sens |
|---|---|---|---|
focus | highlight_target | high | Regardez ce qui se trouve dans rect ; le repère est centré sur son milieu. |
tapTap | read_this | high | Lisez ceci, c’est important. Désigne le point x, y. |
mask | obscure_content | low | Contenu privé, flouté. Il ne désigne rien. |
target nomme ce que désigne une annotation : un kind (text, button, icon, image, region ou unknown) et, le plus souvent, un label. Il est renseigné quand Kirocast connaît la réponse : par l’accessibilité de macOS quand vous entourez un élément en Mode conversation, ou par l’agent qui a placé l’annotation. En son absence, la vidéo montre ce que couvre l’annotation.
Pour savoir comment un agent lit ce fichier avec la transcription et la vidéo, consultez Ce que reçoit votre agent.