Not in the top 1,000 by GitHub stars
yanhua1010/self-media-content-workflow
Modular, tool-agnostic agent skills for social media content: briefs, trend research, platform-native copy for Xiaohongshu, WeChat, X and YouTube, short video, publishing, and analytics.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/self-media-content-analytics/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-content-brief/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-content-delivery/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-content-strategy/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-content-workflow/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-platform-copywriting/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-short-video/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-trend-radar/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
eaa895aa2364 → eb1550ac565e
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-video-publisher/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Local scripts
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
skills/self-media-wechat-publisher/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
eaa895aa2364 → eb1550ac565e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → eaa895aa2364
No earlier version was observed for comparison.
Verified commit eb1550ac565e350e9c8900f42df528ed9355783d
git clone --filter=blob:none --no-checkout https://github.com/yanhua1010/self-media-content-workflow.git .hotskills/yanhua1010-self-media-content-workflow && git -C .hotskills/yanhua1010-self-media-content-workflow checkout --detach eb1550ac565e350e9c8900f42df528ed9355783d
# Copy each selected skill directory from .hotskills/yanhua1010-self-media-content-workflow into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/yanhua1010/self-media-content-workflow.git .hotskills/yanhua1010-self-media-content-workflow && git -C .hotskills/yanhua1010-self-media-content-workflow checkout --detach eb1550ac565e350e9c8900f42df528ed9355783d
# Copy each selected skill directory from .hotskills/yanhua1010-self-media-content-workflow into .agents/skills/<skill-name>/Heat
7.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- self-media-content-analytics
skills/self-media-content-analytics - self-media-content-brief
skills/self-media-content-brief - self-media-content-delivery
skills/self-media-content-delivery - self-media-content-strategy
skills/self-media-content-strategy - self-media-content-workflow
skills/self-media-content-workflow - self-media-platform-copywriting
skills/self-media-platform-copywriting - self-media-short-video
skills/self-media-short-video - self-media-trend-radar
skills/self-media-trend-radar - self-media-video-publisher
skills/self-media-video-publisher - self-media-wechat-publisher
skills/self-media-wechat-publisher
How it works
self-media-content-analytics
When your agent uses it
分析单篇、系列、周度或月度自媒体数据并形成可执行复盘。用于读取平台后台截图、CSV、表格、公开链接或用户提供的数据,计算关注效率和深度互动,比较同平台基线,归因选题、标题、封面、开头、结构、发布时间、标签和行动,并输出加码、改包装、再适配、停止或继续收集样本的决策。
What it loads into context
Frontmatter
107 tokensAlways available to the agent
SKILL.md
718 tokensWhen the skill is activated
Reference documents
1,399 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 数据来源
- 分析流程
- 复盘层级
- 输出
Files
../../.claude-plugin/marketplace.jsonasset1,394 bytes../../.claude-plugin/plugin.jsonasset957 bytesSKILL.mdcore2,853 bytesagents/openai.yamlasset259 bytesassets/content-review-template.mddoc1,008 bytesassets/metrics-ledger-template.mddoc538 bytesassets/monthly-review-template.mddoc733 bytesassets/weekly-review-template.mddoc710 bytesreferences/metrics.mddoc1,462 bytes
Read SKILL.md
# 内容数据复盘
## 数据来源
优先使用:
1. 用户提供的平台后台截图和导出文件。
2. 已认证连接器或用户自有账号的只读统计接口。
3. 内容任务卡、注册表和历史复盘。
4. 公开内容链接,仅用于公开指标和结构观察。
不要估算平台没有提供的数据。读取自有账号数据不等于授权修改账号或发布内容。
需要持续记录时,从 [metrics-ledger-template.md](assets/metrics-ledger-template.md) 创建原始指标台账。若项目已有数据库、表格或分析系统,继续使用现有系统,不重复建账。View the complete source on GitHubself-media-content-brief
When your agent uses it
为单篇或多平台自媒体创作澄清需求并生成可确认的创作简报。用于用户只给一句话选题、一个链接、一份素材、一个产品或模糊创作要求,需要确认目标受众、内容目标、核心判断、角度、深度、调性、证据、禁区和平台差异时。纯数据分析、已确认方向后的改稿和细节微调不使用此 Skill。
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
650 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 原则
- 需要确认的信息
- 提问路由
- 输出创作简报
- 交棒条件
Files
SKILL.mdcore2,398 bytesagents/openai.yamlasset267 bytes
Read SKILL.md
# 创作简报
## 原则
- 先查现有上下文和用户提供的素材,再提问。
- 只问答案会改变创作方向的问题,最多 3 个。
- 用户可以跳过问题并采用合理默认值。
- 不把用户已明确的信息换一种说法再问一次。
- 简报要让用户能快速确认,不写成长篇提案。
## 需要确认的信息
按影响大小检查:
View the complete source on GitHubself-media-content-delivery
When your agent uses it
将自媒体创作里程碑保存成文件,管理版本、核验路径、生成完整发布包并更新内容索引。用于保存平台第一版完整成稿、多平台合集、短视频脚本、分镜、定稿、发布包和复盘报告,或用户说“保存一下、整理交付、归档、生成发布清单”时。标题微调、删一句和临时候选不单独保存新版本。
What it loads into context
Frontmatter
107 tokensAlways available to the agent
SKILL.md
663 tokensWhen the skill is activated
Reference documents
941 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 核心纪律
- 确定输出根目录
- 何时保存
- 版本规则
- 交付检查
- 用户沟通
- 输出
Files
SKILL.mdcore2,555 bytesagents/openai.yamlasset255 bytesassets/content-registry-template.mddoc815 bytesreferences/delivery-checklists.mddoc2,385 bytes
Read SKILL.md
# 内容交付
## 核心纪律
1. 里程碑产出保存成文件。
2. 保存后回读验证文件存在且非空。
3. 只向用户交付验证过的路径。
4. 保留历史版本,不静默覆盖定稿。
5. 遵守当前项目的文件类型、目录和命名规则。
## 确定输出根目录
按以下顺序选择:
View the complete source on GitHubself-media-content-strategy
When your agent uses it
把账号定位和业务目标转成可执行的自媒体内容策略。用于账号冷启动、重新定位、制定内容配比、规划系列栏目、建立选题池、安排周度或月度内容日历、评估产能和确定平台分工。单篇内容写作或纯数据复盘不使用此 Skill。
What it loads into context
Frontmatter
84 tokensAlways available to the agent
SKILL.md
722 tokensWhen the skill is activated
Reference documents
527 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 输入
- 方法
- 输出
Files
SKILL.mdcore2,758 bytesagents/openai.yamlasset261 bytesassets/account-profile-template.mddoc659 bytesassets/content-calendar-template.mddoc483 bytesassets/topic-pool-template.mddoc494 bytes
Read SKILL.md
# 内容策略
## 输入
优先读取已有账号说明、历史内容和数据。只有缺失且会改变策略时,确认:
- 领域、人设和目标受众。
- 业务目标和本阶段优先级。
- 已有平台、账号阶段和历史表现。
- 更新频率、团队规模和可投入时间。
- 可持续的一手证据和内容来源。
- 商业目标、品牌边界和不能做的内容。
可从 [account-profile-template.md](assets/account-profile-template.md) 建立账号档案。View the complete source on GitHubself-media-content-workflow
When your agent uses it
通用自媒体内容生产与经营工作流。用于自媒体内容创作、选题策划、热点或竞品研究、多平台改写、短视频脚本、数字人视频、动画解说视频、YouTube 与抖音视频号小红书多平台视频发布、发布包、公众号草稿、内容数据分析、周复盘、月复盘和继续未完成任务。负责识别请求类型,调用创作简报、内容策略、热点竞品、平台文案、短视频与视频制片、视频发布、数据复盘和交付归档模块,并管理方向确认、标题确认、终稿确认和发布授权。
What it loads into context
Frontmatter
154 tokensAlways available to the agent
SKILL.md
3,297 tokensWhen the skill is activated
Reference documents
9,597 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 目标
- 核心原则
- 解析工作区
- 请求路由
- 启动与续跑
- 内容创作状态流
- 创作主流程
- 工具适配原则
- 完成状态
- 资源
Files
SKILL.mdcore12,990 bytesagents/openai.yamlasset431 bytesassets/content-registry-template.mddoc815 bytesassets/content-task-template.mddoc4,509 bytesreferences/digital-human-production.mddoc2,715 bytesreferences/platforms.mddoc1,810 bytesreferences/preflight-and-registry.mddoc4,443 bytesreferences/publishing-and-review.mddoc1,977 bytesreferences/quality-gates.mddoc4,286 bytesreferences/style-learning.mddoc1,122 bytes../self-media-short-video/references/animated-explainer-production.mddoc7,834 bytes../self-media-short-video/references/video-platform-versions.mddoc4,691 bytes
Read SKILL.md
# 自媒体内容工作流
## 目标
把账号定位、内容目标、证据、平台表达、视觉素材、发布和数据复盘连接成可续跑闭环。优先交付可信、平台原生、可执行的内容,不以批量生成替代真实判断。
## 核心原则
- 先确认账号定位、目标受众、内容目标和平台,再写正文。
- 一次推进一个母题。多平台内容共享事实与证据,不共享同一份正文。
- 区分事实、个人判断、推断和建议。关键数字必须有来源。
- 只问会改变方向的问题。可以从现有文件和公开来源获得的信息不要反问用户。
- 重要产出按里程碑保存。小改动留在当前版本,不为每句修改新建文件。
- 对用户使用“保存成文件、成品、作品库”等自然表达,避免暴露内部术语。View the complete source on GitHubself-media-platform-copywriting
When your agent uses it
将已确认的母题、证据和创作简报写成平台原生内容。用于 X 短帖、长帖或线程,小红书图文,Reddit 回复或发帖,微信公众号文章,视频号、抖音或小红书视频发布文案,YouTube 标题、描述、章节、标签和缩略图方案,以及同一母题的多平台适配。强调各平台独立设计标题、开头、证据顺序、结构和行动,不做机械缩写或共享正文式的一稿多发。
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
985 tokensWhen the skill is activated
Reference documents
5,440 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置条件
- 通用流程
- 平台路由
- 去模板化审校
- 多平台适配
- 输出
Files
SKILL.mdcore3,799 bytesagents/openai.yamlasset258 bytesreferences/compliance.mddoc971 bytesreferences/reddit.mddoc2,603 bytesreferences/short-video-platforms.mddoc1,455 bytesreferences/visual-styles.mddoc8,457 bytesreferences/wechat.mddoc1,118 bytesreferences/x.mddoc795 bytesreferences/xiaohongshu.mddoc1,288 bytesreferences/youtube.mddoc2,921 bytes
Read SKILL.md
# 平台文案
## 前置条件
开始完整写作前确认:目标受众、内容目标、核心判断、证据、平台、调性、禁区和商业关系。方向未确认时调用 `self-media-content-brief`。
## 通用流程
1. 从证据包中提取事实、个人判断、推断和建议。
2. 明确读者在当前平台为什么会停下、看完和采取行动。
3. 内部生成 6 到 8 个标题,覆盖结果、利益、身份、冲突、反差、好奇和数字等入口。
4. 删除正文无法兑现、缺少证据或过度承诺的标题。
5. 只向用户展示最强的 3 个标题,并解释各自入口。
6. 为每个平台分别设计开头、证据顺序、结构和行动。View the complete source on GitHubself-media-short-video
When your agent uses it
把已确认的母题或文案转成可直接拍摄、录屏或交给视频工具制作的视频方案,也支持在用户确认肖像与声音权利并完成平台手动上传后制作数字人视频,以及用合成配音和 AI 绘制画面制作无真人出镜的动画解说视频(科普、历史、品牌故事)。用于视频号、抖音、小红书视频、YouTube 横屏视频和 Shorts 的口播稿、前 3 秒钩子、分镜、字幕、录屏清单、封面、话题、配乐与授权、数字人或动画制片包、横竖屏多平台版本和发布文案。
What it loads into context
Frontmatter
163 tokensAlways available to the agent
SKILL.md
1,479 tokensWhen the skill is activated
Reference documents
7,615 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 原则
- 确认输入
- 视频制作模式
- 多平台版本
- 结构
- 分镜
- 输出包
Files
SKILL.mdcore5,658 bytesagents/openai.yamlasset511 bytesassets/storyboard-template.mddoc886 bytesassets/video-release-matrix-template.mddoc1,610 bytesreferences/animated-explainer-production.mddoc7,834 bytesreferences/digital-human-production.mddoc5,590 bytesreferences/explainer-narrative.mddoc5,675 bytesreferences/video-platform-versions.mddoc4,691 bytes
Read SKILL.md
# 短视频与视频制片
## 原则
- 一条视频只讲一个核心判断。
- 前 3 秒给出冲突、结果、利益或具体场景;优先用第二人称(“你……”)或一句能重复出现的母题句把观众拉进来。
- 字幕必须能脱离声音独立成立:关掉声音只看字幕也能看懂。
- 口播必须说得出口,不把长文章切成字幕。
- 画面承担证明、演示、对比或情绪任务,不重复字幕。
- 优先使用真实人物声音、产品录屏和真实证据,不默认数字人或动画。
- 数字人是用户主动选择后的制片模式,必须有头像与声音的使用权利;用户本人负责在所选数字人平台中手动上传、创建和选定敏感素材,并保留人工预览和发布确认。
## 确认输入
View the complete source on GitHubself-media-trend-radar
When your agent uses it
安全追踪热点、研究关键词和拆解竞品内容,并将结果转成原创选题和证据包。用于用户要求找热点、看趋势、分析爆款、研究竞品账号、拆标题或开头、比较内容结构、发现评论需求、判断时效窗口,对比同一话题在海外与国内平台的热度差,以及为产品寻找值得参与的 Reddit 子版块和讨论帖。只做公开信息研究和只读采集,不自动互动、发布或使用主账号登录态抓取竞品。
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
922 tokensWhen the skill is activated
Reference documents
2,227 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 目标
- 数据源优先级
- 海外对照模式(可选)
- Reddit 讨论发现(可选)
- 研究流程
- 输出
Scripts executed separately
scripts/overseas_compare.pyscripts/radar/__init__.pyscripts/radar/__main__.pyscripts/radar/client.pyscripts/radar/report.pyscripts/radar/score.pyscripts/radar/sources.pyscripts/tests/__init__.pyscripts/tests/test_radar.py
Files
SKILL.mdcore3,521 bytesagents/openai.yamlasset268 bytesreferences/overseas-compare.mddoc4,202 bytesreferences/reddit-discovery.mddoc2,516 bytesreferences/research-safety.mddoc1,244 bytesscripts/overseas_compare.pyruns299 bytesscripts/radar/__init__.pyruns59 bytesscripts/radar/__main__.pyruns5,037 bytesscripts/radar/client.pyruns3,011 bytesscripts/radar/report.pyruns1,884 bytesscripts/radar/score.pyruns2,515 bytesscripts/radar/sources.pyruns7,398 bytesscripts/tests/__init__.pyruns0 bytesscripts/tests/test_radar.pyruns3,792 bytesscripts/topics.example.tomlasset604 bytes
Read SKILL.md
# 热点与竞品雷达
## 目标
识别用户需求、表达结构和时效机会,不复制竞品观点或文案。
## 数据源优先级
1. 用户提供的链接、截图、导出文件和素材。
2. 官方文档、原始发布、论文、公告和作者原帖。
3. 平台公开搜索、热榜、竞品主页和公开互动数据。
4. 可信二手资料,用于补充背景,不替代一手事实。
近期产品、人物、价格、版本、新闻和平台规则必须联网核验。技术事实优先使用官方来源。View the complete source on GitHubself-media-video-publisher
When your agent uses it
把已确认终稿的视频成片发布到 YouTube、抖音、视频号、小红书等平台。用于用户说“发视频、同步发布、上传 YouTube、发到抖音视频号小红书、定时发布”等场景。按平台核对视频版本、封面、字幕、标题描述和 AI/版权声明,生成逐平台发布包;经用户逐平台授权后,才通过运行时可用的官方 API、填表助手或上传工具上传为私密、草稿或定时,从不一键群发。没有上传能力时交付手动发布包。
What it loads into context
Frontmatter
145 tokensAlways available to the agent
SKILL.md
1,427 tokensWhen the skill is activated
Reference documents
4,296 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 目标
- 前置条件
- 发布方式分级
- 适配器发现
- 发布流程
- 安全边界
- 输出
Scripts executed separately
scripts/publish.mjs
Files
../self-media-short-video/references/video-platform-versions.mddoc4,691 bytesSKILL.mdcore5,458 bytesagents/openai.yamlasset356 bytesassets/video-publish-pack-template.mddoc590 bytesreferences/sau-adapter.mddoc7,038 bytesreferences/upload-adapters.mddoc2,721 bytesscripts/publish.mjsruns12,434 bytes
Read SKILL.md
# 视频发布
## 目标
把确认过的视频成片和平台文案,准确、完整地送到用户选择的平台,并把结果记回任务卡。默认交付手动发布包;外部上传只在逐平台授权后进行,优先上传为私密或草稿,由用户自己点公开。
## 前置条件
- 终稿已确认:用户完整看过、听过成片。
- 各平台版本和发布字段已就绪,见 `self-media-short-video` 的 [video-platform-versions.md](../self-media-short-video/references/video-platform-versions.md) 和平台文案模块的各平台规范。
- 有配乐或素材署名要求时,署名文本已写进各平台描述。
缺少任一项时,报告缺口并停在 `AWAITING_USER`,不带着缺口上传。
View the complete source on GitHubself-media-wechat-publisher
When your agent uses it
把已确认的公众号终稿 Markdown 排版并写入微信公众号草稿箱。用于用户说"发布到公众号、写入草稿箱、公众号排版、换个排版主题、发小绿书图片消息"等场景。自动上传封面与文内图片,支持多主题与自定义 CSS、多账号和 server 模式。只创建草稿不群发,凭据只通过环境变量提供,未安装适配工具时交付手动发布包。
What it loads into context
Frontmatter
117 tokensAlways available to the agent
SKILL.md
991 tokensWhen the skill is activated
Reference documents
895 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 目标
- 适配层说明
- 前置检测
- 输入契约
- 主题选择
- 发布流程
- 多账号
- 安全边界
- 输出
Files
SKILL.mdcore3,648 bytesagents/openai.yamlasset262 bytesassets/wechat-article-template.mddoc687 bytesreferences/wenyan-setup.mddoc2,518 bytes
Read SKILL.md
# 公众号发布
## 目标
把确认过的公众号终稿 Markdown 排版成平台原生富文本,连同封面和文内图片写入公众号草稿箱。只创建草稿,从不群发。
## 适配层说明
本模块是公众号渠道的发布适配层,基于开源工具 [wenyan CLI](https://github.com/caol64/wenyan-cli)(Apache-2.0)。wenyan 不可用时不阻塞创作流程,按 `self-media-content-delivery` 交付手动发布包。
## 前置检测
1. `wenyan --version` 确认安装。未安装时提示 `npm install -g @wenyan-md/cli`,用户不想安装则直接交付手动发布包。
2. 确认 `WECHAT_APP_ID` 和 `WECHAT_APP_SECRET` 环境变量存在。只判断存在性,不读取、不回显、不写入任何文件。View the complete source on GitHubSkills included
- self-media-content-analytics
- self-media-content-brief
- self-media-content-delivery
- self-media-content-strategy
- self-media-content-workflow
- self-media-platform-copywriting
- self-media-short-video
- self-media-trend-radar
- self-media-video-publisher
- self-media-wechat-publisher
Repository facts
- License
- MIT
- Created
- Jul 22, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 83
- Open issues
- 1
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
- No broad tool permissions
- No dangerous shell commands
- 53 network referencesin 12 files: .claude-plugin/marketplace.json:5 self-media-trend-radar/scripts/radar/sources.py:140 self-media-trend-radar/scripts/tests/test_radar.py:11 and 9 more
- No hidden or obfuscated text
- No instruction overrides
- 10 executable scriptsin 10 files: self-media-trend-radar/scripts/overseas_compare.py:1 self-media-trend-radar/scripts/radar/__init__.py:1 self-media-trend-radar/scripts/radar/__main__.py:1 and 7 more
- 9 references to secretsin 5 files: self-media-trend-radar/scripts/radar/client.py:37 self-media-trend-radar/SKILL.md:23 self-media-trend-radar/references/overseas-compare.md:13 and 2 more
- No requests to vote in Hot
Show all 72 signals by file
.claude-plugin/marketplace.json
- Network accessline 5
"owner": { "name": "yanhua", "url": "https://github.com/yanhua1010" - Network accessline 6
"name": "yanhua", "url": "https://github.com/yanhua1010" }, - Network accessline 7
"url": "https://github.com/yanhua1010" - Network accessline 16
"author": { "name": "yanhua", "url": "https://github.com/yanhua1010" - Network accessline 17
"name": "yanhua", "url": "https://github.com/yanhua1010" }, - Network accessline 18
"url": "https://github.com/yanhua1010" - Network accessline 19
}, "homepage": "https://github.com/yanhua1010/self-media-content-workflow", "repository": "https://github.com/yanhua1010/self-media-content-workflow", - Network accessline 20
"homepage": "https://github.com/yanhua1010/self-media-content-workflow", - Network accessline 21
"repository": "https://github.com/yanhua1010/self-media-content-workflow",
.claude-plugin/plugin.json
- Network accessline 6
"author": { "name": "yanhua", "url": "https://github.com/yanhua1010" - Network accessline 7
"name": "yanhua", "url": "https://github.com/yanhua1010" }, - Network accessline 8
"url": "https://github.com/yanhua1010" - Network accessline 9
}, "homepage": "https://github.com/yanhua1010/self-media-content-workflow", "repository": "https://github.com/yanhua1010/self-media-content-workflow", - Network accessline 10
"homepage": "https://github.com/yanhua1010/self-media-content-workflow", - Network accessline 11
"repository": "https://github.com/yanhua1010/self-media-content-workflow",
skills/self-media-platform-copywriting/references/visual-styles.md
- Network accessline 106
两种立场都遵守:真实图片当证据不当装饰,一组内保持同一网格、字体与色板。若环境安装了专门的社交卡片或材质插画类 Skill(如 [guizang-social-card-skill](https://github.com/op7418/guizang-social-card-skill)、[guizang-material-illustration](https://github.com/op7418/guizang-material-illustration),注意其各自的
skills/self-media-trend-radar/SKILL.md
- Access to secretsline 23
[Credential-related source omitted]
skills/self-media-trend-radar/references/overseas-compare.md
skills/self-media-trend-radar/references/reddit-discovery.md
skills/self-media-trend-radar/scripts/overseas_compare.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/self-media-trend-radar/scripts/radar/__init__.py
- Executable scriptline 1
Executable file
skills/self-media-trend-radar/scripts/radar/__main__.py
- Executable scriptline 1
Executable file
skills/self-media-trend-radar/scripts/radar/client.py
- Executable scriptline 1
Executable file - Network accessline 12
BASE_URL = "https://api.aisa.one/apis/v1" - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Network accessline 60
headers["X-AISA-Cost-Mode"] = "quote" data = json.dumps(call.body).encode() if call.body is not None else None req = urllib.request.Request(url, method=call.method, headers=headers, data=data) - Network accessline 61
data = json.dumps(call.body).encode() if call.body is not None else None req = urllib.request.Request(url, method=call.method, headers=headers, data=data) try: - Network accessline 62
req = urllib.request.Request(url, method=call.method, headers=headers, data=data) - Network accessline 63
try: with urllib.request.urlopen(req, timeout=self.timeout) as resp: payload = json.loads(resp.read().decode("utf-8", "replace")) - Network accessline 64
with urllib.request.urlopen(req, timeout=self.timeout) as resp:
skills/self-media-trend-radar/scripts/radar/report.py
- Executable scriptline 1
Executable file
skills/self-media-trend-radar/scripts/radar/score.py
- Executable scriptline 1
Executable file
skills/self-media-trend-radar/scripts/radar/sources.py
- Executable scriptline 1
Executable file - Network accessline 140
"shares": _int(n.get("shared_count")), "comments": _int(n.get("comments_count"))} out.append(Item("xiaohongshu", CN, n.get("title") or (n.get("desc") or "")[:60], f"https://www.xiaohongshu.com/explore/{n.get( - Network accessline 141
out.append(Item("xiaohongshu", CN, n.get("title") or (n.get("desc") or "")[:60], f"https://www.xiaohongshu.com/explore/{n.get('id', '')}", (n.get("user") or {}).get("nickname", ""), _int(n.get - Network accessline 142
f"https://www.xiaohongshu.com/explore/{n.get('id', '')}", - Network accessline 161
"shares": _int(s.get("share_count")), "comments": _int(s.get("comment_count"))} out.append(Item("douyin", CN, (a.get("desc") or "")[:140], f"https://www.douyin.com/video/{a['aweme_id']}", - Network accessline 162
out.append(Item("douyin", CN, (a.get("desc") or "")[:140], f"https://www.douyin.com/video/{a['aweme_id']}", (a.get("author") or {}).get("nickname", ""), _int(a.get("create_time")) or None, m, - Network accessline 163
f"https://www.douyin.com/video/{a['aweme_id']}", - Network accessline 180
plays = _int(av.get("play")) out.append(Item("bilibili", CN, _strip_tags(av.get("title", "")), f"https://www.bilibili.com/video/av{it.get('param', '')}", - Network accessline 181
out.append(Item("bilibili", CN, _strip_tags(av.get("title", "")), f"https://www.bilibili.com/video/av{it.get('param', '')}", av.get("author", ""), _int(av.get("ptime")) or None, {"plays": play - Network accessline 182
f"https://www.bilibili.com/video/av{it.get('param', '')}",
skills/self-media-trend-radar/scripts/tests/__init__.py
- Executable scriptline 1
Executable file
skills/self-media-trend-radar/scripts/tests/test_radar.py
- Executable scriptline 1
Executable file - Network accessline 11
PAYLOADS = { "x": {"tweets": [{"text": "hot take", "url": "https://x.com/a/status/1", "likeCount": 20000, - Network accessline 12
"x": {"tweets": [{"text": "hot take", "url": "https://x.com/a/status/1", "likeCount": 20000, - Network accessline 13
"retweetCount": 900, "replyCount": 900, "viewCount": 2_000_000, "createdAt": "Wed Oct 14 19:01:14 +0000 2026", "author": {"userName": "a"}}]}, "youtube": {"videos": [{"title": "demo", "link": "https://youtu.be/x", - Network accessline 14
"createdAt": "Wed Oct 14 19:01:14 +0000 2026", "author": {"userName": "a"}}]}, "youtube": {"videos": [{"title": "demo", "link": "https://youtu.be/x", "views": "100000", "published_time": "5d ago", "channel": - Network accessline 15
"youtube": {"videos": [{"title": "demo", "link": "https://youtu.be/x", "views": "100000", - Network accessline 16
"published_time": "5d ago", "channel": {"title": "c"}}]}, "reddit": {"posts": [{"title": "news", "url": "https://reddit.com/r/x/1", "score": 14000, "num_comments": 1600, "created_utc": NOW - 2 * DAY, "subreddit - Network accessline 17
"reddit": {"posts": [{"title": "news", "url": "https://reddit.com/r/x/1", "score": 14000,
skills/self-media-video-publisher/references/sau-adapter.md
- Network accessline 3
本适配器按 SAU 仓库 `dreammis/social-auto-upload` 的主线源码与文档核对,网页所示 HEAD 为 `0012d2c355f88f683cc38dde2a2db209e14091bc`(2026-09-02)。本环境无法完成指定的本地克隆,因此该哈希来自 [GitHub 提交页](https://github.com/dreammis/social-auto-upload/commit/0012d2c355f88f683cc38dde2a2db - Network accessline 12
git clone https://github.com/dreammis/social-auto-upload /Users/xiademacbookpro/tools/social-auto-upload - Network accessline 15
source .venv/bin/activate uv pip install -e . PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright" patchright install chromium - Network accessline 16
uv pip install -e . PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright" patchright install chromium uv pip install playwright # 2026-10 的主线 pyproject 漏了它,百家号上传器仍 import playwright - Network accessline 17
PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright" patchright install chromium
skills/self-media-video-publisher/scripts/publish.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/self-media-wechat-publisher/SKILL.md
- Network accessline 14
本模块是公众号渠道的发布适配层,基于开源工具 [wenyan CLI](https://github.com/caol64/wenyan-cli)(Apache-2.0)。wenyan 不可用时不阻塞创作流程,按 `self-media-content-delivery` 交付手动发布包。
skills/self-media-wechat-publisher/assets/wechat-article-template.md
skills/self-media-wechat-publisher/references/wenyan-setup.md
- Network accessline 10
wenyan 是 [caol64/wenyan-cli](https://github.com/caol64/wenyan-cli)(Apache-2.0)。除 CLI 外官方还提供 macOS 桌面版、跨平台桌面版和 MCP 版本,仓库内自带 publish-to-wechat 等官方 Skill,可用 `npx skills add caol64/wenyan-cli` 安装。 - Network accessline 25
公众号 API 要求调用方 IP 在后台白名单内:公众号后台 → 设置与开发 → 基本配置 → IP 白名单。官方说明见 [yuzhi.tech/docs/wenyan/upload](https://yuzhi.tech/docs/wenyan/upload)。 - Network accessline 30
wenyan publish -f article.md --server https://your-server --api-key-file ~/.config/wenyan/server-api-key - Access to secretsline 50
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 4 facts
- Contacts api.aisa.one, which SKILL.md, the README and the plugin manifest do not mentionself-media-trend-radar/scripts/radar/client.py:12High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionself-media-trend-radar/scripts/radar/sources.py:142High confidence
- Contacts www.douyin.com, which SKILL.md, the README and the plugin manifest do not mentionself-media-trend-radar/scripts/radar/sources.py:163High confidence
- Contacts www.bilibili.com, which SKILL.md, the README and the plugin manifest do not mentionself-media-trend-radar/scripts/radar/sources.py:182High confidence
Signal confidence: 57 facts
- Network access in prose of documentationself-media-platform-copywriting/references/visual-styles.md:106Low confidence
- Access to secrets in prose of the SKILL.mdself-media-trend-radar/SKILL.md:23Low confidence
- Network access in prose of documentationself-media-trend-radar/references/overseas-compare.md:12Low confidence
- Network access in prose of documentationself-media-trend-radar/references/overseas-compare.md:13Low confidence
- Access to secrets in prose of documentationself-media-trend-radar/references/overseas-compare.md:13Low confidence
- Network access in prose of documentationself-media-trend-radar/references/reddit-discovery.md:16Low confidence
- Access to secrets in prose of documentationself-media-trend-radar/references/reddit-discovery.md:16Low confidence
- Executable script in code of a file that runsself-media-trend-radar/scripts/overseas_compare.py:1High confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/__init__.py:1Low confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/__main__.py:1Low confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/client.py:1Low confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:12High confidence
- Access to secrets in code of a file that runsself-media-trend-radar/scripts/radar/client.py:37High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueself-media-trend-radar/scripts/radar/client.py:45Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueself-media-trend-radar/scripts/radar/client.py:47Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueself-media-trend-radar/scripts/radar/client.py:48Low confidence
- Access to secrets in code of a file that runsself-media-trend-radar/scripts/radar/client.py:55High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:60High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:61High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:62High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:63High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/client.py:64High confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/report.py:1Low confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/score.py:1Low confidence
- Executable script in prose of a file that runsself-media-trend-radar/scripts/radar/sources.py:1Low confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:140High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:141High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:142High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:161High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:162High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:163High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:180High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:181High confidence
- Network access in code of a file that runsself-media-trend-radar/scripts/radar/sources.py:182High confidence
- Executable script in prose of a testself-media-trend-radar/scripts/tests/__init__.py:1Low confidence
- Executable script in code of a testself-media-trend-radar/scripts/tests/test_radar.py:1Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:11Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:12Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:13Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:14Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:15Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:16Low confidence
- Network access in code of a testself-media-trend-radar/scripts/tests/test_radar.py:17Low confidence
- Network access in prose of documentationself-media-video-publisher/references/sau-adapter.md:3Low confidence
- Network access in code of documentationself-media-video-publisher/references/sau-adapter.md:12Low confidence
- Network access in code of documentationself-media-video-publisher/references/sau-adapter.md:15Low confidence
- Network access in code of documentationself-media-video-publisher/references/sau-adapter.md:16Low confidence
- Network access in code of documentationself-media-video-publisher/references/sau-adapter.md:17Low confidence
- Executable script in code of a file that runsself-media-video-publisher/scripts/publish.mjs:1High confidence
- Network access in prose of the SKILL.mdself-media-wechat-publisher/SKILL.md:14Low confidence
and 7 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/self-media-content-analytics/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/self-media-content-analytics/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/self-media-content-analytics/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/self-media-content-analytics/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.