Live survey304 models · 14 providers · 22,792 auditsAudited grill-with-docs · SAFE →What changedHow we verifyllms.txt

Agent skill · Audited from source

Song Recognition Cli With Spotify Enrichment

skill · ECNU-ICALK/AutoSkillLicence not declaredAudited 14 Oct 2026 · source 04e912cff54b

★ 602pushed 157 days agoversion 0.1.3
✓SAFEGrade B · 89/100 · 14 Oct 2026 · 04e912c
602repo stars · whole ECNU-ICALK/AutoSkill

Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 04e912cff54b and found no filesystem, network or shell access and no hard-coded secrets. What it does: A Python CLI tool for song recognition (Microphone, Internal Sound, File) with advanced metadata enrichment. It features ACRCloud/Shazam fallback for live inputs and a robust pipeline for file inputs including Spotify…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “Song Recognition Cli With Spotify Enrichment (ECNU-ICALK/AutoSkill)”. Retrieved 14 Oct 2026. https://modelsatlas.com/skills/ecnu-icalk/song-recognition-cli-with-spotify-enrichment

Trust audit

Audit 0.4.1 · source read 14 Oct 2026

Trust score89/100✓SAFE B
0 critical0 high0 medium0 low0 info

SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 16,667 of 17,602 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkNone observedNo outbound calls in the source
  • ShellNone observedNo commands run in the source
  • DependenciesPinnedNothing floats
  • SecretsNone foundNo keys in source

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS0
L1 Static sourceSecrets, path traversal, supply chain, hidden codeNA0
L2 InstructionsPrompt injection, authority framing, hidden directivesPASS0
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (0)

No findings at any severity. We re-audit when the source changes.

Audit 0.4.1 · source sha 04e912cff54b · 14 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

What it tells the agent

Full source on GitHub ↗

Its description: A Python CLI tool for song recognition (Microphone, Internal Sound, File) with advanced metadata enrichment. It features ACRCloud/Shazam fallback for live inputs and a robust pipeline for file inputs including Spotify…

---
id: "936c7a9e-408b-406c-95b4-f379c389057c"
name: "song_recognition_cli_with_spotify_enrichment"
description: "A Python CLI tool for song recognition (Microphone, Internal Sound, File) with advanced metadata enrichment. It features ACRCloud/Shazam fallback for live inputs and a robust pipeline for file inputs including Spotify metadata fetching, custom ID3 tagging (TXXX frames), and structured renaming."
version: "0.1.3"
tags:
  - "song recognition"
  - "CLI workflow"
  - "audio capture"
  - "Spotify API"
  - "id3-tagging"
  - "Shazam"
  - "ACRCloud"
  - "metadata enrichment"
triggers:
  - "implement song recognition workflow with microphone and internal sound"
  - "process audio file with spotify metadata enrichment"
  - "create a CLI menu for audio source selection"
  - "tag mp3 with custom id3 frames and spotify data"
  - "rename mp3 with isrc and index"
  - "add fallback logic from ACRCloud to Shazam"
---

# song_recognition_cli_with_spotify_enrichment

A Python CLI tool for song recognition (Microphone, Internal Sound, File) with advanced metadata enrichment. It features ACRCloud/Shazam fallback for live inputs and a robust pipeline for file inputs including Spotify metadata fetching, custom ID3 tagging (TXXX frames), and structured renaming.

## Prompt

# Role & Objective
You are a Python CLI Developer and Audio Processing Expert. Your objective is to create a command-line interface that handles multiple audio input sources, manages configuration securely, and performs advanced post-recognition file management (Spotify metadata enrichment, custom ID3 tagging, and renaming) for file-based inputs.

# Configuration Management
- Implement a `load_config()` function that reads from a `config.json` file.
- The config structure must support both ACRCloud and Spotify:
  ```json
  {
    "ACR": {"HOST": "...", "ACCESS_KEY": "...", "ACCESS_SECRET": "..."},
    "Spotify": {"CLIENT_ID": "...", "CLIENT_SECRET": "..."}
  }
  ```
- Extract `ACR_HOST`, `ACR_ACCESS_KEY`, `ACR_ACCESS_SECRET`, `SPOTIFY_CLIENT_ID`, and `SPOTIFY_CLIENT_SECRET`.
- Initialize `ACRCloudRecognizer` only if ACR keys are present. If missing, print a message and set to `None`.
- The recognizer config dictionary must include `host`, `access_key`, `access_secret`, and `timeout` (default 10 seconds).

# User Interface (UI)
- Implement a `get_user_choice()` function with specific decoration:
  - Header: `"=" * 50` followed by "Welcome to the Song Recognition Service!".
  - Separator: `"-" * 50`.
  - Input prompt: "Enter your choice (1, 2, or 3) and press Enter: ".
  - Feedback: Print a visual "Processing" line (e.g., `"." * 25 + " Processing " + "." * 25`) after input.

# Operational Rules & Constraints
1. **Audio Source Selection:**
   - Present a menu with three options:
     1: Microphone - Live audio capture
     2: Internal Sound - Detect sounds playing internally on the device
     3: File - Detect through an internally saved file
   - Capture the user's choice for the audio source.

2. **Recognition Service Logic:**
   - **If the user selects Option 3 (File):**
     - Prompt the user to select the recognition service:
       1: Youtube-ACR - Fast and accurate music recognition
       2: Shazam - Discover music, artists, and lyrics in seconds
     - Execute recognition using the *user-selected* service.
   - **If the user selects Option 1 (Microphone) or Option 2 (Internal Sound):**
     - Do not prompt for a service selection.
     - Attempt recognition using **ACRCloud first**.
     - If ACRCloud returns no result or fails, **automatically fallback to Shazam**.
     - For Microphone input, capture audio for recognition (do not permanently save unless necessary).

3. **Post-Recognition Processing (File Inputs Only):**
   - **Spotify Authentication**: Implement Client Credentials flow using Base64 encoding of `CLIENT_ID:CLIENT_SECRET`.
   - **Spotify Search**: Search for the track using the query `title artist:{artist_name}`.
   - **Metadata Extraction**: Extract the following fields from the Spotify response using `.get()` with defaults:
     - `album_name`, `album_url`, `track_number`, `release_date`
     - `isrc`, `label`, `explicit`, `genres`, `author_url`, `spotify_url`
   - **ID3 Tagging (Standard)**: Use `eyed3` to set `artist`, `album`, `album_artist`, `title`, and `recording_date`.
   - **ID3 Tagging (Custom TXXX)**: Use a helper function to add or update custom text frames.
     - The helper function must iterate through existing frames to find a match by description.
     - If found, update the text. If not found, create a new `eyed3.id3.frames.UserTextFrame`.
     - **CRITICAL**: Do NOT use the `encoding` keyword argument in `UserTextFrame`. Ensure the `text` argument is a string, not a list.
     - Required custom tags: "Album URL", "Eurydice" (value "True"), "Compilation" (value "KK"), "Genre", "Author URL", "Label", "Explicit", "ISRC", "Spotify URL".
   - **File Renaming**: Rename the file using the format `{index}_{artist}_{album}_{isrc}.mp3`.
     - Sanitize strings using `re.sub(r'[/\\:*?"<>|]', '', string)`.
     - Use `os.rename` to change the filename.

4. **Output Requirements (Live Inputs):**
   - Upon successful recognition for Microphone or Internal Sound, print the song details in the format: `Artist: {artist_name}, Song: {song_title}, Album: {album_name}`.
   - If Shazam is used as a fallback and requires additional data (like Album), fetch it (e.g., via Spotify) before printing.

5. **Internal Sound Implementation:**
   - For Option 2 (Internal Sound), implement logic to capture system audio. This may require OS-specific configurations (e.g., VB-Audio Cable on Windows, BlackHole on macOS) or virtual device routing.

# Anti-Patterns
- Do not hardcode sensitive API keys in the script; always load from `config.json`.
- Do not proceed with ACRCloud recognition if the recognizer object is `None`.
- Do not omit the specific UI decorations requested (headers, separators, processing text).
- Do not har

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit 04e912c

Download folder ↗
git clone https://github.com/ECNU-ICALK/AutoSkill
git -C AutoSkill checkout 04e912cff54b

The author documents no install command, so this uses the repository directly. Our verdict covers commit 04e912cff54b only.

Works in

The author has not said which agents this skill supports, and we have not tested it in any.

Audit history

Every audit, every source change

  1. ✓SAFE B 89 / 100

    first audit · source 04e912cff54b

Similar skills

Questions about Song Recognition Cli With Spotify Enrichment

What does the Song Recognition Cli With Spotify Enrichment skill do?
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
Is Song Recognition Cli With Spotify Enrichment safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Song Recognition Cli With Spotify Enrichment access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (04e912cff54b), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.