music-ingestion-publisher

Ingest music from Netease, Bilibili, and local NCM files into a LanceDB music database.

2|Updated Jun 18, 2026
One-click install
npx skills add https://github.com/zero-yx/static_flow --skill music-ingestion-publisher-zero-yx
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: music-ingestion-publisher
Source: https://github.com/zero-yx/static_flow/tree/main/skills/music-ingestion-publisher
Command: npx skills add https://github.com/zero-yx/static_flow --skill music-ingestion-publisher-zero-yx

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Getting music into a self-hosted StaticFlow music library requires juggling multiple sources (Netease Cloud Music, Bilibili, local NCM files), decrypting proprietary formats, fetching lyrics and cover art, and writing records safely into a LanceDB table that uses blob v2 encoding. This Skill orchestrates that entire pipeline so tracks land in the database with complete metadata and without corrupting the table. ## Core Features & Use Cases - Multi-source ingestion: Search and download from Netease Cloud Music (preferred) or Bilibili (fallback for VIP/copyright-blocked tracks), plus decrypt local NCM files and import plain mp3/flac. - Metadata enrichment: Automatically fetch lyrics (original + translation), album info, and cover art URLs, with mandatory https cover images and album metadata for Netease tracks. - Safe LanceDB writes: All ingestion goes through sf-cli write-music, protecting the blob v2 encoded audio_data column from corruption caused by direct writes. - Use Case: A Netease track returns a 403 VIP error. The Skill automatically switches to Bilibili for the audio, still pulls lyrics from Netease via the track ID, converts the cover URL to https, and ingests the song with full metadata. ## Quick Start Ask the agent to search Netease Cloud Music for a song by title and artist, download it, and publish it into the StaticFlow music database with lyrics and cover art.

Frequently Asked Questions about music-ingestion-publisher

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I download music from Netease Cloud Music and add it to a database?▼

Use ncmdump-cli to search and download the track, fetch lyrics with the lyric subcommand, then ingest with sf-cli write-music providing title, artist, album, cover URL, and lyrics files. The Skill handles the full sequence including cover URL retrieval via the Netease API.

What should I do when a Netease song download fails with a VIP or copyright error?▼

Switch to the Bilibili fallback flow: search Bilibili for the song and artist, download the audio with ncmdump-cli bili-download, and still fetch lyrics from Netease using the original track ID. Cover URLs from Bilibili must be converted from http to https before ingestion.

Can I write music records directly to LanceDB with Python lancedb?▼

No. The songs table uses Lance blob v2 encoding for audio_data, and direct writes via Python lancedb, arrow, or manual RecordBatch will corrupt the table. Always use sf-cli write-music for ingestion.

How do I decrypt NCM files and import them into a music library?▼

Run ncmdump-cli dump on the .ncm file to produce an mp3 or flac, then ingest it with sf-cli write-music using source ncm_local. Metadata is auto-extracted from ID3/Vorbis tags, and embedded cover art can be updated afterward.

Why does Bilibili audio download require ffmpeg?▼

Bilibili serves audio as DASH m4s segments, which must be converted to mp3 or flac. ncmdump-cli relies on ffmpeg in PATH for this conversion, so verify ffmpeg -version before running bili-download.

Does the ingestion flow support batch album downloads?▼

Yes. Flow D lists an artist's albums and tracks via the Netease HTTP API, checks which songs already exist in the database, and ingests each new track individually. Tracks blocked by copyright are collected for the Bilibili batch flow.