ASTRAVAULT · CLAUDE CODE SKILLS

项目 Skills 使用指南

本仓库安装了 7 个 Claude Code 项目级 skill,覆盖从「整站抓取归档」到「React 重建」「内容回写」「新经纪人建站」「视频转录知识库」,再到「长视频主脚本」与「短视频切条文案」的完整内容生产工作流。直接对 Claude 说出触发词即可调用。

.claude/skills/<skill-name>/SKILL.md

一览表

Skill用途输入输出
scrape-static-website 把整个网站抓取归档为 Obsidian Markdown 库(含截图与图片资产) 网站域名 / sitemap.xml pages/*.md + assets/ + screenshots/ + sitemap.md
page-to-react 把 mkbayarea.com 任意页面转成 React 数据文件 + 组件模板 页面截图 + URL lib/<category>/<slug>.ts + components/<category>/<Name>Page.tsx
apply-content-edits 把 Cindy 在内容编辑器里改好的 Markdown 批量回写到 React 站点源码 react-app/content-edits/*.md 更新后的 lib/**/*.ts / *.mdx / 路由 TSX 文件
realtor-site-builder 为新经纪人从零生成整套中文房产网站内容包(8 步流程) 经纪人问卷 / 现有网站 / 访谈 <brand-slug>/ 完整内容目录 + design-system.html + sitemap.html
chanscribe 抓取视频源(单视频/播放列表/整频道)并用 FunASR 转录为 Obsidian 中文笔记库 任何 yt-dlp 支持的视频链接 Vault/ 转录笔记 + video_list.csv + RawMedia/*.mp3
cindy-longform-script 为 Cindy Wang 团队写 10–13 分钟中文知识型长视频主脚本(只讲数据、软性转化) Campaign brief(选题/痛点/Freebie/CTA) 单个 *.md:标题封面 + Hook + 5段正文 + 软广位 + CTA + 数据来源核对表
cindy-shorts-clips 把 campaign/长视频拆成一组(通常 5 条)60–90 秒竖屏短视频逐字稿 长视频主片 / campaign brief 单个 *.md:5 条逐字稿(钩子/时间戳/漏斗分工/CTA)+ 运营对照表
🕸

scrape-static-website

网站归档

本仓库的核心 skill。将一个网站的全部页面归档为 Obsidian Flavored Markdown(含 YAML frontmatter、整页截图、下载的图片资产),从 sitemap.xml 自动发现 URL,5 页一批并行抓取,并维护 sitemap.md 进度表(✅/⬜)。仓库中 websites/ 下的 7 个站点归档均由它产出。

触发词

scrape the whole sitearchive this website to Markdown crawl the sitemapconvert website to Obsidian vault /scrape-static-website

工作流

  1. 发现 URLcurl sitemap.xml 提取全部链接,过滤标准排除项(/privacy/terms/videos/*/en/*)。
  2. 生成 sitemap.md — 按板块分组的状态表,⬜ 待抓 / ✅ 完成。
  3. 并行抓取 — 两段管线:scrape-page.js(Puppeteer 渲染 → JSON)→ gen-md.js(JSON → Obsidian MD),5 页一批,批间自动续跑并打印进度条。
  4. 回写状态 — 全部完成后将 sitemap.md 中的 ⬜ 更新为 ✅。

单页命令

node .claude/skills/scrape-static-website/scripts/scrape-page.js \
  "<url>" "<project-root>" 2>/dev/null \
  | node .claude/skills/scrape-static-website/scripts/gen-md.js "<project-root>"
依赖:Puppeteer 必须安装在 /tmp/pptr-shot/node_modules/puppeteer。针对新站点通常需微调 gen-md.js 里的 tagsForPath()(URL→标签映射)和 stripNavFooter()(导航/页脚清理规则)。
⚛️

page-to-react

React 重建

给它一张页面截图 + URL,它把 mkbayarea.com 的任意页面转成两个文件:类型化的 TypeScript 数据文件(全部文案作为常量,品牌名替换为 [Brand Name] 占位符)+ 复刻视觉布局的 React TSX 组件。服务于 react-app/app/site-mkbayarea/ 的 React Router v7 重建。

触发词

build / implement 这个页面replicate make a React version制作(截图+URL)

工作流

  1. 解析输入 — 从 URL 推导 slug,定位本地 HTML 源:websites/mkbayarea.com/html/<category>/<slug>.html
  2. 双源提取 — 并行解析 HTML 文本结构与截图视觉版式,交叉校验(不一致时以 HTML 为准)。
  3. 映射类型 — 按视觉模式对照表映射到 HeroData / Stat[] / Step[] / Faq[] / CtaData 等共享类型。
  4. 写数据文件lib/<category>/<slug-leaf>.ts,中文文案逐字保留、不截断。
  5. 写组件components/<category>/<Name>Page.tsx,复用 components/shared/sections.tsx 的共享原语(PageHero、StatBand、FaqSection…),CSS 只用 mk-* 类名。
  6. 汇报 — 文件路径、各节数量、HTML 与截图的差异、需要补进 globals.css 的新类。
生成前必须先读 lib/shared-types.tscomponents/shared/sections.tsx 作为规范参照。品牌与人名一律替换成 [Brand Name] / [Realtor Name 1] 占位符。
✏️

apply-content-edits

内容回写

Cindy 用 content-editor 网页应用编辑页面文案后,会产出 react-app/content-edits/*.md(每个 URL 一个文件,每个可编辑字段带 <!-- field.path | 标签 --> 锚点)。此 skill 将这些改动 diff 后批量回写到真正的站点源码。

触发词

apply content edits应用 Cindy 的修改 把 content-edits 打回网站apply the edited markdown

工作流

  1. 枚举 — 找出所有 status: pending 的编辑文件并报给用户。
  2. 解析 — 读 frontmatter(data_file / kind / slug / family),按锚点切出 { path, value } 对。
  3. 回写 — 按 kind 分三路:
    · ts → 按点路径(如 faqs[2].answer)在数据文件里精确字符串替换,只改变化了的字段;
    · mdxbody 锚点整体写入 content/knowledge/<slug>.mdx,meta 字段回写 lib/knowledge/meta.ts
    · tsx → 按索引锚点(text[0]…)替换路由文件中第 i 个中文字符串字面量。
  4. 验证pnpm --filter site-mkbayarea typecheck,修好自己弄坏的东西。
  5. 标记 + 汇报 — frontmatter 改为 status: applied,报告每个文件改了几处、哪些需要人工裁决。
只作用于 react-app 源码,绝不动 websites/mkbayarea.com 归档。字段路径在源码中已不存在时不猜测、直接上报。
🏠

realtor-site-builder

新经纪人建站

以 mkbayarea.com + jingxuehomes.com 为模板,为新经纪人从零生成完整中文网站内容包:结构化 Markdown 页面目录(买房/卖房/市场行情/学区指南/知识库/案例库)、可视化 sitemap.html、design-system.html。8 步流程,每步与客户确认后再继续(步骤门控)。

触发词

build me a realtor website新经纪人建站 帮我做房产网站clone/adapt mkbayarea.com for a new agent

八步流程

步骤内容产出
1收集经纪人资料(Fillout 问卷 / 现有网站抓取 / 社媒),生成 5 个目标客户画像realtor-profile.md(10 区块)
2服务区域勾选 — 强制门槛,城市清单直接决定后续生成哪些子页目录结构 + 十三、服务区域覆盖
3确认品牌风格(4 套预设配色可选),生成设计系统design-system.html
4生成 sitemap 骨架(10 区块,1–3、10 填实,4–9 留空)sitemap.html + update-sitemap.py
5按选定城市逐城生成买/卖/市场/学区页pages/buy|sell|market|schools/
6知识库 ≥6 篇 + STAR 格式案例 ≥4 个pages/knowledge|cases/
7运行 python3 update-sitemap.py 回填六大内容区块的文件数与文章链接sitemap 徽章同步
8品牌污染扫描(grep 模板品牌残留)+ 一致性审计完成清单
铁律:全部内容简体中文;绝不编造数据(没有真实中位价就写 [待补充]);画像贯穿买卖页结构、知识库选题与案例;每步结束必须请客户确认。参考资料在 references/(profile-schema / sitemap-structure / content-templates / area-data)。
🎙

chanscribe

视频转录

把一个视频源(单视频、播放列表或整个频道——任何 yt-dlp 支持的网站)抓取并转录为带 YAML frontmatter 的 Obsidian 中文笔记库。中文内容用本地 FunASR(paraformer-zh)而非 Whisper。幂等设计:已有音频/字幕/笔记自动跳过,可放心重跑做增量更新。仓库中的湾区房产视频库(Kevin Mo / Marie Wang 频道转录)即由它产出。

触发词

抓这个视频转录这条链接建 Obsidian 转录库 抓取/转录某个频道

三种模式

模式做什么脚本链
fetch拉视频清单 CSV + 下载 mp3 + 尝试下载官方/自动字幕00 → 01 → 02
transcribe对无字幕视频跑 FunASR,清洗成 .md 并按「日期_标题」重命名00 → 03 → 04 → 10
all抓取 + 转录一条龙00 → 01 → 02 → 03 → 04 → 10

调用前需确认的参数

  1. --source-url — 视频/播放列表/频道链接(单视频与频道走同一套命令,无需预判类型)
  2. --source-name — 本地文件夹名(英文+下划线)
  3. --project-dir — 项目根目录,脚本在其下建 Vault/RawMedia/
  4. --source-display — frontmatter 展示的来源名(transcribe/all 需要)
python3 .claude/skills/chanscribe/scripts/01_fetch_source.py \
  --source-url "https://www.youtube.com/@xxx/videos" \
  --source-name "XXX_Channel" \
  --project-dir "/path/to/project"
Step 0 环境检查会自动安装缺失的 yt-dlp / ffmpeg / funasr。FunASR 首次运行会下载几百 MB 模型;模型为中文专用,非中文内容需换 Whisper。批量转录数百个视频耗时数小时,需 nohup … & 后台跑并轮询真实 PID。
🎬

cindy-longform-script

长视频脚本

Cindy Wang 湾区房产团队专属的长视频主脚本写作工具。为面向旧金山/硅谷科技高收入中文家庭(RSU 重仓、买房/换房/置换)的 10–13 分钟知识型视频产出完整脚本。核心定位:只讲数据不讲故事、专业靠谱、软性转化。动笔前先通读范例 references/example-sell-stock-script.md,结构、语气、颗粒度一比一对齐。

触发词

长视频文案 / 主片脚本 / 主脚本YouTube 长视频 10 分钟视频爆款文案 + 干货数据 + 软广植入

工作流

  1. 解析 Campaign Brief — 提取 5 个内容主题(对应 5 个 Part)、Freebie 名称与扣词;第三方品牌统一归到 Cindy Wang 团队;无 brief 先确认选题/人群/Freebie/扣词。
  2. 数据核实(不可跳过) — 所有关键数字先 web search 核实:税务 → IRS/加州 FTB/EDD;房价 → MLSListings/C.A.R./Redfin;利率 → Freddie Mac PMMS;每个数字记录「数值 + 机构 + 日期 + URL」。
  3. 按固定结构写作 — 六大部分:①标题与封面(三选一)②主脚本(反直觉数据开场 Hook + 5 Part 正文 + 🔸4 处软广位 + 复盘 CTA)③5 条短视频拆条规划表 ④Freebie 大纲 ⑤数据来源清单(含链接)⑥团队运营标签。
硬性规则:合规红线(Cindy 是持牌经纪非 CPA/律师,税务内容定位为「一般性信息分享」,结尾固定合规声明字卡);客户案例默认合成示例,须在「发布前必做」标⚠️替换真实案例;时效数据双标注;数字不虚构;每期沉淀 ≥1 句可复用金句。逐字稿交给 cindy-shorts-clips 拆条。
📱

cindy-shorts-clips

短视频切条

Cindy Wang 团队专属的竖屏短视频切条文案工具。产出 60–90 秒竖屏逐字稿,通常一组 5 条,配合一支长视频主片构成一个 campaign 的内容矩阵。两份范例(动笔前通读、格式一比一对齐):references/example-cruel-truths-clips.md(市场分析向)与 references/example-sell-stock-clips.md(税务规划向)。

触发词

切条 / 切片 / 拆条逐字稿短视频文案 Shorts / Reels / TikTok 文案小红书视频文案

单条逐字稿结构(时间戳分段)

  1. 0–3 秒 钩子 — 屏幕大字(挑衅句/反差等式)+ 口播直接制造冲突,禁止「大家好我是 XX」开场
  2. 3–25 秒 展开 — 2~4 个加粗数字,每个带 > 【字幕:来源 机构,日期】 引用块。
  3. 25–50 秒 干货核心 — 机制解释或编号实操步骤。
  4. 45–70 秒 案例/反转 — 代价故事(⚠️发布前替换真实案例)或视角反转。
  5. 结尾 金句 + CTA — 可复用金句 → 「我是 Cindy Wang + 定位句」→ 单一 CTA。

漏斗分工(一组 5 条必须覆盖)

角色定位CTA
⭐投流款 ×1数字最炸、离痛点最近挂主 Freebie 扣词
涨粉款 ×1话题性最强、离交易最远不挂钩子,关注 + 预告下条
促转化款 ×1离成交意图最近直接约免费咨询
细分定向 ×2换房业主 / RSU 重仓等独立扣词分流线索
硬性规则:数字沿用主片已核实来源,新数据须先 web search;单条字数控制(60 秒≈220 字 / 75 秒≈270 字 / 85 秒≈310 字);附录必带运营对照表 + 运营备注(含合规置顶评论话术、系列联动导流、时效数据与案例的⚠️提醒)。