Token导航 LogoToken导航TokenDH.com
AI 工具需要联网github未标认证来源可访问clear审计提醒

narrative-text-visualization叙述性文本可视化

Agent Skill

用于辅助数据整理、表格处理、CSV/Excel 分析、指标计算和图表准备。它适合让 Agent 清洗字段、汇总数据、发现异常、生成统计口径或把分析结果转成可读说明。使用时需要确认数据来源、字段含义和时间范围,避免把样本数据当全量事实;涉及敏感数据、导出文件或批量写回时,应先确认权限和脱敏边界。

总安装

17,172

周安装

688

GitHub Stars

269

下载量

5,559
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:narrative-text-visualization(叙述性文本可视化)
来源仓库:https://github.com/antvis/chart-visualization-skills
仓库路径:skills/narrative-text-visualization
安装命令:
npx skills add https://github.com/antvis/chart-visualization-skills --skill narrative-text-visualization
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/antvis/chart-visualization-skills --skill narrative-text-visualization

简介

叙述性文本可视化用于辅助数据整理、表格处理、CSV/Excel 分析、指标计算和图表准备。

  • 它适合清洗字段、汇总数据、发现异常、生成统计口径或把分析结果转成可读说明。
  • 使用时需要确认数据来源、字段含义和时间范围,避免把样本数据当全量事实。
  • 涉及敏感数据、导出文件或批量写回时,应先确认权限和脱敏边界。
  • narrative-text-visualization 属于AI 工具类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Narrative Text Visualization Skill

This skill provides a workflow for transforming data into structured narrative text visualizations using T8 Syntax - a declarative Markdown-like language for creating data narratives with semantic entity annotations.

What is T8

T8 is a text visualization solution under the AntV technology stack designed specifically for insight-based narrative text display. Instead of manually constructing DOM elements, you write simple, human-readable syntax that describes your data narrative.

Key Features:

  • LLM-Friendly: The syntax is intuitive and can be easily generated by AI models
  • Declarative & Readable: Write what you want, not how to build it
  • Framework Agnostic: Works with React, Vue, or vanilla JavaScript
  • Standardized Styling: Professional appearance by default
  • Built-in Data Visualizations: Mini charts (pie, line) are native to the syntax
  • Lightweight: Less than 20KB before gzip

Workflow

To generate narrative text visualizations, follow these steps:

1. Understand the Requirements

Analyze the user's request to determine:

  • The topic or data to be analyzed
  • The type of narrative needed (report, summary, article)
  • The key insights to highlight
  • Any specific data sources or metrics

2. Generate T8 Syntax Content

Create narrative text using T8 Syntax following the specification below. The content must include:

  • Proper document structure (headings, paragraphs, lists)
  • Entity annotations for all meaningful data points
  • Appropriate metadata for entities (origin, assessment, etc.)

3. Generate Frontend Code

Create HTML, React, or Vue code to render the T8 content based on user's preferred framework.

4. Validate Output

Ensure:

  • All data is from authentic sources
  • Minimum content length (800 words or equivalent)
  • Proper entity annotations throughout
  • Clear structure and logical flow

T8 Syntax Specification

T8 Syntax is a Markdown-like language for creating narrative text with semantic entity annotations. It makes data analysis reports more expressive and visually appealing.

Document Structure

Headings (6 levels)

Use standard Markdown heading syntax:

# Level 1 Heading (Main Title)
## Level 2 Heading (Section)
### Level 3 Heading (Subsection)
#### Level 4 Heading
##### Level 5 Heading
###### Level 6 Heading

Rules:

  • Each heading must be on its own line
  • Add one space after the # symbols
  • Headings create visual hierarchy in the rendered output

Paragraphs

Regular text paragraphs are separated by blank lines:

This is the first paragraph with some content.

This is the second paragraph, separated by a blank line.

Rules:

  • Paragraphs can span multiple lines
  • Use blank lines to separate distinct paragraphs
  • Text within a paragraph flows naturally

Lists

T8 Syntax supports both unordered and ordered lists.

Unordered Lists:

- First item
- Second item
- Third item

Ordered Lists:

1. First step
2. Second step
3. Third step

Rules:

  • Each list item must be on its own line
  • Add one space after the bullet marker (-, *) or number
  • Lists can contain entities and text formatting

Text Formatting

T8 Syntax supports inline text formatting using Markdown syntax:

Bold Text: This is **bold text** that stands out.

Italic Text: This is *italic text* for emphasis.

Underline Text: This is __underlined text__ for importance.

Links: Visit [our website](https://example.com) for more information.

Rules:

  • Formatting markers must be balanced (opening and closing)
  • Formatting can be combined with entities
  • Links use [text](URL) syntax where URL starts with http://, https://, or /

Entity Annotation Syntax

The core feature of T8 Syntax is entity annotation - marking specific data points with semantic meaning and metadata.

Basic Entity Syntax

[displayText](entityType)
  • displayText: The text shown to readers
  • entityType: The semantic type of this entity

Example:

The [sales revenue](metric_name) reached [¥1.5 million](metric_value) this quarter.

Entity with Metadata

[displayText](entityType, key1=value1, key2=value2, key3="string value")

Metadata Rules:

  • Separate multiple metadata fields with commas
  • Numbers and booleans: write directly (e.g., origin=1500000, active=true)
  • Strings: wrap in double quotes (e.g., unit="元", region="Asia")

Example:

Revenue grew by [15.3%](ratio_value, origin=0.153, assessment="positive") compared to last year.

Entity Types Reference

Use these entity types to annotate different kinds of data:

Entity TypeDescriptionWhen to UseExamples
metric_nameName of a metric or KPIWhen mentioning what you're measuring"revenue", "user count", "market share"
metric_valuePrimary metric valueThe main number/value being reported"¥1.5 million", "50,000 users", "250 units"
other_metric_valueSecondary or supporting metric valueAdditional metrics that provide context"average order value: $120"
delta_valueAbsolute change/differenceWhen showing numeric change between periods"+1,200 units", "-$50K", "increased by 500"
ratio_valuePercentage change/rateWhen showing percentage change"+15.3%", "-5.2%", "grew 23%"
contribute_ratioContribution percentageWhen showing what % something contributes"accounts for 45%", "represents 30% of total"
trend_descTrend descriptionDescribing direction/pattern of change"steadily rising", "declining trend", "stable"
dim_valueDimensional value/categoryGeographic, categorical, or segmentation data"North America", "Enterprise segment", "Q3"
time_descTime period or timestampWhen specifying when something occurred"Q3 2024", "January-March", "fiscal year 2023"
proportionProportion or ratioWhen expressing parts of a whole"3 out of 5", "60% of customers"
rankRanking or positionWhen indicating order or position in a list"ranked 1st", "top 3", "5th place"
differenceComparative differenceWhen highlighting difference between two items"difference of $50K", "gap of 200 units"
anomalyUnusual or unexpected valueWhen pointing out outliers or anomalies"unusual spike", "unexpected drop"
associationRelationship or correlationWhen describing connections between metrics"strongly correlated", "linked to", "related"
distributionData distribution patternWhen describing how data is spread"evenly distributed", "concentrated in", "spread across"
seasonalitySeasonal pattern or trendWhen describing recurring seasonal patterns"seasonal peak", "holiday period", "Q4 surge"

Common Metadata Fields

Add these optional fields to provide richer data context:

origin (number)

The raw numerical value behind the displayed text.

Examples:

  • [¥1.5M](metric_value, origin=1500000)
  • [23.7%](ratio_value, origin=0.237)
  • [5.2K users](metric_value, origin=5200)
  • [3 out of 4](proportion, origin=0.75)

Why use it: Enables data visualization, sorting, and calculations

assessment (string)

Evaluates whether a change is positive, negative, or neutral.

Valid values: "positive", "negative", "equal", "neutral"

Examples:

  • [increased 15%](ratio_value, assessment="positive")
  • [dropped 8%](ratio_value, assessment="negative")
  • [remained flat](trend_desc, assessment="equal")

Why use it: Enables visual indicators (colors, icons) for good/bad trends

unit (string)

The unit of measurement for the value.

Examples:

  • [¥1,500,000](metric_value, unit="元", origin=1500000)
  • [150](metric_value, unit="units")

detail (any)

Additional context or breakdown data for chart rendering. Required for certain entity types.

Required for these entity types:

  • rank: Array of numbers representing ranking data

- Example: [top performer](rank, detail=[5, 8, 12, 15, 20])

  • difference: Array of numbers showing comparative values

- Example: [gap narrowing](difference, detail=[100, 80, 60, 40])

  • anomaly: Array of numbers highlighting outliers

- Example: [unusual spike](anomaly, detail=[10, 12, 11, 45, 13])

  • association: Array of {x, y} objects for correlation data

- Example: [strong correlation](association, detail=[{"x":1,"y":2},{"x":2,"y":4},{"x":3,"y":6}])

  • distribution: Array of numbers showing data spread

- Example: [uneven distribution](distribution, detail=[5, 15, 45, 25, 10])

  • seasonality: Object with data array and optional range

- Example: [Q4 peak](seasonality, detail={"data":[10,12,15,30],"range":[0,40]})

Optional for other types:

  • [steady growth](trend_desc, detail=[100, 120, 145, 180, 210])

Data Requirements

Critical: All data must be from publicly authentic sources:

  • Official announcements/financial reports
  • Authoritative media (Reuters, Bloomberg, TechCrunch, etc.)
  • Industry research institutions (IDC, Canalys, Counterpoint Research, etc.)
  • Never use fictional, AI-guessed, or simulated data
  • Use specific numbers (e.g., "146 million units", "7058 units"), not vague approximations

Complete T8 Syntax Example

# 2024 Smartphone Market Analysis

## Market Overview

Global [smartphone shipments](metric_name) reached [1.2 billion units](metric_value, origin=1200000000) in [2024](time_desc), showing a [modest decline of 2.1%](ratio_value, origin=-0.021, assessment="negative") year-over-year.

The **premium segment** (devices over $800) showed *remarkable* [resilience](trend_desc, assessment="positive"), growing by [5.8%](ratio_value, origin=0.058, assessment="positive"). [Average selling price](other_metric_value) was [$420](metric_value, origin=420, unit="USD").

## Key Findings

1. [Asia-Pacific](dim_value) remains the __largest market__
2. [Premium devices](dim_value) showed **strong growth**
3. Budget segment faced *headwinds*

## Regional Breakdown

### Asia-Pacific

[Asia-Pacific](dim_value) remains the largest market with [680 million units](metric_value, origin=680000000) shipped, though this represents a [decline of 180 million units](delta_value, origin=-180000000, assessment="negative") from the previous year.

Key markets:
- [China](dim_value): [320M units](metric_value, origin=320000000) - down [8.5%](ratio_value, origin=-0.085, assessment="negative"), [ranked 1st](rank, detail=[320, 180, 90, 65, 45]) globally, accounting for [47%](contribute_ratio, origin=0.47, assessment="positive") of regional sales
- [India](dim_value): [180M units](metric_value, origin=180000000) - up [12.3%](ratio_value, origin=0.123, assessment="positive"), [ranked 2nd](rank, detail=[320, 180, 90, 65, 45])
- [Southeast Asia](dim_value): [180M units](metric_value, origin=180000000) - [stable](trend_desc, assessment="equal")

For detailed methodology, visit [our research page](https://example.com/methodology).

Using T8 in HTML, React, and Vue

Using in HTML (via CDN)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>T8 Narrative Text</title>
</head>
<body>
  <div id="container"></div>

  <!-- Import T8 from unpkg CDN -->
  <script src="https://unpkg.com/@antv/t8/dist/t8.min.js"></script>

  <script>
    // T8 is available as a global variable
    const { Text } = window.T8;

    // Initialize T8 instance
    const text = new Text(document.getElementById('container'));

    // Render narrative text using T8 Syntax
    const narrativeText = `
# Sales Report

This quarter, [bookings](metric_name) are higher than usual. They are [¥348k](metric_value, origin=348.12).

[Bookings](metric_name) are up [¥180.3k](delta_value, assessment="positive") relative to the same time last quarter.
    `;

    text.theme('light').render(narrativeText);
  </script>
</body>
</html>

Installation:

npm install @antv/t8
# or
yarn add @antv/t8

Using in React

import { Text } from '@antv/t8';
import { useEffect, useRef } from 'react';

function T8Component() {
  const containerRef = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (!containerRef.current) return;

    // Initialize T8 instance
    const text = new Text(containerRef.current);

    // Render narrative text using T8 Syntax
    const narrativeText = `
# Sales Report

This quarter, [bookings](metric_name) are higher than usual. They are [¥348k](metric_value, origin=348.12).

[Bookings](metric_name) are up [¥180.3k](delta_value, assessment="positive") relative to the same time last quarter.
    `;

    text.theme('light').render(narrativeText);

    // Cleanup on unmount
    return () => {
      text.unmount();
    };
  }, []);

  return <div ref={containerRef} />;
}

export default T8Component;

Using in Vue 3

<template>
  <div ref="containerRef"></div>
</template>

<script setup lang="ts">
import { Text } from '@antv/t8';
import { ref, onMounted, onBeforeUnmount } from 'vue';

const containerRef = ref<HTMLDivElement>();
let textInstance: Text | null = null;

onMounted(() => {
  if (!containerRef.value) return;

  // Initialize T8 instance
  textInstance = new Text(containerRef.value);

  // Render narrative text using T8 Syntax
  const narrativeText = `
# Sales Report

This quarter, [bookings](metric_name) are higher than usual. They are [¥348k](metric_value, origin=348.12).

[Bookings](metric_name) are up [¥180.3k](delta_value, assessment="positive") relative to the same time last quarter.
  `;

  textInstance.theme('light').render(narrativeText);
});

onBeforeUnmount(() => {
  if (textInstance) {
    textInstance.unmount();
  }
});
</script>

Using in Vue 2

<template>
  <div ref="container"></div>
</template>

<script>
import { Text } from '@antv/t8';

export default {
  name: 'T8Component',
  data() {
    return {
      textInstance: null,
    };
  },
  mounted() {
    // Initialize T8 instance
    this.textInstance = new Text(this.$refs.container);

    // Render narrative text using T8 Syntax
    const narrativeText = `
# Sales Report

This quarter, [bookings](metric_name) are higher than usual. They are [¥348k](metric_value, origin=348.12).

[Bookings](metric_name) are up [¥180.3k](delta_value, assessment="positive") relative to the same time last quarter.
    `;

    this.textInstance.theme('light').render(narrativeText);
  },
  beforeDestroy() {
    if (this.textInstance) {
      this.textInstance.unmount();
    }
  },
};
</script>

Writing Guidelines and Best Practices

Content Requirements

  1. Minimum Length: No less than 800 words (adjust based on data complexity)
  2. Structure: Clear hierarchy with logical flow between sections
  3. Analysis: Don't just list numbers - explain their significance and context
  4. Tone: Natural, fluent, objective, and professional
  5. Entity Usage: Annotate ALL meaningful data points - metrics, values, trends, times, changes, percentages

Entity Annotation Best Practices

  1. Be Comprehensive: Mark all quantitative data, not just major figures
  2. Use Appropriate Types: Choose the entity type that best describes the semantic meaning
  3. Add Metadata: Include origin, assessment, and other relevant fields when applicable
  4. Natural Flow: Entities should blend seamlessly into readable prose

What to Annotate

DO annotate:

  • All numeric values (revenue, counts, measurements)
  • All percentages (changes, contributions, proportions)
  • Metric names and KPIs
  • Time periods
  • Geographic regions and categories
  • Trend descriptions
  • Comparisons and changes

DON'T annotate:

  • Generic text without specific data meaning
  • Connecting phrases and transitions
  • Context that doesn't represent measurable concepts

Output Format

When generating T8 Syntax content for the user:

  1. Output the T8 Syntax content directly without wrapping in code blocks
  2. Provide the frontend code (HTML/React/Vue) based on user preference
  3. Ensure all entities are properly annotated with appropriate metadata
  4. Verify that content meets minimum length and quality requirements

The rendered output provides:

  • Rich semantic markup for data entities
  • Interactive entity highlighting
  • Clear visual hierarchy
  • Professional report-style formatting
  • Responsive design for all devices

Reference Links

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

28%
按下载量换算1,557

OpenCode

20.07%
按下载量换算1,116

Cursor

17.71%
按下载量换算984

Codex

12.35%
按下载量换算687

trae

7.8%
按下载量换算434

Gemini CLI

3.28%
按下载量换算182

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills