Agent skill

Blossom Content Addressed URL Filtering

by divinevideo in divinevideo/divine-mobile

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).

MPL-2.0Auto-check passed

Install Blossom Content Addressed URL Filtering

skills CLI
$ npx skills add divinevideo/divine-mobile --skill blossom-content-addressed-url-filtering -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install divinevideo/divine-mobile blossom-content-addressed-url-filtering --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/blossom-content-addressed-url-filtering .claude/skills/blossom-content-addressed-url-filtering && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
blossom-content-addressed-url-filtering
GitHub stars
266
Token cost
~1.1k tokens
SKILL.md length
361 words
Files
1
Skills in repo
103
Repo updated
First seen
Licence
MPL-2.0

At a glance

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).

  • Works in 4 steps: Remove extension filtering from URL… → For kind-specific events, trust the… → Use mime type from imeta instead of… → …
  • Media moderation
  • SKILL.md covers Problem, Context / Trigger Conditions, Solution and Verification, plus 2 more sections
  • Reaches blossom.primal.net and cdn.domain

What it does

Blossom Content Addressed URL Filtering is an agent skill from divinevideo/divine-mobile. Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Use when: (1) Media moderation, transcoding, or analysis silently skips files from Blossom or content-addressed storage servers, (2) URL extraction from Nostr event tags (imeta, r tags) drops URLs without recognized extensions, (3) CDN fallback URLs append .mp4 but the actual server uses extensionless content-addressed paths like /{sha256}. Common in Nostr video events (kind 34236) where…

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The licence is MPL-2.0.

When your agent uses it

  • Media moderation
  • Analysis silently skips files from Blossom
  • Content-addressed storage servers
  • URL extraction from Nostr event tags (imeta

Example prompts

  • “/blossom-content-addressed-url-filtering”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Remove extension filtering from URL extraction
  2. For kind-specific events, trust the event kind
  3. Use mime type from imeta instead of extension
  4. Fix CDN fallback URLs

What it can do on your machine

Read from SKILL.md and the folder at commit a1a9a8a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • blossom.primal.net
    • cdn.domain

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Blossom Content Addressed URL Filtering loads about 1.1k tokens when it runs. Until then it costs about 151 tokens; SKILL.md has 361 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~151
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from divinevideo/divine-mobile at commit a1a9a8a, republished under its MPL-2.0 licence (© divinevideo). 361 words, ~1,057 tokens.

Download SKILL.mdSave it as .claude/skills/blossom-content-addressed-url-filtering/SKILL.md (or your agent's skills folder).
name
blossom-content-addressed-url-filtering
description
Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Use when: (1) Media moderation, transcoding, or analysis silently skips files from Blossom or content-addressed storage servers, (2) URL extraction from Nostr event tags (imeta, r tags) drops URLs without recognized extensions, (3) CDN fallback URLs append .mp4 but the actual server uses extensionless content-addressed paths like /{sha256}. Common in Nostr video events (kind 34236) where different clients use different URL formats.
author
Claude Code
version
1.0.0
date
2026-03-05

Blossom Content-Addressed URL Filtering

Problem

Code that extracts video URLs from Nostr events (or similar tag-based metadata) silently drops URLs from Blossom servers and other content-addressed storage because it filters on file extensions like .mp4. These servers use hash-based URLs without extensions (e.g. https://blossom.example.com/{sha256}), causing the URL extraction to fail and fall back to a CDN URL that also 404s for non-CDN content.

Context / Trigger Conditions

  • Videos from certain servers are never processed (moderated, transcoded, etc.)
  • URL extraction code contains patterns like url.includes('.mp4') or url.includes('/video/')
  • Nostr imeta tag URL extraction requires .mp4 in the URL string
  • Nostr r tag filtering checks for .mp4 or /video/ in the URL
  • CDN fallback constructs https://cdn.domain/{sha256}.mp4 but server serves at /{sha256}
  • Content-addressed storage (Blossom, IPFS gateways) uses extensionless URLs
  • Failures are silent — no errors, videos just never appear in the processing pipeline

Solution

1. Remove extension filtering from URL extraction

Bad (drops blossom URLs):

javascript
// imeta tag extraction
if (param.startsWith('url ') && param.includes('.mp4')) {
  url = param.substring(4).trim();
}

// r tag extraction
if (url.includes('.mp4') || url.includes('/video/')) {
  return url;
}

Good (accepts any URL):

javascript
// imeta tag extraction — accept any URL
if (param.startsWith('url ') && param.length > 4) {
  url = param.substring(4).trim();
}

// r tag extraction — accept any http URL
if (url.startsWith('http')) {
  return url;
}
2. For kind-specific events, trust the event kind

If you already know an event is a video event (e.g. kind 34236), any URL in its tags is a video URL. Don't re-validate the media type by extension.

3. Use mime type from imeta instead of extension

If you need to validate media type, use the m field in imeta tags:

javascript
for (const param of tag.slice(1)) {
  if (param.startsWith('m video/')) isVideo = true;
  if (param.startsWith('url ')) imetaUrl = param.substring(4).trim();
}
4. Fix CDN fallback URLs
javascript
// Bad: appends .mp4
let videoUrl = `https://${CDN_DOMAIN}/${sha256}.mp4`;

// Good: content-addressed path (no extension)
let videoUrl = `https://${CDN_DOMAIN}/${sha256}`;
Show full SKILL.md (142 more words)Show less

Verification

  • Check that videos from non-CDN blossom servers appear in the moderation/processing queue
  • Verify that extractVideoUrlFromEvent returns URLs for events with extensionless imeta/r tags
  • Confirm CDN fallback URLs resolve correctly without .mp4 extension

Example

A Nostr kind 34236 event with tags:

json
["imeta", "url https://blossom.primal.net/abc123def456...", "m video/mp4", "x abc123def456..."]

Old code: url.includes('.mp4') → false → URL dropped → CDN fallback → 404 → video never moderated

New code: accepts any URL from imeta → https://blossom.primal.net/abc123def456... → HiveAI can fetch it → video moderated

Notes

  • This applies to ANY media processing pipeline, not just moderation
  • Blossom (BUD-01) uses /{sha256} paths; some servers add Content-Type headers
  • HLS streams (.m3u8), WebP thumbnails, and other formats also won't have .mp4 extensions
  • Some rogue clients may not follow any path convention at all
  • The m (mime type) field in imeta is the proper way to determine media type, not the URL path
  • Prioritize imeta URLs over r tag URLs (imeta is more specific/reliable)

© divinevideo, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/blossom-content-addressed-url-filtering of divinevideo/divine-mobile.

Open the folder on GitHubat commit a1a9a8a

Compare with similar skills

Blossom Content Addressed URL Filtering next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Blossom Content Addressed URL Filtering compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Blossom Content Addressed URL Filtering this skilldivinevideo/divine-mobile266—~1.1kAutomated safety check: PassMPL-2.0
Process Mapperalirezarezvani/claude-skills28k—~2.2kAutomated safety check: PassMIT
Filterzalando/skipper3.3k—~527Automated safety check: PassMIT
Nutrient Document Processingaffaan-m/ECC277k4 repos~1.5kAutomated safety check: PassMIT
Monte Carlo Analyze Root Causesickn33/agentic-awesome-skills47k1 repos~4kAutomated safety check: PassApache-2.0
Dart Log Failure Parserflutter/flutter180k—~489Automated safety check: PassBSD-3-Clause

Similar skills

  • Process Mapper

    alirezarezvani/claude-skills

    A skill your agent uses when a BizOps lead, COO, or process-improvement owner needs to document an end-to-end business process (procurement, employee onboarding, incident handoff…

    28k GitHub stars~2.2k tokensUpdated 1 mo ago
    Business, Finance & HRAuto-check passed
  • Filter

    zalando/skipper

    Create or modify code in the filters package and all its sub-folders

    3.3k GitHub stars~527 tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Process, convert, OCR, extract, redact, sign, and fill documents using the Nutrient DWS API.

    277k GitHub starsUsed in 4 repos~1.5k tokens
    Documents & OfficeAuto-check passed
  • Monte Carlo Analyze Root Cause

    sickn33/agentic-awesome-skills

    Curated upstream guidance for Monte Carlo Analyze Root Cause; use when the workflow matches the user goal.

    47k GitHub starsUsed in 1 repo~4k tokens
    DevelopmentAuto-check passed
  • Parse failures from Dart and Flutter test logs. An agent skill from flutter/flutter.

    180k GitHub stars~489 tokensUpdated today
    MobileAuto-check passed
  • Process Inbox

    telegramdesktop/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    33k GitHub starsUsed in 1 repo~5.4k tokens
    Productivity & AutomationAuto-check passed

More from divinevideo/divine-mobile

All 103 skills in this repo
  • Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y".

    266 GitHub stars~931 tokensUpdated today
    Auto-check passed
  • Art Direct

    divinevideo/divine-mobile

    Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language.

    266 GitHub stars~4.8k tokensUpdated today
    Auto-check passed
  • Async Await Null Race Condition

    divinevideo/divine-mobile

    Fix "Null check operator used on a null value" errors when an object is set to null during an async await.

    266 GitHub stars~881 tokensUpdated today
    Auto-check passed
  • AWS V4 Signing Custom Headers Gcs

    divinevideo/divine-mobile

    Add custom metadata headers (x-amz-meta-) to AWS v4 signed requests for GCS S3-compatible API.

    266 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Bash Herestring Newline Secrets

    divinevideo/divine-mobile

    Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings.

    266 GitHub stars~791 tokensUpdated today
    Auto-check passed
  • Certmanager Dns01 Gke Private Cluster

    divinevideo/divine-mobile

    Fix cert-manager DNS01 ACME challenges stuck in "pending" state with "DNS record not yet propagated" inside GKE private clusters, even when TXT records exist in Cloudflare DNS.

    266 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed

Questions about Blossom Content Addressed URL Filtering

What does Blossom Content Addressed URL Filtering do?

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Blossom Content Addressed URL Filtering is an agent skill from divinevideo/divine-mobile.webp).

When should I use Blossom Content Addressed URL Filtering?

Blossom Content Addressed URL Filtering fits situations like: media moderation; analysis silently skips files from Blossom; content-addressed storage servers; URL extraction from Nostr event tags (imeta.

How do I install Blossom Content Addressed URL Filtering in Claude Code?

Run `npx skills add divinevideo/divine-mobile --skill blossom-content-addressed-url-filtering -a claude-code`. Or copy the skill folder (.agents/skills/blossom-content-addressed-url-filtering in divinevideo/divine-mobile) into .claude/skills/blossom-content-addressed-url-filtering in your project. Claude Code loads it when a task matches its description.

How do I install Blossom Content Addressed URL Filtering in Codex?

Run `npx skills add divinevideo/divine-mobile --skill blossom-content-addressed-url-filtering -a codex`. Or copy the skill folder (.agents/skills/blossom-content-addressed-url-filtering in divinevideo/divine-mobile) into .agents/skills/blossom-content-addressed-url-filtering in your project. Codex loads it when a task matches its description.

Can I use Blossom Content Addressed URL Filtering in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add divinevideo/divine-mobile --skill blossom-content-addressed-url-filtering -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/blossom-content-addressed-url-filtering, .gemini/skills/blossom-content-addressed-url-filtering, .github/skills/blossom-content-addressed-url-filtering and .opencode/skills/blossom-content-addressed-url-filtering in your project.

What does Blossom Content Addressed URL Filtering need to run?

SKILL.md names no scripts, command-line tools or credentials: Blossom Content Addressed URL Filtering is instructions for the agent only.

Does Blossom Content Addressed URL Filtering access the network?

SKILL.md names 2 domains. In commands or code: blossom.primal.net and cdn.domain; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Blossom Content Addressed URL Filtering safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Blossom Content Addressed URL Filtering use?

Blossom Content Addressed URL Filtering is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Blossom Content Addressed URL Filtering use?

About 1.1k tokens (SKILL.md is roughly 4.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Blossom Content Addressed URL Filtering?

Skills that share tags, products or a category with Blossom Content Addressed URL Filtering: Process Mapper (alirezarezvani/claude-skills, 28k stars), Filter (zalando/skipper, 3.3k stars), Nutrient Document Processing (affaan-m/ECC, 277k stars) and Monte Carlo Analyze Root Cause (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Blossom Content Addressed URL Filtering?

divinevideo (a GitHub organization) maintains it in divinevideo/divine-mobile, which has 266 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 11, 2026.

Source: divinevideo/divine-mobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.