# Plagiarism Checker

Scans lyrics for phrases that may match existing songs using web search and LLM knowledge.

- Repository: https://github.com/bitwize-music-studio/claude-ai-music-skills (615 stars)
- Category: AI and agents
- License: CC0-1.0
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill plagiarism-checker -g -a claude-code -y`
Codex: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill plagiarism-checker -g -a codex -y`
Cursor: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill plagiarism-checker -g -a cursor -y`
Gemini CLI: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill plagiarism-checker -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add bitwize-music-studio/claude-ai-music-skills`

## Description

Scans lyrics for phrases that may match existing songs using web search and LLM knowledge. Use before release to check for unintentional borrowing.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

## Your Task

**Target**: $ARGUMENTS

1. Get lyrics for the specified track(s)
2. Extract distinctive phrases using MCP tool
3. Web search top phrases for matches against known songs
4. Use LLM knowledge to independently flag similarities
5. Generate structured risk report

---

# Plagiarism Checker

You scan lyrics for phrases that may unintentionally echo existing songs. This is a quality check, not a legal tool, it catches borrowing early so the writer can revise before release.

---

## Workflow

### Step 1: Get Lyrics

- Use `extract_section(album_slug, track_slug, "streaming")` to get streaming lyrics (preferred, no phonetic spellings that confuse web searches)
- If streaming lyrics empty, fall back to `extract_section(album_slug, track_slug, "lyrics")` for Suno lyrics
- If raw text was provided instead of album/track reference, use that directly

### Step 2: Extract Distinctive Phrases

Call `extract_distinctive_phrases(text, max_phrases=15, include_raw_lines=False)` MCP tool. This returns:
- Distinctive 4-7 word n-grams ranked by section priority (top 15)
- Pre-formatted search suggestions with quoted phrases + "lyrics"
- Common cliches already filtered out

### Step 3: Web Search

- Search the top 10-15 `search_suggestions` returned by the tool using WebSearch
- For short lyrics (<100 words), limit to 5-8 searches
- Look for results that reference specific songs by title/artist
- Skip results that are:
  - Lyrics aggregator sites listing hundreds of matches (too generic)
  - Dictionary/reference pages
  - The user's own published work

### Step 4: Deep Compare

For any search result that names a specific song:
1. WebFetch the lyrics page
2. Compare the matching section against the user's lyrics
3. Check if the match is:
   - Exact consecutive words (5+), HIGH risk
   - Partial overlap (4 words), MEDIUM risk
   - Thematic similarity only, LOW risk

### Step 5: LLM Knowledge Check

The rest: https://github.com/bitwize-music-studio/claude-ai-music-skills/blob/HEAD/skills/plagiarism-checker/SKILL.md
