---
title: Platforms
description: Platform enums and cross-platform content abstraction.
---

# Platform And Field Mapping

Whale serves cross-platform public content data. Source platforms have different raw structures, but the external query layer stays unified: consumers query by platform, content type, time, keyword, semantics, and structured fields without knowing how each platform is collected.

## Contents

| Section | Description |
| --- | --- |
| Platform scope | Frozen platform enums for the first version |
| Content types | External unified `content_type` values |
| Common fields | Stable cross-platform fields |
| Platform cases | Typical platform data shapes |
| Metric semantics | How views, reads, likes, comments, and other metrics map |
| Extension fields | How platform-specific fields are preserved |

## Initial Platform Scope

| Group | Platforms |
| --- | --- |
| Chinese content platforms | `douyin`, `kuaishou`, `bilibili`, `wechat_channels`, `xiaohongshu`, `weibo`, `wechat_article`, `zhihu` |
| Chinese marketplace case | `xianyu` |
| Global content platforms | `reddit`, `medium`, `linkedin`, `instagram`, `tiktok`, `youtube` |
| Discovery and web | `google_search`, `google_news`, `google_trends`, `website`, `rss`, `news` |

Availability depends on data-product authorization, collection coverage, and compliance policy. API responses use `source_platform` as the stable platform enum.

## Content Types

| content_type | Meaning | Platform examples |
| --- | --- | --- |
| `post` | Social post, feed item, short content | Weibo, Xiaohongshu, Reddit |
| `article` | Long article, public account article, column | Medium, WeChat Articles, Zhihu |
| `video` | Video content, possibly with description, transcript, or audio transcription | YouTube, TikTok, Bilibili, WeChat Channels |
| `comment` | Comment, reply, thread item | Reddit, Weibo, Xiaohongshu |
| `product` | Product or marketplace listing | Xianyu |
| `job_posting` | Job posting | LinkedIn |
| `web_page` | Web page, news page, RSS article | website, news, rss |

## Common Fields

| Field | Meaning |
| --- | --- |
| `document_id` | Whale document ID used for details, versions, and snapshots |
| `dataset_id` | Data product or data domain, such as social, ecommerce, or recruitment |
| `source_platform` | Platform enum |
| `external_content_id` | Stable source-platform content ID |
| `canonical_url` | Canonical content URL |
| `content_type` | Unified content type |
| `author` | Author, account, channel, seller, or company identity |
| `content` | Title, body summary, URL, publish time, and other standard content |
| `metrics` | Current projection of engagement and distribution metrics |
| `parts` | Transcripts, OCR, chapters, specs, comment slices, and other multi-part content |
| `facts` | Filterable structured facts such as price, company, location, and skills |
| `platform_payload` | Platform-specific fields |

## Platform Cases

| Platform | External content shape | Key fields | Notes |
| --- | --- | --- | --- |
| YouTube | `video` | Title, description, channel, publish time, views, likes, comments, transcript or audio transcription | If a video has no body, `parts.transcript` or `parts.audio_transcript` can still be searched |
| TikTok / Douyin / Kuaishou | `video` | Description, author, topics, plays, likes, comments, shares | Short videos may have no title; searchable text often comes from description, OCR, or transcription |
| Bilibili / WeChat Channels | `video` | Title, description, creator/account, plays, likes, favorites, danmaku | Platform-specific metrics remain in extension metrics |
| Xiaohongshu / Instagram | `post` | Title/body, images, OCR, author, likes, favorites, comments | Image text can be indexed as `parts.ocr` |
| Weibo / Reddit | `post` or `comment` | Body, author, publish time, reposts, comments, likes | Suitable for topic, event, and sentiment tracking |
| Medium / WeChat Article / Zhihu | `article` | Title, body, author, publish time, reads/likes/comments | Long text is chunked for search; detail APIs return full content |
| Xianyu | `product` | Product title, price, want count, area, status, seller information | Price, status, and seller sold/onsale counts are useful snapshot trends |
| LinkedIn | `job_posting` | Job title, company, location, salary, skills, work mode | Structured fields enter `facts` for filtering and aggregation |
| Google / website / RSS / news | `web_page` or `article` | Title, summary, URL, source site, publish time | Suitable for web discovery, news tracking, and topic monitoring |

## Metric Semantics

| Standard metric | Meaning | Notes |
| --- | --- | --- |
| `view_count` | Views, reads, or impressions | Names vary by platform; externally means "viewed" |
| `play_count` | Video plays | Preferred for video platforms |
| `like_count` | Likes | Common across social platforms |
| `comment_count` | Comments | Common across posts, videos, and articles |
| `share_count` | Shares | Empty when unsupported by the platform |
| `collect_count` | Favorites, saves, or wants | Similar but not identical across Xiaohongshu, Bilibili, Xianyu |
| `repost_count` | Reposts | Used by platforms such as Weibo |
| `author_follower_count` | Author follower snapshot | Author state, not body content |

Time-varying metrics are stored as snapshots. Consumers that need trends should read document snapshots instead of relying only on the current projection returned by document detail.

## Extension Fields

Stable cross-platform fields enter the standard model first. Fields that cannot be normalized reliably stay in `platform_payload` or `platform_metrics`. Examples:

- Bilibili danmaku and coins.
- Xianyu seller credit, Zhima credit, product status.
- LinkedIn application count, job level, remote work mode.
- Google Trends interest and regional distribution.

## Usage Guidance

- For cross-platform search, start with `content_type`, `source_platform`, `published_at`, and keyword/semantic query.
- For platform-specific analysis, read `facts`, `platform_payload`, and `platform_metrics`.
- For trends, read snapshots sorted by `snapshot_at`.
- For full body, transcripts, or specs, load document `content`, `parts`, and `facts`.
