dlna
Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.
Best use case
dlna is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.
Teams using dlna should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/dlna/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How dlna Compares
| Feature / Agent | dlna | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Control DLNA MediaRenderer devices. Discover devices and play media URLs on DLNA-compatible TVs, speakers, and media players. Supports default device configuration.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# DLNA - Media Device Control
Control DLNA/UPnP MediaRenderer devices on your local network.
## Quick Start
```bash
# Discover devices
uv run dlna discover
# Set default device (optional but convenient)
uv run dlna config --device "HT-Z9F"
# Play with default device (no need to specify device name)
uv run dlna play "http://example.com/video.mp4"
# Or play with specific device
uv run dlna play "http://example.com/video.mp4" "Living Room TV"
# Stop playback
uv run dlna stop
```
## Commands
| Command | Description |
|---------|-------------|
| `discover` | Scan for DLNA devices |
| `play <url> [device]` | Play media URL on device |
| `stop [device]` | Stop playback |
| `status [device]` | Get playback status |
| `config` | Show configuration |
| `config --device <name>` | Set default device |
| `config --unset-device` | Clear default device |
## Configuration
Default device is saved in `.dlna/config.json` inside the skill directory.
```bash
# Set default device
uv run dlna config --device "HT-Z9F"
# Show current config
uv run dlna config
# Clear default device
uv run dlna config --unset-device
```
## Playing Local Files
DLNA devices can only play URLs, not local file paths. To play local files, you need to serve them via HTTP.
### IMPORTANT: Use Background Task for HTTP Server
**Always use a background task (Bash with run_in_background) to start the HTTP server.** This ensures:
1. **No zombie processes**: When Claude Code session ends, the server is automatically terminated
2. **Clean resource management**: Server lifecycle is tied to the session
3. **No port conflicts**: Server stops when done, freeing the port
### Example: Play Local File
```python
# Step 1: Start HTTP server in background
# This runs in background and auto-stops when session ends
# Step 2: Get your local IP
import socket
def get_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
# Step 3: Construct URL and play
url = f"http://{get_ip()}:8000/video.mp4"
# uv run dlna play url
```
### Python API
```python
import asyncio
from dlna import discover_devices, find_device, play_url, set_default_device
async def main():
# Set default device
set_default_device("Living Room TV")
# Find device (uses default if no name provided)
device = await find_device() # Uses default
if device:
# Play remote URL
await play_url(device, "http://example.com/video.mp4")
asyncio.run(main())
```
## Supported Devices
- Smart TVs (Sony, Samsung, LG, etc.)
- Soundbars and speakers with DLNA support
- Any UPnP MediaRenderer deviceRelated Skills
video-understand 技能
## 概述
tutor
一对一辅导老师技能,用于解答数学题,生成HTML讲解文档和带配音的Manim动画视频。 核心工作流:数学分析 → HTML可视化 → 分镜脚本 → TTS音频 → 验证更新 → 脚手架 → Manim代码 → 渲染验证 触发条件:学生粘贴数学题图片、需要教学视频、需要HTML讲解资料
claude-in-tmux
Run Claude Code CLI inside tmux sessions within Docker containers. Use this skill when the user wants to run Claude Code in a tmux session, check running tmux sessions, read logs from tmux sessions, or manage claude.sh wrapper script in OpenClaw agent containers.
compose-multiplatform-patterns
KMP项目中的Compose Multiplatform和Jetpack Compose模式——状态管理、导航、主题化、性能优化和平台特定UI。
java-coding-standards
Spring Bootサービス向けのJavaコーディング標準:命名、不変性、Optional使用、ストリーム、例外、ジェネリクス、プロジェクトレイアウト。
continuous-learning
Claude Codeセッションから再利用可能なパターンを自動的に抽出し、将来の使用のために学習済みスキルとして保存します。
nextjs-best-practices
Next.js App Router principles. Server Components, data fetching, routing patterns.
network-101
Configure and test common network services (HTTP, HTTPS, SNMP, SMB) for penetration testing lab environments. Enable hands-on practice with service enumeration, log analysis, and security testing against properly configured target systems.
neon-postgres
Expert patterns for Neon serverless Postgres, branching, connection pooling, and Prisma/Drizzle integration
nanobanana-ppt-skills
AI-powered PPT generation with document analysis and styled images
multi-agent-patterns
This skill should be used when the user asks to "design multi-agent system", "implement supervisor pattern", "create swarm architecture", "coordinate multiple agents", or mentions multi-agent patterns, context isolation, agent handoffs, sub-agents, or parallel agent execution.
monorepo-management
Build efficient, scalable monorepos that enable code sharing, consistent tooling, and atomic changes across multiple packages and applications.