---
name: data-taste
description: "Use the interaction data on public social-platform pages (views / likes / comments / shares) as a screen to pick the visual samples the public actually votes for, break out the aesthetic rules per section × platform, and bank them into a queryable library that serves as the reference anchor when making cover images, inline images and video thumbnails. Use when the user wants to improve aesthetics with data, learn from viral covers, do data-driven aesthetics, get past weak aesthetic judgement, or asks how to make a cover people actually click, or needs a data-backed reference before producing visual assets."
---

> Original skill · commissioned by the user · English edition, 2026-11-12

# data-taste (Data Aesthetics)

One line: **aesthetics are screened by data, not guessed.** High-interaction data is the screen, `taste` is the ruler; only the crossing of the two gives the reference for "what the public really buys *and* what really looks good".

## When to use

- "How do I improve the aesthetics of my covers / inline images", "show me how other people's viral work is made"
- Before making a cover / inline image / video thumbnail, when you need a data-backed reference anchor
- When you want to know "what style does the audience of a given section (tech / food / film & TV …) actually buy"

## When not to use

- Pure artistic taste / art appreciation (data is only a reference) → go straight to `taste`
- The actual production of covers / card images → `wechat-material` / `xiaohongshu-material`
- Acceptance before delivery → `visual-quality-gate`
- Topic / heat evidence → `topic-radar` (that is "topic evidence", this is "aesthetic evidence")

## Core principles

- **Data screen + artistic ruler**: views / likes / comments / shares are the screen for "does the public accept it", the five `taste` genes are the ruler for "does it look good". Screening without measuring teaches you "high likes but ugly"; measuring without screening drifts away from the public.
- **Per section, per platform**: aesthetics are not one single face. "Knowledge-section covers" and "food-section covers", Bilibili and Xiaohongshu, buy different things; they must be stored per section and per platform, never mixed into one stew.
- **Samples are assets**: every high-data cover is an "aesthetic sample" carrying data provenance; accumulated, they become a reference library that compounds.

## Workflow

### Step 1 · collect (script route, free, no login)

```bash
node <SKILL_DIR>/scripts/collect_bilibili.mjs --rid 0 --type all --top 30 --out <WORKSPACE>/raw.json
```

- `--rid`: section id (0 = whole site, knowledge = 36, tech = 188, food = 211, film & TV = 181, games = 4, music = 3, animation = 1 …)
- `--type`: `all` (ranking) / `origin` (original) / `rookie` (newcomers)
- Output JSON: `{pic, title, tname, owner, duration, stat:{view,like,reply,share,coin,favorite,danmaku}}`
- **Bilibili public API, no cookie, no signature**; verified returning HTTP 200 once.

### Step 2 · score

```bash
node <SKILL_DIR>/scripts/score.mjs --raw raw.json --out scored.json --min-view 100000
```

- Spread score = `log10(view)×50` (heat base) + `like/view×1000` (like-to-view rate) + `coin/view×1000` (coin-to-view rate) + `share/view×1000` (share-to-view rate) + `reply/view×500` (discussion)
- Output is sorted by spread score descending, with `like_rate / share_rate / coin_rate` attached for side-by-side comparison.
- `--min-view` filters out low-view items (so a small sample cannot inflate its interaction rates).

### Step 3 · analyze (two tracks: machine track + visual track)

**Machine track** (automatic, no image reading): download the covers, then use Pillow to quantify palette / light and dark / whitespace / contrast.

```bash
node <SKILL_DIR>/scripts/download_covers.mjs --scored scored.json --top 6 --dir covers/
python <SKILL_DIR>/scripts/analyze_palette.py covers/ --json palette.json
```

**Visual track** (read the image and break out the five genes): use the workstation's free vision models (`glm-5.3-flash-free` / `mimo-v2.6-flash-free` / `nemotron-3.5-super-vl-free`, all accept images, zero cost).

```bash
node <SKILL_DIR>/scripts/analyze_vision.mjs --image covers/01.jpg        # single image
node <SKILL_DIR>/scripts/analyze_vision_batch.mjs --dir covers/ --out vision-analysis.json  # batch
```

Breakout dimensions: palette / composition / type and copy / emotion / section conventions; finish each sample with one line of "rule you can copy".

**The machine track gives quantitative constraints (feeding the `visual-quality-gate` gate), the visual track gives semantic rules (actionable); only the two tracks merged make a complete breakdown.**

### Step 4 · library

Write "section × high-data samples + five-gene breakdown + shared rules" into `references/library/<platform>/<section>.md`; the format is in `references/library-template.md`.

### Step 5 · anchor

When making a cover / inline image:

1. Look up the high-data rules for the matching platform + section in `references/library/`
2. Translate those rules into a "reference anchor" and write it into S3 of `visual-quality-gate` (which rule you are copying)
3. After finishing, accept with `visual-quality-gate`, and compare the aesthetic-score gap between "made with the reference library" and "made without it"

## Hard rules

- **Data screen + artistic ruler, both are mandatory**: trusting data alone teaches you the lurid / clickbait; trusting `taste` alone drifts away from the public.
- **Per section, per platform — no stew.**
- **Samples must carry data provenance**: every sample must record `platform + section + views/likes/shares + collection date`; a sample without data provenance does not enter the library.
- **Downloaded covers are for local analysis only, never republished.**
- **Free first**: only public APIs and the browser route; any paid data service requires a budget report first.

## Red lines

- Never treat "high data" as "high aesthetics" directly — it must pass the five-`taste`-gene breakdown.
- Never summarize rules mixed across sections / platforms ("Bilibili knowledge-section covers" and "Xiaohongshu food covers" are two different things).
- The sample library lives only in `references/library/`; it must not be scattered in the workspace root.
- A cover image is a "sample", not an "asset"; it is never used directly as a deliverable.

## Known workstation limitations (verified once)

| Source | Status | Handling |
|---|---|---|
| Bilibili ranking/popular API | ✅ public without login, 200, cover + exact interaction counts | direct collection via the script route |
| Xiaohongshu | ✅ via the browser route without login: cover + like count (explore page) | `xhs_extract.js` (browser extraction) → `collect_xhs.mjs` (node downloads the cover + parses likes) |
| Douyin | ✅ via the browser route without login: cover + like count (recommend page) | `douyin_extract.js` (resolve the cover from the like count, dynamic DOM) → `collect_douyin.mjs` (node download) |
| Weibo hot search | ✅ no-login JSON, but text topics (content aesthetics) | T2 supplement |
| Zhihu | API 401; the hot-list public page is browser-readable (mostly text) | T2 supplement |
