wlzh/skills: a personal collection of Claude Code skills for media and ops
开源了Codex Skills等集合,大部分是自己实际需要搞得,需要的自取。欢迎star
At a glance
- What is it?
- wlzh/skills is a MIT licensed collection of Claude Code skills written mostly to solve the author's own recurring problems, covering YouTube download and publishing, podcast production, voice conversion, invoice scanning, and VPS hardening. It ships no releases, its skills carry independent version numbers, and the whole thing is a personal toolbox rather than a maintained product.
- Who is it for?
- Adopt individual skills from wlzh/skills if you have a concrete recurring task that one of them already solves, such as downloading a YouTube video with a chosen quality, scanning a folder of invoices, or hardening a fresh VPS, and if you are willing to read that skill's own README and pin the version it declares.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 13 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A toolbox of unrelated scripts, not a library
The repository description is candid about what this is: a collection of skills such as Codex Skills, mostly built because the author actually needed them, and take what you want. The root README describes it as a collection of Claude Code Skills, various practical tools and automation scripts.
The directory listing confirms the shape. There is no src/ and no package manifest. Instead there is one directory per skill: audiocut-keyword, code-roaster, image-generator, quark-mswnlz-publisher, text-to-speech, video-downloader, video-voice-changer, voice-changer, vps-security-hardening, wespy-fetcher, wlzh-invoice-scanner, wlzh-youtube-tracker, x-fetcher-skill, youtube-publisher and youtube-to-blog-post, plus a README, a LICENSE and a .github directory.
What that means in practice is that there is no shared library to import and no plugin to register. Each skill is a self-contained directory with its own scripts, its own README and its own version, and the root README says explicitly that each skill is independent and can be used alone or in combination. The README also states that dependencies differ per skill and that each skill's own README is the place to look.
The versions listed in the root README are per skill rather than repository-wide, and they vary: voice-changer at v1.5.0, video-voice-changer at v1.1.1, audiocut-keyword at v1.1.0, text-to-speech at v1.1.0, video-downloader at v1.1.0, image-generator at v1.1.0, code-roaster at v1.1.0, youtube-to-blog-post at v3.5, quark-mswnlz-publisher at v1.3.0, x-fetcher at v1.1.0, wespy-fetcher at v1.1.1, wlzh-invoice-scanner at v3.8.0 and vps-security-hardening at v1.0.7. The repository itself has no GitHub releases at all.
So there is no upgrade path at the repository level. You take a directory, and you own it from that point.
How a skill is invoked: a script path or a slash command
The usage section gives two equivalent ways to run a skill. You can execute the script directly with a Python interpreter, pointing at a path under the Claude skills directory:
python3 ~/.claude/skills/<skill-name>/scripts/script.py [arguments]or you can call the skill by name through Claude Code:
/<skill-name> [arguments]The second form is the point of the collection. A skill that is reachable as a slash command inside an agent session can be composed with other skills in one prompt, which is why the README gives combination examples as single commands. The first form, a plain script path, is what you would use from cron, from a shell script, or when you want the same behaviour without an agent in the loop.
The combination examples in the README are worth reading as a design. One runs a YouTube download, keyword filtering and voice conversion together and then publishes the result to a podcast host, and another runs text to speech and then voice conversion:
youtube-to-xiaoyuzhou <url> --filter-keywords --change-voice female_3
text-to-speech script.txt --voice female_3A voice preset name like female_3 is passed as an argument, which tells you the presets are configuration rather than hard-coded behaviour. The upstream skills are also visible in the text: the video downloader is credited as originating from a public list of Claude skills, and the X fetcher and the WeChat article fetcher are each credited as built on another person's project, with the WeChat one adding an album mode and a batch download option and a fixed clone directory convention under the user's Documents folder.
The toolchain is Python 3.10 or newer for at least one skill, and the collection leans on external binaries and models: FFmpeg for cutting and reassembling audio, a transcription model for word-level timestamps, an RVC model for voice conversion, and a Microsoft Edge text to speech service for synthesis.
The media pipeline: download, filter, change voice, publish
The skills that cluster around video and podcast production form the most complete workflow in the collection.
The video downloader handles YouTube downloads with a choice of quality options and also saves audio as MP3, supports several container formats, installs its own dependencies automatically and shows video information. The text to speech skill builds on Microsoft Edge TTS and supports more than eighteen Chinese voices, and it parses podcast scripts to strip comments and markers, processes emotion tags, and can optionally hand the result to the voice changer.
The voice changer is the technical centre of that chain. It uses RVC models for real timbre conversion rather than pitch shifting, splits long audio into chunks automatically to avoid memory problems, supports multiple presets and custom parameters, and is designed to be called by other skills. The video variant of it extracts the audio from a video, applies the same presets, and merges the result back while keeping the original video quality, creating a new file rather than overwriting the original and cleaning up its temporary files.
The keyword cutter is the part with the most moving pieces. It uses a Paraformer transcription model with character-level timestamps, recognises keywords from a configuration file, and uses FFmpeg to cut and rejoin precisely. It also carries a fix for Python 3.10 environment compatibility, and its stated use cases include turning a YouTube video into a podcast, filtering ads and cleaning up content.
The publishing side completes the loop. The YouTube publisher handles video uploads with title, description, tags, thumbnail and subtitles, sets privacy, adds to playlists, marks Shorts, offers a dry-run preview, and rewrites angle brackets in titles and descriptions. The top-level skill that ties it together downloads a video, generates a cover image with the image generator, optionally filters by keyword and changes the voice, and schedules the publish.
The invoice scanner does its arithmetic in code, not in the model
The wlzh-invoice-scanner is the most operationally specific skill in the collection, and the one whose design says the most about how the author works. It scans a directory, recognises invoice types such as local transport, long-distance transport, accommodation, cancellation fees and dining, extracts the key fields and produces a classified statistics report.
The detail that matters is the Python amount check. The README describes it as mandatory: the amounts are verified by code so that the language model does not do mental arithmetic. That is a small line in a feature list, and it encodes a lesson that anyone building agent workflows should take seriously. A model that reads a total off a receipt and sums a column of them is doing exactly the arithmetic it is worst at, and a rule that forces the sum through code is a rule that removes a whole class of wrong answers.
Other decisions follow the same pattern. Railway tickets always count as long-distance transport regardless of distance, and cancellation fees get their own category rather than being folded into the ticket category. The report is named after the folder that was scanned, and after processing it emits a structured summary card. Expense claims can be appended to a summary markdown file, and there is a mode for entertainment or client expenses that outputs a line-by-line breakdown when the input mentions those terms.
Deduplication is handled by invoice number and by relationships between itineraries and settlement statements. Multiple directories can be scanned in one run, separated by spaces, each producing its own report and package, with the summary combining them and the modes able to be mixed.
VPS hardening over SSH, and the credential it asks for
The vps-security-hardening skill is a different animal from the media skills, because it operates on a remote machine and changes how you can reach it afterwards. It runs a remote security policy over SSH and the README lists seven hardening steps: creating a sudo user and disabling root password login, changing the SSH port with support for different Ubuntu versions, installing and configuring Fail2ban, enabling SSH key login, optional SSH login notifications, configuring the UFW firewall, and a Docker security reminder.
The invocation looks like this:
./scripts/harden-vps.sh \
--ip <VPS_IP> \
--root-pass <ROOT_PASSWORD> \
--user <NEW_USER> \
--user-pass <NEW_USER_PASSWORD> \
--port <SSH_PORT>Two things are worth reading carefully. The script supports root password login and takes that password on the command line, which means the root credential ends up in your shell history and in the process table for the duration of the run. The alternative is to run it against a machine where you already have key access. Second, the script changes the SSH port, creates a new user and configures the firewall, so a failure partway through can leave you locked out of a server you were connected to over a password. The README notes that the Ubuntu version is detected automatically, distinguishing socket activation on 22.10 and 23.x from the traditional approach on 24.04 and later, which is the kind of detail that only exists because someone hit a difference between versions.
For a fresh throwaway server, running this once as part of provisioning is a reasonable use. For a production host, the same seven steps are better applied by your configuration management, where the ordering of the steps is under your control and where the credentials are already in a secret store.
Two skills that fetch content, and a link shortener distribution bot
The fetching skills are smaller and easier to characterise.
The X fetcher grabs posts and long articles and saves them as formatted markdown, downloading media files, collecting engagement data such as likes, reposts, views and bookmarks, keeping project-level and user-level configuration files, storing output by username, and guiding the user on first run. It is credited as based on another author's project.
The WeChat article fetcher handles WeChat public account articles, general web pages and a developer blog platform, and outputs markdown by default with HTML, JSON or all three as options. It can fetch a WeChat album list with an album-only flag, batch download with a max-articles flag, and it clones the upstream repository into a fixed directory if it is missing. The README links to a details page that includes a capability comparison table.
The quark-mswnlz-publisher is the odd one out, and it is the most automatable of the set. It moves files from a Chinese cloud drive into a GitHub resource repository and updates a site in one pass. The steps are batch transferring URLs into new batch folders, copying promotional files into every resource folder, generating share links that are permanent, encrypted and randomly keyed, categorising content into ten or more resource repositories by looking at the repository description, writing files named by year and month while updating a README month index, committing and pushing one link per line, sending a Telegram notification to the channel and a group summary, and forcing a site build while returning the Actions link.
It is fully open source and comes with a video tutorial and a written one. As a piece of engineering it is a good example of the category this collection lives in: a script that removes a tedious sequence of manual steps, written for one person, published as it happens.
The code reviewer that insults you, and the blog post generator
Two skills exist for the work you do to code and to content rather than with media.
The code-roaster produces a code review report in the style of Gordon Ramsay, with sharp commentary, aimed at code smells, bugs, security, performance and best practices. It analyses along several dimensions, writes a detailed report in markdown, and offers three intensity settings, described as gentle, standard and brutal. As a code review tool it is obviously a joke, but the underlying structure is the part worth stealing: fixed analysis dimensions, a fixed output format and a severity dial. Turning the same scaffolding into a serious reviewer is a matter of changing the persona, and a team that likes the format may prefer it to an unstructured chat reply.
The youtube-to-blog-post skill converts a YouTube video into a Hexo blog post. It extracts real content and code examples from the video description, generates a 160 character description and five to eight keywords for search optimisation, uses the YouTube thumbnail as the cover image, and applies built-in natural language processing to remove traces of AI writing while keeping the post within search optimisation guidelines. Filenames are generated automatically in kebab-case, and the English filename support suggests it handles non-English source text. Its version is listed as v3.5, the highest in the collection apart from the invoice scanner, which suggests it is the one that has been revised most.
The image generator sits between the media skills and these two, since it is a general purpose image generation skill that supports several AI models including ModelScope and Gemini, allows flexible prompt and parameter configuration, saves generated images automatically, and is designed to be called by other skills. It is what the podcast pipeline uses to produce a cover image.
Editorial conclusion
Adopt individual skills from wlzh/skills if you have a concrete recurring task that one of them already solves, such as downloading a YouTube video with a chosen quality, scanning a folder of invoices, or hardening a fresh VPS, and if you are willing to read that skill's own README and pin the version it declares. Do not adopt the repository as a framework, because there is no shared runtime, no release cadence and no central version, so upgrading one skill can change behaviour you depend on. Before you copy anything, read the skill directory you intend to use, check the API keys and credentials it expects, and verify the version numbers listed in the root README against the ones in the individual skill directories, since the root list and the directories are updated separately.
Frequently asked questions
What is the wlzh/skills repository?
It is a collection of Claude Code skills, practical tools and automation scripts, mostly written by the author for their own recurring needs, under the MIT licence. Each skill lives in its own directory and carries its own version, and the repository publishes no GitHub releases.
How do I run a skill from the wlzh/skills collection?
You can run the script directly with python3 ~/.claude/skills/<skill-name>/scripts/script.py and its arguments, or call the skill by name inside Claude Code as /<skill-name> with its arguments. The README also shows combinations, for example youtube-to-xiaoyuzhou with --filter-keywords and --change-voice followed by a preset name.
What does the wlzh-invoice-scanner do?
It scans a directory, recognises invoice types such as transport, accommodation, cancellation fees and dining, extracts the key fields and produces a classified report. Amounts are verified in Python rather than by the language model, and it supports multiple directories in one run with deduplication by invoice number and by itinerary relationships.
Which AI models do the wlzh/skills tools use?
The voice changer uses RVC models for real timbre conversion, the keyword cutter uses a Paraformer transcription model with character-level timestamps, the text to speech skill uses Microsoft Edge TTS with more than eighteen Chinese voices, and the image generator supports models including ModelScope and Gemini.
What does the vps-security-hardening skill change on a server?
Seven steps over SSH: creating a sudo user and disabling root password login, changing the SSH port, installing and configuring Fail2ban, enabling SSH key login, optional login notifications, configuring the UFW firewall, and a Docker security reminder. The script takes the root password as a command line argument and detects the Ubuntu version to choose between socket activation and traditional service management.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/wlzh-skills)Was this useful?