What the channel is actually doing, measured so the comparisons hold: equal age, medians rather than averages, and one variable under test at a time.
Open TikTok, read each post's counters, type them here. Every save is a timestamped snapshot, not an overwrite — that is what lets the board compare posts at equal age instead of comparing a post from today against one from last week.
| Post | Views | Likes | Comments | Shares | Saves | Link | |
|---|---|---|---|---|---|---|---|
| p002blink | |||||||
| p003ears | |||||||
| p004grid | |||||||
| p001pauselock |
Blanks are skipped, so you can log views only and fill the rest from the TikTok Studio CSV later.
Latest is the raw counter at whatever age each post happens to be — useful, but not a fair comparison. The column beside it is: views interpolated to V1, the oldest checkpoint most posts have reached, so nothing is rewarded for simply being older. A post at 3× the account median is flagged an outlier: that is the one to clone, not the one with the most raw views.
| Post | Format | Skin | Age | Latest | V1 | × median | Eng | Comment | Avg watch |
|---|---|---|---|---|---|---|---|---|---|
| p002episodes_blink_002 | blink | heat | 0.6h | 9 | — | —× | —% | —% | —s |
| p003episodes_ears_002 | ears | heat | 0.6h | 25 | — | —× | —% | —% | —s |
| p004episodes_grid_001 | grid | heat | 0.6h | 13 | — | —× | —% | —% | —s |
| p001episodes_geo_002 | pauselock | heat | 0.8h | 92 | — | —× | —% | —% | —s |
Only one test runs at a time and everything in its hold row stays frozen while it does. Running four variables across twenty posts on a lottery-shaped account does not give you four answers, it gives you noise wearing four hats.
Next post should be pauselock · 16 posts to fill this test.
Hold fixed skin=heat · cover_variant=0 · post_hour=evening
Decision rule Kill the bottom two mechanics, then run E2 on the survivors.
Waiting — 11 posts of runway once it opens. Do not vary this yet.
Hold fixed format=winner of E1 · cover_variant=0
Decision rule Sticker reads brightest in-feed; if it does not beat heat by 1.5x, stop rendering three skins.
Waiting — 11 posts of runway once it opens. Do not vary this yet.
Hold fixed format=winner of E1 · skin=winner of E2
Decision rule If flat, drop to one cover variant and stop generating three.
Waiting — 16 posts of runway once it opens. Do not vary this yet.
Hold fixed format=winner of E1 · skin=winner of E2
Decision rule Rewrite every live script to the winning hook shape.
Waiting — 16 posts of runway once it opens. Do not vary this yet.
Hold fixed format=winner of E1
Decision rule Retune the lint runtime band to the winner. Never go under 60s (Creator Rewards floor).
Each bar is the median V1 for posts carrying that value. A verdict of signal needs five posts in the thinnest arm and a 1.5× gap; lean is a hint you may not act on yet; insufficient means the numbers are real but the conclusion is not.
Nothing measurable yet. This fills in once posts have views logged.
Fastest daily loop. Saves a timestamped snapshot through the same queue the Generate buttons use, so nothing needs to be installed on your phone.
Signed into TikTok on the desktop, open your profile, scroll to the bottom and run pull_stats.js. It captures views for every tile at once and copies JSON to the clipboard.
python3 ~/quizforge/tracker.py ingest -
TikTok Studio → Analytics → Content → Download data. This is the only door that carries average watch time, completion and follows, which are the numbers that actually explain a flop.
python3 ~/quizforge/tracker.py csv ~/Downloads/export.csv