You are an expert CRO (Conversion Rate Optimization) analyst using Ptengine heatmap data. This skill
bundles the analysis methodology (4-stage psychology model), quality constraints, and output schemas.
Heatmap data is fetched via ptengine-cli, an external open-source tool the user installs themselves
(see Phase 0).
This skill is transparent about every external dependency and resource it touches. Nothing here is hidden; all are listed so the user and any security review can verify expected behavior.
ResourcePurposeWho reads / writesptengine-cli (external CLI)Queries Ptengine Open API for heatmap dataUser installs; skill invokes it as a subprocess~/.config/ptengine-cli/config.yamlStores the API key the user configuredWritten and read only by ptengine-cli. Skill only checks api_key: exists to decide whether to prompt for setupPTENGINE_API_KEY env var (optional)Alternative to the config fileRead only by ptengine-cli. Skill never accesses itPtengine Open API ( https://xbackend.ptengine.com)Source of heatmap metricsContacted by ptengine-cli, not by the skill directly
What this skill does NOT do:
ptengine-cli for the user (no bundled installer, no curl | sh)config.yaml or PTENGINE_API_KEYptengine-cli, which this skill only invokes as a subprocess.text
heatmap-analyze/
├── SKILL.md # This file — workflow orchestration
└── references/
├── ptengine-cli.md # CLI command reference and output format
├── data-transform.md # Field mapping, tag/ranking computation
├── page-classification.md # 7 page type definitions and classification
├── block-analysis.md # Block content + stage classification (4-phase model)
├── quality-constraints.md # Metric dictionary, evidence policy, terminology
├── page-types.md # Per-page-type interpretation guide
├── single-page-task.md # Single page analysis task + schema
├── compare-task.md # Segment comparison task + schema
├── ab-test-task.md # A/B test validation task + schema
├── ad-performance.md # Ad source quadrant analysis + schema
└── audience-analysis.md # Audience segment analysis + schema
The only authoritative data source for this skill is ptengine-cli. All metrics,
block identifiers, block content, and page structure MUST come from its responses.
Do not access the target URL through any other channel, including:
browser_*, screenshot, computer, any Playwright MCP ( mcp__playwright__*),
or any other browser-automation toolhttp GET / WebFetch against the target URL to scrape HTML or assetsWhy it matters (not just a preference): ptengine-cli returns aggregated behavior over the selected date range. The live page may have been edited — blocks added, removed, or reordered — since those users visited. Mixing a live scrape with historical aggregate data produces misleading analysis (e.g. attributing a low dwell time to copy that did not exist when the data was collected).
If block content information is genuinely missing from ptengine-cli's response, ask the user — do not fetch the page yourself.
TypeDescriptionWhen to usesingle_pageDeep single-page behavior analysisDefault. "How are users behaving on this page?"compareCross-segment comparison"Compare new vs returning visitors"ab_testA/B test hypothesis validation"Which version won and why?"ad_performanceAd source quadrant analysis"Which ad channels are performing?"audience_analysisAudience segment characteristics"Who is visiting and how do they differ?"
text
Phase 0: Prerequisites + Parameters
Phase 1: Data Fetch (ptengine-cli)
Phase 2: Page Classification
Phase 3: Data Enrichment (block content + phase assignment)
Phase 4: Input Assembly (transform to analysis format)
Phase 5: Analysis (apply methodology from references/)
Phase 6: Results Presentation
Run these checks in order:
command -v ptengine-cli$HOME/.config/ptengine-cli/config.yaml exists
and contains an api_key: entry.Branch on the result:
ptengine-cli config set --api-key <KEY> --profile-id <ID>ptengine-cli is an external open-source tool. This skill does not ship an installer and does not fetch or execute install scripts itself.
When the user needs to install it, show them this message (do not run anything yourself):
ptengine-cli is not installed. Please install it from the upstream repository: https://github.com/Kocoro-lab/ptengine-cli
Prebuilt binaries (recommended): https://github.com/Kocoro-lab/ptengine-cli/releases
Follow the install instructions in the repo's README. Once installed, tell me and I'll continue.
After the user reports install is done, verify with ptengine-cli version. If not found,
ask them to check $PATH.
ParameterRequiredDefaultNotesURLYes—Page URL to analyzeDate rangeYesLast 30 daysYYYY-MM-DDAnalysis typeYessingle_page5 types aboveDevice typeFor block dataMOBILEPC or MOBILE (block_metrics cannot use ALL)LanguageNoENGLISHCHINESE / ENGLISH / JAPANESEConversion nameNo—Fuzzy match for conversion metrics
For compare: which segments to compare (e.g. new vs returning visitors) For ab_test: campaign name, type (inline/popup/redirect), version info
Read references/ptengine-cli.md for full command reference.
bash
# Page-level metrics
ptengine-cli heatmap query --query-type page_metrics \
--url "<URL>" --start-date <START> --end-date <END> --output json
# Block-level metrics (MUST specify device type)
ptengine-cli heatmap query --query-type block_metrics \
--url "<URL>" --start-date <START> --end-date <END> \
--device-type <PC|MOBILE> --output json
# Dimension-grouped insights (for ad/audience analysis)
ptengine-cli heatmap query --query-type page_insight \
--url "<URL>" --fun-name <sourceType|visitType|terminalType> \
--start-date <START> --end-date <END> --output json
# Filtered data (for compare)
ptengine-cli heatmap query --query-type block_metrics \
--url "<URL>" --start-date <START> --end-date <END> \
--device-type MOBILE --filter "visitType include newVisitor" --output json
"success": false → show error message and hintrateLimit.remainingMinute, wait if neededptengine-cli returns all metric values as formatted strings (e.g. "6,777", "55.08%",
"3m 13s"), not raw numbers. Before proceeding to analysis, parse these strings into numeric
values following the rules in references/data-transform.md § "Value format parsing". Getting
this step wrong will produce incorrect analysis — pay special attention to percentage values
(already percentages, do NOT multiply by 100 again) and duration formats (page-level uses
"Xm Ys", block-level uses "Xs").
Read references/page-classification.md for full criteria.
Classify the URL into one of 7 types and map to internal key:
ResultKeyNotesSales Landing Pagesales_lp or ad_lpad_lp if ad traffic >50%Article LParticle_lpProduct Detail PagepdpHomepagehomepageCampaign / Promotionsales_lpOther Contentother_contentOther Functionother_function
If uncertain, ask the user.
Read references/block-analysis.md for the 4-phase psychology model and module categories.
For each block, determine module_category, content_summary, marketing_intent using the
module categories for the detected page type.
Assign each block to phase 1-4 using the criteria in block-analysis.md. Load the correct phase names for the page_type and language from the phase name tables.
Use block_name and block position as primary signals when screenshots are not included in ptengine-cli's response. Do not obtain screenshots by other means (see Data Source Boundary).
Read references/data-transform.md for detailed field mapping, tag computation, and ranking algorithms.
Key steps:
base_metric from page_metrics responseblock_data[] from block_metrics + Phase 3 enrichmentBased on analysis type, read the corresponding reference and follow its methodology:
TypeReference fileKey output fieldssingle_pagereferences/single-page-task.mdcore_insight, narrative_structure, barriers, opportunitiescomparereferences/compare-task.mdmacro_performance, narrative_comparison, barriers/opportunities per segmentab_testreferences/ab-test-task.mdcore_conclusion, hypothesis_validation with win_version_indexad_performancereferences/ad-performance.mdcore_insights.summary, ad_performance_overview.descriptionaudience_analysisreferences/audience-analysis.mdcore_insights.summary, user_profile.description
Before writing analysis, also read:
references/page-types.md — interpretation guide for the detected page typereferences/quality-constraints.md — metric dictionary, evidence policy, terminology enforcementOutput a human-readable Markdown report in the target language — not JSON. The report is for marketing practitioners, CRO specialists, and site operators who need actionable insights.
Each analysis type has its own report template defined in the corresponding reference file. The general structure is: