diff --git a/README.md b/README.md index 3b92aee..dfe4b37 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 免费沉浸式 Codex 桌面主题。支持 Windows 与 macOS:下载安装月海版后,可从网页主题墙一键换肤,无需重启,也不会修改官方 Codex。 -[官网](https://moonsea-codex-theme.suguowen5.chatgpt.site/) · [主题墙](https://moonsea-codex-theme.suguowen5.chatgpt.site/themes) · [下载最新版](https://moonsea-codex-theme.suguowen5.chatgpt.site/download) +[官网](https://moonsea.kevinsu.xyz/) · [主题墙](https://moonsea.kevinsu.xyz/themes) · [下载最新版](https://moonsea.kevinsu.xyz/download) ![月海 Codex 主题预览](./web/public/og.png) @@ -12,7 +12,7 @@ ## 使用 -1. 打开[月海主题官网](https://moonsea-codex-theme.suguowen5.chatgpt.site),点击“下载”,网站会自动提供 Windows 或 macOS 安装包。 +1. 打开[月海主题官网](https://moonsea.kevinsu.xyz),点击“下载”,网站会自动提供 Windows 或 macOS 安装包。 2. Windows 运行 `Moonsea-Codex-Windows-x64-Setup.exe`;macOS 解压后右键打开 `Install.command`。 3. 打开桌面的“Codex 月海版”,回到官网选择主题。 diff --git "a/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274.png" "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274.png" new file mode 100644 index 0000000..8bbc6e9 Binary files /dev/null and "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274.png" differ diff --git "a/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/02-\347\272\242\346\234\210\346\212\230\346\211\207\345\211\247\345\234\272.png" "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/02-\347\272\242\346\234\210\346\212\230\346\211\207\345\211\247\345\234\272.png" new file mode 100644 index 0000000..c1e13f5 Binary files /dev/null and "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/02-\347\272\242\346\234\210\346\212\230\346\211\207\345\211\247\345\234\272.png" differ diff --git "a/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/03-\346\231\250\346\230\237\346\215\242\347\201\257\344\272\272.png" "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/03-\346\231\250\346\230\237\346\215\242\347\201\257\344\272\272.png" new file mode 100644 index 0000000..da47d95 Binary files /dev/null and "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/03-\346\231\250\346\230\237\346\215\242\347\201\257\344\272\272.png" differ diff --git "a/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/04-\347\235\241\350\216\262\346\230\237\346\270\257.png" "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/04-\347\235\241\350\216\262\346\230\237\346\270\257.png" new file mode 100644 index 0000000..4ef5177 Binary files /dev/null and "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/04-\347\235\241\350\216\262\346\230\237\346\270\257.png" differ diff --git "a/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/\345\217\221\345\270\203\346\226\207\346\241\210.md" "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/\345\217\221\345\270\203\346\226\207\346\241\210.md" new file mode 100644 index 0000000..9277a77 --- /dev/null +++ "b/docs/growth/xiaohongshu/2026-08-01-\345\275\227\346\230\237\347\220\206\345\217\221\347\253\240\351\261\274/\345\217\221\345\270\203\346\226\207\346\241\210.md" @@ -0,0 +1,39 @@ +# 章鱼给彗星剪尾焰|Codex壁纸 + +## 正文 + +今天的新 Codex 壁纸叫「彗星理发章鱼」。 + +我突然想到:如果彗星的尾焰也会长乱,宇宙里是不是会有一位专门替它理发的章鱼师傅? + +于是就有了这张原创搞怪壁纸:一只太空理发师章鱼,正在认真给彗星修剪尾焰。 + +为了让它真正适合工作区,我把主角和亮色集中在右侧,左侧保留较暗、低细节区域。代码、文件树和导航依然清楚,不会被背景抢走。 + +它已经上线月海主题墙,支持 Codex 和 WorkBuddy。连接月海助手后,在网页点击「应用」,系统会自动获取、校验并缓存资源,随后让壁纸生效,不需要手动搬文件。 + +今天一共上新四张,我最想先分享这一张。 + +下一位出现在宇宙里的离谱职业,你想看什么? + +## 最终标签 + +发布时请从小红书话题选择器逐个选择,确认显示为可点击话题对象,不要直接粘贴普通 `#` 文本。 + +#Codex壁纸 #Codex自定义主题 #codex皮肤 #WorkBuddy #原创壁纸 + +如果 `#原创壁纸` 的候选内容明显偏手机壁纸,则替换为 `#桌面美化`。 + +## 插图顺序 + +1. `01-彗星理发章鱼.png`:主推图 +2. `02-红月折扇剧场.png`:今日其他新品 +3. `03-晨星换灯人.png`:今日其他新品 +4. `04-睡莲星港.png`:今日其他新品 + +## SEO 复核 + +- 唯一主关键词:Codex壁纸 +- 不使用:`#VibeCoding`、`#AI编程工具`、`#效率神器`、`#AI进化生活howto` +- 不写“一键安装”;真实体验是连接月海助手后点击应用 +- 不写“自动生成壁纸”;自动完成的是获取、校验、缓存与应用 diff --git "a/docs/growth/\350\277\220\350\220\245\345\217\221\345\270\226\347\273\217\351\252\214.md" "b/docs/growth/\350\277\220\350\220\245\345\217\221\345\270\226\347\273\217\351\252\214.md" index cf00188..3dc1ab0 100644 --- "a/docs/growth/\350\277\220\350\220\245\345\217\221\345\270\226\347\273\217\351\252\214.md" +++ "b/docs/growth/\350\277\220\350\220\245\345\217\221\345\270\226\347\273\217\351\252\214.md" @@ -80,3 +80,37 @@ WorkBuddy 主题墙:https://moonsea-codex-theme.suguowen5.chatgpt.site/workbud - 5 篇项目笔记中只编辑了 2 篇:WorkBuddy 笔记补齐主词“WorkBuddy 换肤”;月海主题笔记只修正 macOS 验收边界,并把 7 个普通文本 `#` 替换为 `#Codex`、`#Codex自定义主题`、`#codex皮肤`、`#vibecoding` 四枚真话题。 - 《我把报错烤成了一张壁纸》《给 Codex 做了张动漫雨夜壁纸》《我做了个 Codex 换肤网站|免费开源》在当前登录环境已分别承接“Codex 壁纸”或“Codex 换肤网站”搜索,因此不为换标签而编辑。 - 站内搜索名次可能受账号和环境个性化影响,只用于判断是否值得扰动旧笔记,不写成全平台固定排名。 + +## 2026-08-01|原创角色壁纸四张上新 + +### 昨日证据与选题判断 + +- 站点后台截图显示 7 月 31 日 PV 为 94;7 日访客为 24、7 日 PV 为 159。PV 是页面访问次数,不能与去重访客数相加或互相替代;该截图未提供 7 月 31 日独立 UV,因此不推算日 UV。 +- 与前一轮后台快照相比,累计下载点击从 22 到 27,可识别下载访客从 2 到 5,重复下载从 6 到 8;这些是不同时间快照,不能写成精确 24 小时增长。 +- GitHub Release `v1.5.9` 的真实安装包下载合计 12 次(Codex macOS 3、Codex Windows 2、WorkBuddy macOS 4、WorkBuddy Windows 3);`update.json` 和 `update-workbuddy.json` 是更新检查,不计下载。 +- X 已公开的 WorkBuddy 预告为 87 浏览、0 可见互动;深夜 Debug 面包房为 73 浏览、0 可见互动。说明纯功能预告和单主题链接还没有得到互动验证,今日优先选强角色画面组合,但不夸大转化。 + +### 今日主题成品与选品 + +| 主题 | 生成 | API 上传 | 公开访问 | 网页应用验证 | 选用 | +| --- | --- | --- | --- | --- | --- | +| 晨星换灯人 | 已生成 | 201 成功 | 原图与清单可访问 | Codex / WorkBuddy 均已验证 | 组图候选 | +| 红月折扇剧场 | 已生成 | 201 成功 | 原图与清单可访问 | Codex / WorkBuddy 均已验证 | 组图候选 | +| 彗星理发章鱼 | 已生成 | 201 成功 | 原图与清单可访问 | Codex / WorkBuddy 均已验证 | 主推 | +| 睡莲星港 | 已生成 | 201 成功 | 原图与清单可访问 | Codex / WorkBuddy 均已验证 | 素材包补充 | + +### 当日渠道状态 + +| 平台 | 内容形式 | 状态 | 证据与处理 | +| --- | --- | --- | --- | +| 小红书 | 4 图人工发布素材包 | 素材已准备,未操作平台 | 主关键词为“Codex壁纸”;标题、正文、最终候选话题及 4 张实图位于 `docs/growth/xiaohongshu/2026-08-01-彗星理发章鱼/`,由用户自行发布 | +| X | 3 图原生组图短文 | 未发布 | 公开个人页最新内容仍是约 23 小时前的 WorkBuddy 帖;自动化浏览资料当前未保持 X 登录,不能把之前未核实的发送动作记为发布,也不重复提交 | +| Reddit | 不发布 | 主动跳过 | 昨日内容曾被移除,今天没有匹配且规则明确的新社区内容 | +| GitHub | 不更新 | 主动跳过 | 今日为远程动态主题上新,没有新的 Release 或可验证技术变更,不制造无意义公告 | + +### 有效做法与下一次假设 + +- 四张成品先完成“生成、上传、公开、清单可见、网页应用”五步验证,再选主推,避免把仅有图片的草稿当作上新。 +- 小红书只沉淀人工发布素材包;标题以主关键词收束,话题必须在用户发布时从平台候选中逐个选择。 +- X 发布完成的最低证据是公开个人页出现最新帖子及独立状态链接;仅看到编辑器或点击按钮都不算发布。 +- `moonsea.kevinsu.xyz` 已完成 CNAME 与验证记录配置,Sites 绑定和 HTTPS 均为 active;后续将把标准网址、sitemap 与分享链接迁移到新域名,并与月海助手的网页控制来源一起随版本发布,避免“网页能开、应用按钮失效”。 diff --git a/docs/wiki/Home.md b/docs/wiki/Home.md index 7e8f673..aaf20eb 100644 --- a/docs/wiki/Home.md +++ b/docs/wiki/Home.md @@ -4,7 +4,7 @@ ## 开始使用 -1. 打开[月海主题官网](https://moonsea-codex-theme.suguowen5.chatgpt.site)。 +1. 打开[月海主题官网](https://moonsea.kevinsu.xyz)。 2. 点击“下载”,网站会自动识别 Windows 或 macOS。 3. 完成安装并打开“Codex 月海版”。 4. 回到官网主题墙,选择壁纸并点击应用。 diff --git a/docs/wiki/_Sidebar.md b/docs/wiki/_Sidebar.md index 3a2cfe1..7de1dea 100644 --- a/docs/wiki/_Sidebar.md +++ b/docs/wiki/_Sidebar.md @@ -6,4 +6,4 @@ - [更新与卸载](更新与卸载) - [常见问题](常见问题) -[打开月海主题官网](https://moonsea-codex-theme.suguowen5.chatgpt.site) +[打开月海主题官网](https://moonsea.kevinsu.xyz) diff --git a/package-lock.json b/package-lock.json index 0c8d3b8..3e5baf2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "moonsea-codex-theme", - "version": "1.5.9", + "version": "1.5.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "moonsea-codex-theme", - "version": "1.5.9", + "version": "1.5.10", "license": "MIT", "devDependencies": { "@electron/asar": "^4.2.0", diff --git a/package.json b/package.json index 762fc95..c99daf8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "moonsea-codex-theme", - "version": "1.5.9", + "version": "1.5.10", "description": "通过本地助手即时切换 Codex 免费渐变壁纸与 Pro 精选壁纸", "type": "module", "scripts": { diff --git a/scripts/ci/probe-release.sh b/scripts/ci/probe-release.sh index 05d8ac9..d0dac9e 100644 --- a/scripts/ci/probe-release.sh +++ b/scripts/ci/probe-release.sh @@ -3,7 +3,7 @@ set -euo pipefail release_version="${1:?用法:probe-release.sh }" repository="${GITHUB_REPOSITORY:-413162826/moonsea-codex-theme}" -site_url="${MOONSEA_SITE_URL:-https://moonsea-codex-theme.suguowen5.chatgpt.site}" +site_url="${MOONSEA_SITE_URL:-https://moonsea.kevinsu.xyz}" manifest_url="https://github.com/$repository/releases/latest/download/update.json" workbuddy_manifest_url="https://github.com/$repository/releases/latest/download/update-workbuddy.json" temp_root="$(mktemp -d)" diff --git a/scripts/sync-wallpapers.mjs b/scripts/sync-wallpapers.mjs index 4ae9df7..100e67a 100644 --- a/scripts/sync-wallpapers.mjs +++ b/scripts/sync-wallpapers.mjs @@ -64,7 +64,7 @@ const remoteProThemes = PRO_THEMES.map((theme) => { contentType: "image/png", sha256: crypto.createHash("sha256").update(bytes).digest("hex"), size: bytes.length, - url: `https://moonsea-codex-theme.suguowen5.chatgpt.site/theme-assets/${file}`, + url: `https://moonsea.kevinsu.xyz/theme-assets/${file}`, }, }; }); diff --git a/site/app.js b/site/app.js index d12021a..ba73671 100644 --- a/site/app.js +++ b/site/app.js @@ -72,7 +72,7 @@ function updateCardActions() { } function configureDownload() { - elements.downloadLink.href = "https://moonsea-codex-theme.suguowen5.chatgpt.site/download"; + elements.downloadLink.href = "https://moonsea.kevinsu.xyz/download"; elements.downloadLabel.textContent = "下载"; } diff --git a/site/index.html b/site/index.html index 6459cca..df7b5ae 100644 --- a/site/index.html +++ b/site/index.html @@ -34,7 +34,7 @@ - + 下载 diff --git a/site/theme-catalog-v1.json b/site/theme-catalog-v1.json index e1ef338..bb59618 100644 --- a/site/theme-catalog-v1.json +++ b/site/theme-catalog-v1.json @@ -1019,7 +1019,7 @@ "contentType": "image/png", "sha256": "e9d3edaf05dd7229fe5783310a03780725405518f914f1b5eaff16953c54ac85", "size": 1146286, - "url": "https://moonsea-codex-theme.suguowen5.chatgpt.site/theme-assets/tide-dragon-realm.png" + "url": "https://moonsea.kevinsu.xyz/theme-assets/tide-dragon-realm.png" } }, { @@ -1080,7 +1080,7 @@ "contentType": "image/png", "sha256": "01a2e405006eda44fb8e6bcd801e64b16ba0d1cd91724ec4a02de87b534fe734", "size": 1867778, - "url": "https://moonsea-codex-theme.suguowen5.chatgpt.site/theme-assets/moonlit-silent.png" + "url": "https://moonsea.kevinsu.xyz/theme-assets/moonlit-silent.png" } } ] diff --git a/src/manager-core.mjs b/src/manager-core.mjs index 14df76b..f9088d0 100644 --- a/src/manager-core.mjs +++ b/src/manager-core.mjs @@ -9,7 +9,10 @@ export const MANAGER_PORT = Number.parseInt(process.env.MOONSEA_MANAGER_PORT ?? if (!Number.isInteger(MANAGER_PORT) || MANAGER_PORT < 1 || MANAGER_PORT > 65535) { throw new Error("月海助手端口无效"); } -export const PUBLIC_SITE_ORIGIN = "https://moonsea-codex-theme.suguowen5.chatgpt.site"; +export const PUBLIC_SITE_ORIGIN = "https://moonsea.kevinsu.xyz"; +export const LEGACY_SITE_ORIGINS = new Set([ + "https://moonsea-codex-theme.suguowen5.chatgpt.site", +]); // 客户端身份:codex(默认)或 workbuddy。WorkBuddy 通过环境变量注入, // 其官方应用包名、调试端口与主题桥名由对应安装包/启动脚本提供。 @@ -39,7 +42,7 @@ const MIME_TYPES = new Map([ export function isAllowedOrigin(origin) { if (!origin) return true; if (LOCAL_ORIGINS.has(origin)) return true; - return origin === PUBLIC_SITE_ORIGIN; + return origin === PUBLIC_SITE_ORIGIN || LEGACY_SITE_ORIGINS.has(origin); } export function isLocalAdminOrigin(origin) { diff --git a/src/telemetry-service.mjs b/src/telemetry-service.mjs index 41d8115..270d300 100644 --- a/src/telemetry-service.mjs +++ b/src/telemetry-service.mjs @@ -2,7 +2,7 @@ import fs from "node:fs"; import path from "node:path"; import { randomUUID } from "node:crypto"; -export const TELEMETRY_ENDPOINT = "https://moonsea-codex-theme.suguowen5.chatgpt.site/api/telemetry"; +export const TELEMETRY_ENDPOINT = "https://moonsea.kevinsu.xyz/api/telemetry"; export const TELEMETRY_INTERVAL_MS = 5 * 60 * 1000; export const TELEMETRY_RETRY_MS = 5 * 60 * 1000; diff --git a/src/theme-delivery-service.mjs b/src/theme-delivery-service.mjs index 2c7a0cd..5540f6b 100644 --- a/src/theme-delivery-service.mjs +++ b/src/theme-delivery-service.mjs @@ -3,7 +3,7 @@ import fs from "node:fs"; import path from "node:path"; export const DEFAULT_THEME_MANIFEST_URL = - "https://moonsea-codex-theme.suguowen5.chatgpt.site/theme-catalog-v1.json"; + "https://moonsea.kevinsu.xyz/theme-catalog-v1.json"; const MAX_THEME_ASSET_SIZE = 12 * 1024 * 1024; const THEME_ID = /^[a-z0-9-]+$/; diff --git a/src/version.mjs b/src/version.mjs index 312c1f1..1596be6 100644 --- a/src/version.mjs +++ b/src/version.mjs @@ -1 +1 @@ -export const APP_VERSION = "1.5.9"; +export const APP_VERSION = "1.5.10"; diff --git a/tests/manager.test.mjs b/tests/manager.test.mjs index 386bd0b..41bbbed 100644 --- a/tests/manager.test.mjs +++ b/tests/manager.test.mjs @@ -115,6 +115,7 @@ test("WorkBuddy 助手只连接 renderer 主页面和固定主题桥", () => { test("本地助手只接受官网和本机页面", () => { assert.equal(isAllowedOrigin(PUBLIC_SITE_ORIGIN), true); + assert.equal(isAllowedOrigin("https://moonsea-codex-theme.suguowen5.chatgpt.site"), true); assert.equal(isAllowedOrigin("http://127.0.0.1:17321"), true); assert.equal(isAllowedOrigin("app://-"), true); assert.equal(isAllowedOrigin("https://example.com"), false); @@ -468,7 +469,7 @@ test("壁纸目录同时生成官网预览与安装资源", () => { assert.equal(theme.asset.contentType, "image/png"); assert.equal( theme.asset.url, - `https://moonsea-codex-theme.suguowen5.chatgpt.site/theme-assets/${wallpaper.file}`, + `https://moonsea.kevinsu.xyz/theme-assets/${wallpaper.file}`, ); assert.equal(Object.hasOwn(theme.runtime, "wallpaper"), false); } @@ -477,7 +478,7 @@ test("壁纸目录同时生成官网预览与安装资源", () => { test("官网按系统直下安装包且入口使用通用命名", () => { const website = fs.readFileSync(path.join(projectRoot, "site", "app.js"), "utf8"); const page = fs.readFileSync(path.join(projectRoot, "site", "index.html"), "utf8"); - assert.match(website, /suguowen5\.chatgpt\.site\/download/); + assert.match(website, /moonsea\.kevinsu\.xyz\/download/); assert.match(website, /downloadLabel\.textContent = "下载"/); assert.doesNotMatch(website, /Moonsea-Codex-Windows|Moonsea-Codex-macOS/); assert.match(page, />下载<\/span>/); diff --git a/web/app/layout.tsx b/web/app/layout.tsx index 3aaf4ed..5e53fcd 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -3,6 +3,31 @@ import "./globals.css"; import { SITE_NAME, SITE_URL } from "../lib/site"; import { PageViewTracker } from "./page-view-tracker"; +const structuredData = { + "@context": "https://schema.org", + "@graph": [ + { + "@type": "Organization", + "@id": `${SITE_URL}#organization`, + name: "月海主题实验室", + url: SITE_URL.toString(), + sameAs: [ + "https://github.com/413162826/moonsea-codex-theme", + "https://x.com/HmafVj0nsz59334", + ], + }, + { + "@type": "WebSite", + "@id": `${SITE_URL}#website`, + url: SITE_URL.toString(), + name: "月海主题", + description: "免费主题,让 Codex / WorkBuddy 更沉浸。", + publisher: { "@id": `${SITE_URL}#organization` }, + inLanguage: "zh-CN", + }, + ], +}; + export const metadata: Metadata = { metadataBase: SITE_URL, title: { @@ -34,6 +59,10 @@ export default function RootLayout({ return ( +