Living tutorials
Tutorials go stale the week after you record them: a button gets renamed, a menu moves. A living tutorial re-performs your recording against your site and shows you what changed. If you approve it, the new version replaces the old one on the same link and in every embed.
Turning it on
Open a ready tutorial recording and choose Keep up to date. You pick:
- An origin your workspace has verified, the same rule the Repro Agent uses. Often that is a staging site.
- How often: weekly, daily, or only when your deploy pipeline asks.
- What counts as a change: low, normal or high. On normal, a renamed button counts and a clock, a date or a counter does not. On high, any wording change and any number that changed count. On low, only a few lines changing at once. You can add your own text to ignore, such as a greeting with a name in it.
- Whether viewers see a note that the tutorial may be out of date when a refresh cannot finish the steps. Off unless you turn it on.
The first refresh starts at once and records what the screens look like today. Every later refresh is compared with that.
What a refresh does
The agent re-performs the steps from your original recording, in a browser on our side, and keeps a screenshot and the visible text after every step. Then it compares each step with the current version. One of four things happens:
- Up to date. Nothing meaningful changed. The new take is deleted and the tutorial says when it was last checked.
- Changed. You get an email (and a Slack message, if you chose a channel) and a review: each changed step, the old screen next to the new one, the words that went and the words that came, and a short changelog you can edit.
- Failed. The steps could not be finished, for example because a button is gone. Nothing is published, and you hear about it once, not every week it stays that way.
- Blocked. The flow now starts behind a sign-in page. The agent never types a password, so it stops there and tells you.
Reviewing and publishing
Nothing goes live until a workspace admin approves it. Approving turns the take into a new version: it is analysed as a tutorial (counted as one analysis), its narration is regenerated if the original had one, and once it is ready your share link, your embeds and oEmbed all show it. Nobody changes a link. Every version is labelled as performed by the agent, on every plan, wherever it is shown. You can restore an earlier version from the tutorial’s page at any time.
Refreshing after a deploy
Each tutorial has its own webhook and secret. Call it at the end of a deploy and the tutorial is re-performed against the new release. The request is signed: an HMAC-SHA256 of <unix seconds>.<body> with the secret, sent as X-SceneRecap-Signature: sha256=<hex> with the seconds in X-SceneRecap-Timestamp. A request more than five minutes old is refused. Send an Idempotency-Key (the commit works well) and a retried delivery is the same refresh. The tutorial’s page has a GitHub Actions step and a shell snippet ready to paste.
TS=$(date +%s)
BODY='{"ref":"'"$REF"'"}'
SIG=$(printf '%s.%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SCENERECAP_TUTORIAL_SECRET" | sed 's/^.* //')
curl -fsS -X POST "https://api.scenerecap.com/v1/living-tutorials/<id>/refresh" \
-H "content-type: application/json" \
-H "x-scenerecap-timestamp: $TS" \
-H "x-scenerecap-signature: sha256=$SIG" \
-H "idempotency-key: $REF" \
-d "$BODY"What it is not
- It re-performs the steps you recorded. It does not write new tutorials or add steps your recording never had.
- It drives a browser on our infrastructure against the origin you chose, not your users’ machines.
- It never signs in. Pages behind a sign-in need a signed-in test session, which you export from your own browser and attach; we never take a password.
- It compares screens and wording. A change that looks and reads the same, such as a different result from the same button, is not something it can see.
Plans and cost
Each refresh counts against a monthly allowance: Pro 30, Team 80 per seat and Enterprise 1000 a month. A workspace past its allowance has its scheduled refreshes paused until the month turns, rather than failing. Approving a new version counts as one analysis.