Social Content Parser
Use this skill to turn a public short-video or social share URL into a local content package. Treat the aggregated fallback as the broad coverage layer; use the platform-specific routes when the link clearly belongs to Xiaohongshu, Douyin, Bilibili, or X/Twitter.
Supported platforms:
- Xiaohongshu via
https://api.bugpk.com/api/xhsjx - Douyin works via
https://api.bugpk.com/api/douyin - Douyin profiles via
https://api.bugpk.com/api/dyzy - Bilibili via
https://api.bugpk.com/api/bilibili - X/Twitter via
https://api.fxtwitter.com/:screen_name/status/:id - Aggregated fallback via
https://api.bugpk.com/api/short_videosfor 20+ platforms
Fallback order:
- Platform-specific parser.
- Platform-specific backup parser when available.
- Aggregated short-video fallback.
Workflow
- Use
scripts/parse_social.mjsas the primary entrypoint. - Pass a public share URL with
--url. - Let the script auto-detect the platform from the URL.
- For Douyin, let the script choose profile or work parsing:
/user/...links or--kind profileuse the profile API and returnitems.- video, image, and live-photo share links use the work API and return
type=video|image|live.
- Strip tracking query parameters from share URLs before parsing.
- If the primary parser fails or returns an empty payload, try the platform backup parser when available.
- If both platform parsers fail, fall back to the aggregated short-video parser.
- Preserve the raw API response in
raw.json. - Normalize shared fields into
normalized.json. - Write a human-readable
report.md. - Download avatar, cover, images, live-photo media, and optional videos into
media/unless disabled.
Output Contract
Default output root:
./social-notes/
Each parsed item creates one subfolder:
<platform>-<title>-<YYYY-MM-DD>-<id>/
Files:
report.mdnormalized.jsonraw.jsonmedia/
Normalized fields:
platformkindcanonicalUrlfallbackUsedsourceUrlcodemsgtypetitledescauthor.nameauthor.idauthor.avatarcoverprimaryVideovideoBackupsimageslivePhotomusicstatisticspartsitemspagination
Commands
node scripts/parse_social.mjs --url "https://v.douyin.com/..."
node scripts/parse_social.mjs --url "https://www.douyin.com/user/..." --count 10
node scripts/parse_social.mjs --url "https://b23.tv/..."
node scripts/parse_social.mjs --url "https://www.xiaohongshu.com/explore/..."
Useful options:
node scripts/parse_social.mjs --url "<share-url>" --out-dir ./social-notes
node scripts/parse_social.mjs --url "<share-url>" --no-download
node scripts/parse_social.mjs --url "<share-url>" --download-video
node scripts/parse_social.mjs --platform douyin --kind profile --id "<sec_uid>" --count 10
node scripts/parse_social.mjs --from-file raw.json --platform douyin
Platform Notes
- Xiaohongshu:
descis the正文.video_backupmay be a string or list. - Douyin profile:
/user/...homepage links usedyzy; normalized output haskind=profile,type=profile, and anitemslist. - Douyin work: video, image, and live-photo share links use
douyin; normalized output haskind=postandtype=video|image|live.live_photoincludes paired image/video values. - X/Twitter: the parser uses FXTwitter first, keeps tweet text, author info, media, metrics, and long-form article content when available, then falls back to the aggregated parser if needed.
- Share links often contain tracking parameters; the parser keeps the content path and drops those extras before calling the API.
- Do not assume every fallback wants the same cleaned URL; some fallback parsers prefer the original share link.
- When the primary parser misses content, the skill can fall back to the aggregated short-video parser to recover a usable result.
- Bilibili: supports short videos and collections. Use
videosas parts when present. Direct video URLs may expire. - Fallback parser:
short_videoscovers 20+ short-video platforms and is useful when the platform-specific parser misses a share link.
Rules
- Do not use the official
key=valuesample as a real parameter. - Do not invent engagement metrics. Keep unsupported fields empty or absent.
- Do not assume every platform returns the same schema.
- Do not download videos unless the user asks or
--download-videois provided. - Preserve
raw.jsonexactly for debugging and future schema changes.