Wjs Converting Wp To Hugo

SKILL图像处理
图像处理 未标注权限 许可证不明确

Use when migrating a WordPress site to a Hugo static site on GitHub Pages from a WXR export (.xml) plus the wp-content/uploads folder — preserving /archives/<id>/ URLs, localizing images, and deploying via GitHub Actions. Triggers — "把 WordPress 迁成 Hugo", "wordpress 转静态站", "migrate WordPress to Hugo", "WXR to Hugo", "publish WordPress to GitHub Pages", "/wjs-converting-wp-to-hugo".

一句话选型结论

按资料字段整理

Wjs Converting Wp To Hugo是图像处理类的 Agent Skill,安装方式:GitHub 仓库,权限级别未标注,许可证不明确,没有现成安装命令,需按说明手动放置 SKILL.md。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类图像处理 安装方式GitHub 仓库 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 claude-skills
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

GitHub 仓库
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    按安装说明或仓库 README,把 SKILL.md 放到客户端的 skills 目录(一般一个技能一个文件夹)。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

图像处理
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方jianshuo仓库 claude-skills · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式GitHub 仓库安装包 jianshuo/claude-skills
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 2026-06-04
正文体量10.7 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
改图与修图

按描述调整图片内容与风格。

批量处理图片

统一尺寸、格式与命名。

生成图像说明

给图片补描述与标签。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 基础信息齐全,可以先按说明装一个试试。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有现成安装命令,要按安装说明或仓库 README 手动放置。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在图像处理场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Wjs Converting Wp To Hugo当前 未标注权限 GitHub 仓库 未标注 未标注 无
AI 图像生成 调用外部服务 GitHub 仓库 436.6 万 Codex、Claude、Cursor 有
OpenAI 图像生成 联网访问 ClawHub 市场 190.7 万 OpenClaw 有
针迹设计品味 调用外部服务 GitHub 仓库 64.6 万 Codex、Claude、Cursor 有
QQ 空间照片 联网访问 ClawHub 市场 54.3 万 OpenClaw 有
图像 联网访问 ClawHub 市场 52.6 万 OpenClaw 有

SKILL.md 全文

10.7 KB
模型实际读到的说明书原文,来自技能仓库

wjs-converting-wp-to-hugo

把任意 WordPress 站迁成 Hugo + Markdown + git 静态站,部署到 GitHub Pages。
输入只需两样,全程离线、零第三方依赖:

  1. WXR 导出 — WordPress 后台 工具 → 导出 → 所有内容 得到的 *.xml(包含全部文章/页面/分类/标签的 HTML 正文)。
  2. uploads/ 文件夹 — 站点的 wp-content/uploads/(按 年/月 分目录的图片与附件)。

产出:content/*.md + static/wp-content/uploads/ + 手写极简主题,Hugo 构建,GitHub Actions 发布。
全站 URL 保持 /archives/&lt;数字&gt;/ 不变,老链接 100% 不断。

When to use

  • 用户有一个 WordPress 站,想去掉动态/评论/数据库,改成 git + Markdown 维护。
  • 用户提供了 WXR .xml 和 uploads/(或能拿到)。
  • 老链接必须保留(SEO / 外部引用)。

When NOT to use

  • 没有 WXR,只有线上站 → 先在 WP 后台导出,或用 REST API 拉 JSON(本 skill 走 WXR,更可移植)。
  • 要保留评论/会员/搜索等动态功能 → 静态站做不了,不适用。
  • 站点极小(几篇)→ 手抄更快。

Core principle

WXR 是唯一真相源,uploads/ 直接当静态资源。
图片不下载、不改名:把 uploads/ 拷进 static/wp-content/uploads/,正文里的图片 URL 改成 根相对 /wp-content/uploads/... 即可原地解析。文章 URL 从 &lt;link&gt; 原样保留。转换器是纯函数 + 单元测试,先测后写。

Pipeline

WXR .xml + uploads/  →  wxr_to_hugo.py  →  content/*.md + static/wp-content/uploads/  →  hugo build  →  GitHub Actions  →  Pages

Two decisions you MUST ask the user (do not silently decide)

WordPress 里有两类内容静态站处理不了,必须问用户,别擅自发布:

  1. 密码保护文章(&lt;wp:post_password&gt; 非空)。静态站无密码门 → 发布就是公开。
    选项:排除(默认,最安全,URL 会 404)/ 公开发布 / 转成 draft。
    核对计数务必用 ElementTree(即 parse_items),别用裸 grep:&lt;wp:post_password&gt; 的值是 CDATA 包裹的(&lt;![CDATA[secret]]&gt;),grep &#x27;&lt;wp:post_password&gt;[^&lt;]*&lt;/...&gt;&#x27; 会把每条都当空 → 误报「0 篇密码文章」漏掉真有密码的文章(maggiacito.com 实战,差点漏发 1 篇)。
  2. WordPress 脚手架页(sample-page、login/register/findpassword 等插件短代码页、空页、登录设计器预览页)。
    默认排除——它们不是内容。is_real_page() 已按「空正文 / 单条短代码 / 默认 slug 黑名单」过滤。

转换器对这两类都已实现排除;用 AskUserQuestion 确认后再跑全量。

Steps

1. 放好输入,建工程

mkdir -p ~/code/&lt;site&gt; &amp;&amp; cd ~/code/&lt;site&gt; &amp;&amp; git init
# 把 WXR 拷进来(注意:WXR 含密码文章正文 + 作者邮箱,勿提交!见「安全」)
cp /path/to/&lt;site&gt;.WordPress.*.xml .
# uploads/ 放到工程根(含子目录 年/月)。注意它可能含 wordpress_db.sql —— 勿提交!
cp -R /path/to/uploads ./uploads
mkdir -p scripts tests content/posts layouts/_default layouts/partials static

拷入本 skill 的资产(保持目录对应):

SK=&quot;$HOME/.claude/skills/wjs-converting-wp-to-hugo&quot;
cp &quot;$SK&quot;/scripts/*.py scripts/                       # wxr_to_hugo.py, verify_build.py
cp &quot;$SK&quot;/tests/test_wxr.py tests/                     # 单元测试(须放 tests/,与 scripts/ 同级)
cp -R &quot;$SK&quot;/assets/layouts/. layouts/                 # 手写主题
cp &quot;$SK&quot;/assets/hugo.toml .                           # 改 title / baseURL / 菜单
mkdir -p .github/workflows &amp;&amp; cp &quot;$SK&quot;/assets/workflow-hugo.yml .github/workflows/hugo.yml
cp &quot;$SK&quot;/assets/gitignore .gitignore
printf &#x27;%s&#x27; &#x27;&lt;你的域名,如 huixianju.cn&gt;&#x27; &gt; static/CNAME   # 自定义域名

2. 先跑测试(转换器是 TDD 的)

python3 tests/test_wxr.py     # 期望 ALL PASS;改任何转换逻辑都先加失败测试

3. 确认计数 + 跑全量转换

python3 scripts/wxr_to_hugo.py &lt;site&gt;.WordPress.*.xml

打印报告:posts / pages / images / uploads_copied / warnings。核对文章数与 WP 后台一致。
warnings 会列出:空正文文章、被跳过的脚手架页、外链图片。

4. 构建并断言所有老链接命中

hugo --gc --minify              # 没装:brew install hugo(要 extended)
python3 scripts/verify_build.py &lt;site&gt;.WordPress.*.xml   # checked N posts, missing 0

5. 本地肉眼核对

hugo server -p 1313

对照线上抽查 5 篇(含 1 篇图片帖、1 篇多链接帖):标题、列表、链接、图片、视频是否正常。
关键:链接应是页面相对(../../...),图片从本地 /wp-content/uploads/ 加载,不是从线上拉。

6. 推到 GitHub(公开仓库见「安全」)

gh repo create &lt;site&gt; --public --source=. --remote=origin
git push -u origin main

7. 开 Pages → Actions,先开后跑

gh api -X POST repos/&lt;owner&gt;/&lt;site&gt;/pages -f build_type=workflow

坑:若 Pages 还没开就 push,首个 Action 会在 configure-pages 处 404 失败。开了 Pages 后重跑:

gh workflow run &quot;Deploy Hugo site to Pages&quot; --repo &lt;owner&gt;/&lt;site&gt;
gh run watch &lt;run-id&gt; --repo &lt;owner&gt;/&lt;site&gt; --exit-status

验证临时地址 https://&lt;owner&gt;.github.io/&lt;site&gt;/:home / 一篇 post / categories / index.xml / 一张图都 200。
(刚部署时图片可能短暂 301,是 CDN 预热,跟随重定向最终 200。)

8. DNS 切换(操作者手动,验证通过后再做)

先确认临时地址全站无误,WP 仍在线,零风险。然后在 DNS 商(如 Cloudflare)把域名指向 Pages:
- apex:A 记录 → 185.199.108.153 / 109.153 / 110.153 / 111.153,或 CNAME → &lt;owner&gt;.github.io。
- 用 Cloudflare 橙云代理时,SSL/TLS 设 Full;首次签证书可临时灰云(仅 DNS)。
- DNS 生效后 Pages 勾 Enforce HTTPS。
- 线上稳定数日后再下线老 WP(先停机留备份,确认无需回退再彻底删)。

转换器踩过的坑(已在 wxr_to_hugo.py 修好,勿回退)

坑 现象 修法
超链接丢 href &lt;a href&gt; 只剩文字,URL 丢了 &lt;a&gt; 内攒文字,闭合时输出 [文字](href)
相册多余 -(figure 版) 图片帖每张图前一个空列表符 figure 栈识别 wp-block-gallery,相册内 &lt;li&gt; 不输出 -
相册多余 -(ul 版) 早期 Gutenberg 把 wp-block-gallery 放 &lt;ul&gt;(无 &lt;figure&gt; 包裹),上一行的 figure 判定漏掉,每图前留孤立 - _ul_stack 同样识别 &lt;ul class=wp-block-gallery&gt;,相册内 &lt;li&gt; 不输出 -(maggiacito.com 实战)
CJK permalink 编码 permalink 是 URL 编码的中文(/sculpting-in-time/%e4%ba%8c…/)。原样保留会让 Hugo 建字面 %e4%.. 目录,服务器把请求里的 %xx 解码后对不上 → 老链接全断 _norm_url() 用 unquote() 把路径解码成中文,Hugo 建 UTF-8 目录;静态主机对入站 %xx 解码即命中,编码/解码两种老链接都活。数字 /archives/&lt;id&gt;/ 不受影响(maggiacito.com 实战)
图片从线上加载 正文图是绝对 https://站点/wp-content/... _root_relative() 把自托管图改成 /wp-content/...;外链图保持绝对
视频/嵌入丢失 &lt;video&gt;/&lt;iframe&gt; 正文变空 原样透传为 HTML(hugo.toml 开 goldmark unsafe=true)
lastmod 空 有的 WXR 无 wp:post_modified 缺失时回退到 wp:post_date
经典编辑器软换行 正文裸 \n 被吃 handle_data 保留裸文本换行
实体没解码 标题里 &amp;#038; html.unescape();标题内引号换成单引号
发新文跳号 手动起 URL 号易撞 next_archive_id() 扫现有最大号 +1

链接可移植性

hugo.toml 设 relativeURLs = true + canonifyURLs = false,Hugo 把所有链接输出成页面相对
(../../archives/123/)。这样 public/ 在 file://、子路径(github.io/&lt;repo&gt;/)、自定义域名下都能点。
图片 URL 在转换器里已改成根相对,Hugo 再相对化,本地/线上都解析。

安全(公开仓库必读)

WXR 和原始 uploads/ 含敏感数据,绝不进 git:

  • WXR .xml 含密码保护文章的正文(正是你从站点排除的内容)和作者邮箱。
  • uploads/wordpress_db.sql 是整库 dump(用户、密码哈希)。转换器拷贝时已跳过 .sql/.DS_Store。
  • assets/gitignore 用根锚定 /uploads/(不能写 uploads/,否则会连 static/wp-content/uploads/ 一起忽略,图片就传不上去)。它还忽略 *.WordPress.*.xml、public/、resources/。
  • 若 WXR 之前已被 commit:gitignore 对已跟踪文件无效,要先 git rm --cached &lt;xml&gt;。
  • 推公开仓库前,若历史里有 WXR、含基础设施细节的设计文档(实例 ID / IP / 云命令)→ 重建干净历史:
    bash git checkout --orphan _clean &amp;&amp; git add -A &amp;&amp; git commit -m &quot;...&quot; &amp;&amp; git branch -D main &amp;&amp; git branch -m main
    确认 git diff --cached --name-only | grep -iE &#x27;WordPress.*xml|wordpress_db|\.sql$&#x27; 为空再推。

主题

assets/layouts/ 是手写极简主题,零外部依赖(不用 submodule / PaperMod,省掉外来构建代码与权限麻烦)。
CJK 友好、首页文章列表、分类页、按年归档、文章页上下篇、/feed/ → /index.xml 老 RSS 兼容。
改 static/CNAME 为目标域名。

以后写新文章

ID=$(python3 -c &quot;import sys;sys.path.insert(0,&#x27;scripts&#x27;);import wxr_to_hugo;print(wxr_to_hugo.next_archive_id(&#x27;content&#x27;))&quot;)
# 建 content/posts/$ID.md,front matter 写 url: /archives/$ID/,与老文章同一号段
git push   # Action 自动构建上线

验收

  • [ ] 文章数与 WP 后台一致;每个 /archives/&lt;id&gt;/ 在 public/ 命中(verify_build.py)
  • [ ] 图片全本地化,无外链 wp-content;视频/iframe 透传可播
  • [ ] 密码文章、脚手架页已按用户决定处理
  • [ ] 链接页面相对,file:///子路径/域名都可点
  • [ ] WXR / db.sql / 原始 uploads 未进 git;公开仓库历史无敏感数据
  • [ ] 临时 Pages 地址全站 200,DNS 切换后老链接 200

常见问题

5 问
答案由本站依据条目字段整理
Wjs Converting Wp To Hugo怎么安装?

没有现成安装命令:按安装说明或仓库 README,把 SKILL.md 放进客户端的 skills 目录(一般一个技能一个文件夹)。

Wjs Converting Wp To Hugo支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Wjs Converting Wp To Hugo权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Wjs Converting Wp To Hugo收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Wjs Converting Wp To Hugo用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。