#540 by GitHub stars
tsingyuai/growth-lab
An end-to-end growth tool that understands the product, fetch the data it needs, researches the market, executes campaigns, and reviews results to improve the next round of growth. 从代码到市场的开源端到端增长工具。理解产品、接入信息渠道、研究市场、执行增长行动,并基于真实数据自我改进。
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
collectors/media-crawler/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-bilibili/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-douyin/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-kuaishou/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-tieba/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-weibo/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/media-crawler-zhihu/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/research-product/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/research-seo-demand/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
collectors/xiaohongshu-mcp/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/create-seo-page/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/generate-image/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/review-seo-page/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/review-seo-performance/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/screenshot-assets/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/wechat-article-compose/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/wechat-mp-publish/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
executors/xhs-render-cards/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 2d0807c5831c
No earlier version was observed for comparison.
models/onboard-growth-lab/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
models/run-seo-page-loop/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2d0807c5831c
No earlier version was observed for comparison.
models/run-wechat-article-loop/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
models/xhs-replicate/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d0807c5831c
No earlier version was observed for comparison.
Verified commit 2d0807c5831c69eac4267702f539957a621e7689
git clone --filter=blob:none --no-checkout https://github.com/tsingyuai/growth-lab.git .hotskills/tsingyuai-growth-lab && git -C .hotskills/tsingyuai-growth-lab checkout --detach 2d0807c5831c69eac4267702f539957a621e7689
# Copy each selected skill directory from .hotskills/tsingyuai-growth-lab into .agents/skills/<skill-name>/Heat
0.9- Star growth, last 7 daysAhead of 2% of tracked repositories
- Star growth, last 24 hoursAhead of 3% of tracked repositories
- Rank movement, last 7 daysAhead of 40% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- media-crawler
collectors/media-crawler - media-crawler-bilibili
collectors/media-crawler-bilibili - media-crawler-douyin
collectors/media-crawler-douyin - media-crawler-kuaishou
collectors/media-crawler-kuaishou - media-crawler-tieba
collectors/media-crawler-tieba - media-crawler-weibo
collectors/media-crawler-weibo - media-crawler-zhihu
collectors/media-crawler-zhihu - research-product
collectors/research-product - research-seo-demand
collectors/research-seo-demand - xiaohongshu-mcp
collectors/xiaohongshu-mcp - create-seo-page
executors/create-seo-page - generate-image
executors/generate-image - review-seo-page
executors/review-seo-page - review-seo-performance
executors/review-seo-performance - screenshot-assets
executors/screenshot-assets - wechat-article-compose
executors/wechat-article-compose - wechat-mp-publish
executors/wechat-mp-publish - xhs-render-cards
executors/xhs-render-cards - onboard-growth-lab
models/onboard-growth-lab - run-seo-page-loop
models/run-seo-page-loop - run-wechat-article-loop
models/run-wechat-article-loop - xhs-replicate
models/xhs-replicate
How it works
media-crawler
When your agent uses it
Install, authenticate, configure, operate, and troubleshoot the external MediaCrawler client shared by Douyin, Kuaishou, Bilibili, Weibo, Tieba, and Zhihu collectors. Xiaohongshu uses the separate browser-first xiaohongshu-mcp Collector. Use when auditing this client, onboarding a supported platform account, selecting search/detail/creator modes, enabling comments or media, locating outputs, or diagnosing crawler failures.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
687 tokensWhen the skill is activated
Reference documents
5,291 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Contract
- Standard invocation
- Completion report
Files
../media-crawler-bilibili/SKILL.mddoc1,426 bytes../media-crawler-douyin/SKILL.mddoc1,521 bytes../media-crawler-kuaishou/SKILL.mddoc1,351 bytes../media-crawler-tieba/SKILL.mddoc1,350 bytes../media-crawler-weibo/SKILL.mddoc1,361 bytes../media-crawler-zhihu/SKILL.mddoc1,398 bytesSKILL.mdcore2,922 bytesSKILL.mdcore2,922 bytesSKILL.mdcore2,922 bytesSKILL.mdcore2,922 bytesagents/openai.yamlasset196 bytesreferences/operations.mddoc5,981 bytes../../models/onboard-growth-lab/SKILL.mddoc8,335 bytes
Read SKILL.md
# MediaCrawler
This is the shared tool layer. Read [operations.md](references/operations.md) before changing the external checkout. Then invoke exactly one platform Skill:
- [Douyin](../media-crawler-douyin/SKILL.md)
- [Kuaishou](../media-crawler-kuaishou/SKILL.md)
- [Bilibili](../media-crawler-bilibili/SKILL.md)
- [Weibo](../media-crawler-weibo/SKILL.md)
- [Tieba](../media-crawler-tieba/SKILL.md)
- [Zhihu](../media-crawler-zhihu/SKILL.md)
MediaCrawler does not support Twitter/X or Reddit. Do not imply otherwise.
## ContractView the complete source on GitHubmedia-crawler-bilibili
When your agent uses it
Collect Bilibili video and creator evidence with MediaCrawler through search, exact BV detail, comments, dynamics, contacts, and optional media. Use for topic, format, title, creator, or audience research with explicit time-range and quality controls.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
309 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,426 bytesagents/openai.yamlasset217 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Bilibili collection
Follow [media-crawler](../media-crawler/SKILL.md). Define purpose, query/BV/creator inputs, date window, sample target, desired quality, comments/media scope, and invoking Model Memory destination.
Search with `--platform bili --type search`. Configure `START_DAY`, `END_DAY`, `BILI_SEARCH_MODE`, and conservative `MAX_NOTES_PER_DAY` in `config/bilibili_config.py`. Shortlist by relevance, content format, recency, creator fit and engagement—not raw plays alone. Put full video URLs or BV numbers in `BILI_SPECIFIED_ID_LIST`; put Space URLs or UIDs in `BILI_CREATOR_ID_LIST`. Use detail/creator mode respectively.
If downloading video, explicitly select `BILI_QN` compatible with account/video access and disclose that requested quality may be unavailable. `CREATOR_MODE`, contacts and dynamics limits are separate from content comments; record which were enabled. Deduplicate by BV, preserve query provenance, verify files, and stop on auth/risk control.
Return inputs, config window/mode/quality, raw/copied paths, counts and coverage, time, commit, partial failures, and selection rationale.View the complete source on GitHubmedia-crawler-douyin
When your agent uses it
Collect Douyin competitive evidence with MediaCrawler using keyword search, exact video detail, comments, media, and creator profiles. Use for trend, hook, format, audience-language, or creator research that needs reproducible raw evidence and a documented selection method.
What it loads into context
Frontmatter
61 tokensAlways available to the agent
SKILL.md
325 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,521 bytesagents/openai.yamlasset217 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Douyin collection
Follow [media-crawler](../media-crawler/SKILL.md). Require purpose, keywords/links, sample size, date window, comments/media scope, and destination under the invoking Model's Memory.
Build queries across problem, category, and audience. Run `--platform dy --type search` serially; shortlist on topical relevance, hook/format diversity, recency and engagement. Search cards are discovery evidence only. For exact enrichment, set `DY_SPECIFIED_ID_LIST` in `config/dy_config.py`; it accepts full video URLs, URLs containing `modal_id`, short links, or video IDs. For creators set `DY_CREATOR_ID_LIST` to profile URLs or `sec_user_id`, then use `--type creator`. `PUBLISH_TIME_TYPE` controls the upstream publish-time filter.
Enable comments or `ENABLE_GET_MEIDAS` only for the shortlist, then run `--type detail`. Verify canonical video ID, author, caption, publish time, engagement, media mapping, comment coverage and any truncation. Deduplicate by video ID and retain the discovery query. Stop on login/risk control; never loop retries.
Return raw/copied paths, query and selection rationale, search/detail/creator counts, comment/media coverage, time and upstream commit.View the complete source on GitHubmedia-crawler-kuaishou
When your agent uses it
Collect Kuaishou competitive evidence with MediaCrawler using keyword search, exact video detail, comments, media, and creator profiles. Use for trend, format, audience-language, or creator research requiring reproducible source records and explicit collection limits.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
284 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,351 bytesSKILL.mdcore1,351 bytesagents/openai.yamlasset219 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Kuaishou collection
Follow [media-crawler](../media-crawler/SKILL.md). Require purpose, keywords/links, target count, time window, comments/media scope, and a destination in the invoking Model's Memory.
Search with `--platform ks --type search`, starting serially with one intent-distinct keyword. Shortlist for relevance, format diversity, recency and engagement; do not confuse a search excerpt with full detail. Put full `kuaishou.com/short-video/...` URLs or pure video IDs in `KS_SPECIFIED_ID_LIST`; put profile URLs or user IDs in `KS_CREATOR_ID_LIST`. Run `--type detail` or `--type creator` accordingly.
Enable comments/media only for shortlisted items. Verify video ID, creator, caption, publish time, engagement, media association and comment coverage. Deduplicate by video ID, preserve query provenance, and report empty/risk-controlled/partial results honestly. Stop on challenge or expired login.
Return raw/copied paths, exact inputs, selection rationale, counts, coverage, collection time and upstream commit.View the complete source on GitHubmedia-crawler-tieba
When your agent uses it
Collect Baidu Tieba thread and user evidence with MediaCrawler using keyword or bar discovery, exact thread detail, replies, and creator pages. Use for community pain-point, vocabulary, objection, topic, or user research with thread-context preservation.
What it loads into context
Frontmatter
59 tokensAlways available to the agent
SKILL.md
281 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,350 bytesagents/openai.yamlasset222 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Tieba collection
Follow [media-crawler](../media-crawler/SKILL.md). Require purpose, keyword/bar/thread/user inputs, target size and time bounds, reply depth, and invoking Model Memory destination.
Use `--platform tieba --type search` for discovery. Configure bar names in `TIEBA_NAME_LIST` when the research scope is community-specific; otherwise use intent-distinct keywords. Configure exact thread IDs in `TIEBA_SPECIFIED_ID_LIST` and full user-home URLs in `TIEBA_CREATOR_URL_LIST`; use detail/creator mode.
Preserve bar name, thread title, original post, floor/reply relationships, author, publish time and canonical URL. Do not flatten replies into independent opinions without their parent context. Sample across different threads/authors and deduplicate by thread ID plus post/floor identity. Start without deep replies, enrich only relevant threads, and stop on authentication/risk control.
Return scope/bar list, exact inputs, raw/copied paths, thread/reply/user counts, coverage, time, commit, exclusions and selection rationale.View the complete source on GitHubmedia-crawler-weibo
When your agent uses it
Collect Weibo posts and creator evidence with MediaCrawler using search, exact post IDs, comments, optional media, and creator IDs. Use for discourse, trend, messaging, audience-language, or account research requiring preserved provenance and risk-aware detail enrichment.
What it loads into context
Frontmatter
59 tokensAlways available to the agent
SKILL.md
279 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,361 bytesagents/openai.yamlasset216 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Weibo collection
Follow [media-crawler](../media-crawler/SKILL.md). Define research purpose, keywords/post IDs/creator IDs, sample and time bounds, comments/media scope, and invoking Model Memory destination.
Search with `--platform wb --type search`; set `WEIBO_SEARCH_TYPE` deliberately. Use direct problem, category and audience/event query variants, then shortlist by relevance, time, source/account fit, content form and engagement. Configure exact post IDs in `WEIBO_SPECIFIED_ID_LIST` and user IDs in `WEIBO_CREATOR_ID_LIST`; run detail/creator mode.
`ENABLE_WEIBO_FULL_TEXT` makes extra detail requests and raises risk-control probability. Keep it off during broad discovery and enable it only for a small, explicit shortlist when full text is required. Treat repost text, original text and comments as different evidence. Deduplicate by post ID and preserve query provenance.
Return exact inputs, full-text/comment/media flags, raw/copied paths, coverage, time, commit, selection rationale and risk-control/partial failures.View the complete source on GitHubmedia-crawler-zhihu
When your agent uses it
Collect Zhihu answers, articles, videos, comments, and creator evidence with MediaCrawler through search and exact URLs. Use for expert discourse, problem framing, objections, terminology, topic, or creator research where content type and question context must remain explicit.
What it loads into context
Frontmatter
61 tokensAlways available to the agent
SKILL.md
277 tokensWhen the skill is activated
Reference documents
687 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,398 bytesagents/openai.yamlasset222 bytes../media-crawler/SKILL.mddoc2,922 bytes
Read SKILL.md
# Zhihu collection
Follow [media-crawler](../media-crawler/SKILL.md). Require purpose, keyword/content/creator inputs, sample and date bounds, comments/media scope, and invoking Model Memory destination.
Search with `--platform zhihu --type search` using problem wording, concept/category and audience/use-case variants. Shortlist by relevance, argument/content-type diversity, recency, author fit and engagement. Configure `ZHIHU_SPECIFIED_ID_LIST` with full answer, article, or video URLs; configure `ZHIHU_CREATOR_URL_LIST` with full people URLs. Run detail/creator mode.
Preserve content type. For answers retain question context; for articles retain article title; for video identify unavailable transcript rather than inventing one. Separate author text from comments, deduplicate by canonical content ID, and retain discovery-query provenance. Enable comments/media only for a shortlist and stop on challenge/risk control.
Return content-type breakdown, inputs, raw/copied paths, detail/comment/media coverage, time, commit, exclusions and selection rationale.View the complete source on GitHubresearch-product
When your agent uses it
渐进式研究当前产品,并把已经稳定、可追溯的产品认知增量写入根目录 SOUL.md。首次接入产品代码、原型或线上 URL,需要确认产品形态与已有能力,或某个增长 loop 在执行中发现新的产品事实、用户场景、问题与价值证据时使用。不得一次性臆造完整产品画像,也不得仅凭代码功能推断用户、问题或价值。
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
797 tokensWhen the skill is activated
Reference documents
914 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 证据层级
- 每次执行
- 写入边界
- 交付
Files
SKILL.mdcore3,155 bytesagents/openai.yamlasset260 bytesreferences/soul-update.mddoc1,677 bytes../../executors/screenshot-assets/SKILL.mddoc2,331 bytes
Read SKILL.md
# 渐进式产品研究
目标不是完成一份产品报告,而是让 Agent 在真实执行中逐步认识产品。每次只研究当前任务需要的部分,并更新能够跨轮次复用的稳定认知。
## 证据层级
按以下顺序区分,不得混写:
1. **已观察事实**:代码、配置、路由、界面、公开页面、真实数据或用户明确陈述直接支持。
2. **暂定解释**:多条事实共同支持,但仍需要使用或市场证据验证。
3. **工作假设**:为了推进当前 loop 提出的可能用户、问题、场景或价值,必须写明验证方式。
4. **未知**:没有证据时保留“未知”,不为了填满 SOUL 而补齐。
代码通常只能直接证明产品形态、组成和可见能力。不得从“存在某功能”直接推断“用户最需要它”“它解决了某个核心问题”或“这是产品差异化”。View the complete source on GitHubresearch-seo-demand
When your agent uses it
完整调研并确定 SEO 机会:从产品理解、领域词表拆解、关键词矩阵扩展、Bing 真实热度验证、竞品发现、实时 SERP 抓取,到头部页面的搜索引擎层、用户层和质量层拆解。需要查热词、验证搜索量、判断搜索意图、研究竞品页面、寻找信息增益缺口或决定应该做什么 SEO 页面时使用。
What it loads into context
Frontmatter
107 tokensAlways available to the agent
SKILL.md
3,294 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
- 1. 从产品与用户任务开始
- 2. 拆解领域词表并扩展关键词
- 3. 用 Bing Webmaster 验证真实热度
- 4. 抓取实时 SERP
- 5. 三层拆解头部页面
- 6. 选择 SEO 机会
- 7. 调研产出
Scripts executed separately
scripts/analyze-page.mjsscripts/fetch-keyword-stats.mjsscripts/package.jsonscripts/render-pages.mjsscripts/scrape-bing-serp.mjs
Files
SKILL.mdcore12,221 bytesSKILL.mdcore12,221 bytesSKILL.mdcore12,221 bytesSKILL.mdcore12,221 bytesSKILL.mdcore12,221 bytesSKILL.mdcore12,221 bytesagents/openai.yamlasset251 bytesscripts/analyze-page.mjsruns3,110 bytesscripts/fetch-keyword-stats.mjsruns4,822 bytesscripts/package-lock.jsonasset1,664 bytesscripts/package.jsonruns140 bytesscripts/render-pages.mjsruns2,595 bytesscripts/scrape-bing-serp.mjsruns5,144 bytes
Read SKILL.md
# SEO 需求调研
先确认用户真的在搜索什么,再从热词下真实获得排名的页面学习页面形态与内容方法。不要从预想的竞品清单反推关键词;关键词由产品、用户任务、场景和真实搜索数据共同产生,竞品用于学习页面怎么做。
本 Collector 只产出需求、SERP 和竞品页面证据。页面设计与实现交给 `$create-seo-page`,上线后的效果观测交给 `$review-seo-performance`。
## 1. 从产品与用户任务开始
读取产品代码、文档、公开页面、当前转化路径、客户语言、站内搜索、支持记录和已有增长证据。先写清:
- 用户是谁,处在什么情境;
- 用户要完成什么任务;
- 产品通过什么真实动作解决任务;
- 调研的市场、语言和搜索引擎;View the complete source on GitHubxiaohongshu-mcp
When your agent uses it
使用本机 browser-first xiaohongshu-mcp 只读搜索小红书、下载候选首图、补全用户选择的笔记详情,并把脱敏证据写入调用方 Memory。用于 xhs-replicate 的选题和视觉参考研究,取代小红书 MediaCrawler 路径。
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
753 tokensWhen the skill is activated
Reference documents
1,745 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First-run conversation
- Runtime
- Visual selection
- Data boundary
- Handoff
Scripts executed separately
scripts/collect_selected_xiaohongshu_note.pyscripts/collect_xiaohongshu.pyscripts/login_xiaohongshu.ps1scripts/start_xiaohongshu_service.ps1scripts/test_collect_xiaohongshu.pyscripts/test_minimal_continuous_flow.pyscripts/test_validate_visual_reference_selection.pyscripts/validate_visual_reference_selection.py
Files
../../CONFIGURATION.mddoc3,028 bytesSKILL.mdcore3,414 bytesSKILL.mdcore3,414 bytesSKILL.mdcore3,414 bytesSKILL.mdcore3,414 bytesagents/openai.yamlasset257 bytesreferences/cover-screening.mddoc3,433 bytesreferences/runtime.mddoc1,636 bytesscripts/collect_selected_xiaohongshu_note.pyruns3,521 bytesscripts/collect_xiaohongshu.pyruns21,769 bytesscripts/login_xiaohongshu.ps1runs1,657 bytesscripts/start_xiaohongshu_service.ps1runs3,778 bytesscripts/test_collect_xiaohongshu.pyruns8,429 bytesscripts/test_minimal_continuous_flow.pyruns6,196 bytesscripts/test_validate_visual_reference_selection.pyruns2,530 bytesscripts/validate_visual_reference_selection.pyruns3,188 bytes
Read SKILL.md
# Xiaohongshu browser-first collection
Read [runtime.md](references/runtime.md) before startup and [cover-screening.md](references/cover-screening.md) before visual selection.
## First-run conversation
Before collection, tell the user:
- the recommended first-run batch is 25 notes;
- the count is adjustable, but 25 is recommended;
- collection is read-only and saves sanitized research evidence and requested images locally;
- login does not authorize likes, saves, comments, follows, uploads, or publication.
If required settings are missing, stop and invoke `onboard-growth-lab`. Give the user the exact configuration file and fields from [`CONFIGURATION.md`](../../CONFIGURATION.md); never ask them to paste a key, cookie, or signed URL into the conversation.View the complete source on GitHubcreate-seo-page
When your agent uses it
根据完整的 SEO 需求与头部竞品页面证据,设计、撰写并在产品现有仓库中实现高质量 SEO 页面。需要匹配搜索意图决定工具页、资源页、教程页、比较页或解决方案页,创建页面设计文档、提高信息增益、编写 metadata、加入图片、结构化数据、内链并完成工程验证时使用。
What it loads into context
Frontmatter
97 tokensAlways available to the agent
SKILL.md
1,252 tokensWhen the skill is activated
Reference documents
1,180 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 输入门槛
- 用 SERP 决定页面形态
- 先写页面设计文档
- 创造信息增益
- 撰写页面
- 添加图片
- 实现与验证
Files
SKILL.mdcore4,949 bytesagents/openai.yamlasset253 bytesreferences/content-quality.mddoc4,440 bytes
Read SKILL.md
# 创建 SEO 页面
把已验证的搜索需求和 SERP 证据转化成产品现有技术栈与设计系统中的完整页面。
开始前完整读取 [内容质量与投入度](references/content-quality.md)。
## 输入门槛
必须取得:
- 目标用户、搜索情境和任务;
- 主关键词家族、意图、季节性和需求证据;
- 每个候选词前三到五个相关头部页面;
- 每个头部页面自上而下的区块描述;View the complete source on GitHubgenerate-image
When your agent uses it
Generate, edit, or batch-create SEO, marketing, social, and document images with Gemini or OpenAI through the repository-owned Growth Lab image client. Use when a page or content loop needs illustrations, diagrams, covers, reference-image edits, multiple candidates, or verified image text and composition. This is the only AI image-generation Executor in Growth Lab.
What it loads into context
Frontmatter
77 tokensAlways available to the agent
SKILL.md
879 tokensWhen the skill is activated
Reference documents
697 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Define the asset
- Generate
- Control text and structure
- Inspect every result
Scripts executed separately
generate-image.mjs../../models/onboard-growth-lab/scripts/check_configuration.py
Files
../../CONFIGURATION.mddoc3,028 bytesSKILL.mdcore4,085 bytesSKILL.mdcore4,085 bytesSKILL.mdcore4,085 bytesSKILL.mdcore4,085 bytesagents/openai.yamlasset206 bytesgenerate-image.mjsruns11,245 bytes../../models/onboard-growth-lab/scripts/check_configuration.pyruns3,581 bytes
Read SKILL.md
# Generate images
Use `executors/generate-image/generate-image.mjs` for text-to-image and reference-image editing.
It is a repository-owned, zero-dependency Node.js client. Do not call Codex system Skills, private scripts, or files under `~/.codex`.
## Define the asset
Specify:
- placement and purpose;
- subject and visible action;
- composition and aspect ratio;
- visual style and brand palette;
- exact text when text is essential;View the complete source on GitHubreview-seo-page
When your agent uses it
从目标用户的真实搜索场景出发,对抗式审查并修改 SEO 页面,找出搜索意图偏离、低信息量、批量同构、重复转化、AI 腔、术语漂移、无依据主张、metadata 问题和配图场景错位。需要审查 SEO 内容价值、降低 AI 味、检查图片相关性或决定页面保留、合并、重写、删除时使用。
What it loads into context
Frontmatter
108 tokensAlways available to the agent
SKILL.md
1,044 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
- 建立用户任务
- 自上而下审阅
- 对抗测试
- Metadata
- 语言与风格
- 防御性表达
- 输出与修复
Files
SKILL.mdcore4,061 bytesagents/openai.yamlasset240 bytes
Read SKILL.md
# SEO 页面对抗式审阅
先假定每个区块都需要删除。只有直接帮助目标用户理解、判断或行动的内容才保留。使用 Runtime 的真实浏览器检查实际渲染结果,不能只读源代码。
## 建立用户任务
先写清:
- 目标用户;
- 搜索词和搜索意图;
- 用户进入页面时的问题;
- 用户离开前应获得的结果;
- 与该结果直接相关的产品动作。
View the complete source on GitHubreview-seo-performance
When your agent uses it
使用 Bing Webmaster 页面与查询数据、索引状态、产品结果和 Bing AI Performance 证据复盘 SEO 页面,诊断收录、排名、点击率、意图、内容、转化和 AI 引用问题。需要比较周期表现、分析 citations、cited pages、grounding queries、query fan-out 或决定下一步 SEO/GEO 行动时使用。
What it loads into context
Frontmatter
89 tokensAlways available to the agent
SKILL.md
1,203 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
- 收集传统搜索证据
- 收集 Bing AI Performance
- 诊断主要约束
- 输出复盘
Scripts executed separately
../../collectors/bing-webmaster/bing-webmaster.mjs../../collectors/bing-webmaster/bing-webmaster.mjs
Files
../../collectors/bing-webmaster/bing-webmaster.mjsruns4,617 bytes../../collectors/bing-webmaster/bing-webmaster.mjsruns4,617 bytesSKILL.mdcore4,822 bytesSKILL.mdcore4,822 bytesagents/openai.yamlasset251 bytes
Read SKILL.md
# 复盘 SEO 与 AI 可见性
用可比较周期和页面原始目标复盘已发布页面。考虑上线日期、季节性、抓取与收录延迟,把证据与解释分开。
## 收集传统搜索证据
```bash
node collectors/bing-webmaster/bing-webmaster.mjs page-stats \
--site "$SITE_URL" --out <page-stats-file>
node collectors/bing-webmaster/bing-webmaster.mjs page-query-stats \
--site "$SITE_URL" --page "$PAGE_URL" --out <query-stats-file>
node collectors/bing-webmaster/bing-webmaster.mjs url-info \View the complete source on GitHubscreenshot-assets
When your agent uses it
Capture authenticated product screenshots through the repository-owned Playwright CDP script and archive them in the invoking loop's Memory. Use when content needs truthful UI evidence, reusable product screenshots, a selected component, or a full-page browser capture. Requires only user-installed uv and Chrome configured by onboarding; never depends on MCP tools, external Skills, private repositories, or external scripts.
What it loads into context
Frontmatter
80 tokensAlways available to the agent
SKILL.md
487 tokensWhen the skill is activated
Reference documents
2,154 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Preconditions
- Capture
- Quality and privacy
Scripts executed separately
scripts/capture.py
Files
SKILL.mdcore2,331 bytesSKILL.mdcore2,331 bytesSKILL.mdcore2,331 bytesSKILL.mdcore2,331 bytesagents/openai.yamlasset254 bytesscripts/capture.pyruns2,435 bytes../../models/onboard-growth-lab/SKILL.mddoc8,335 bytes
Read SKILL.md
# Screenshot assets
Use [`scripts/capture.py`](scripts/capture.py). It connects to the user's already-running Chrome through CDP, so the user completes login in their own browser and retains control of authentication.
## Preconditions
If `uv`, Chrome, CDP, or the target login is unavailable, invoke [onboard-growth-lab](../../models/onboard-growth-lab/SKILL.md). Do not look for credentials in another repository and do not inject copied tokens or cookies.
Ask for the target URL, what UI fact the screenshot must prove, output path under the invoking Model's Memory, viewport, and optional CSS selector. Never infer a staging URL or test account.
## Capture
Start Chrome with remote debugging as directed by onboarding, let the user log in, then run:
View the complete source on GitHubwechat-article-compose
When your agent uses it
把一个已确认的选题写成微信公众号长文。锁定复刻锚与用户价值、写出 article.md / wechat.yml / _review.md,并通过公众号通用合规检查和人工预览前自检。准备、改写或核验公众号文章时使用;不负责发布,也不产出小红书卡片。
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
1,693 tokensWhen the skill is activated
Reference documents
6,389 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. 确定生产单元
- 1. 阶段一 brief
- 2. 大纲与标题
- 3. 写正文
- 4. 配置与自检
- 交付
- 不做
Scripts executed separately
scripts/check-wechat-compliance.py../xhs-render-cards/scripts/check-banned-phrases.py
Files
../generate-image/SKILL.mddoc4,085 bytes../screenshot-assets/SKILL.mddoc2,331 bytesSKILL.mdcore6,076 bytesSKILL.mdcore6,076 bytesagents/openai.yamlasset241 bytesreferences/article-structure.mddoc1,500 bytesreferences/compliance.mddoc1,171 bytesreferences/editorial-voice.mddoc902 bytesreferences/replicate-value-guide.mddoc2,521 bytesreferences/templates/_review.mddoc1,244 bytesreferences/templates/article.mddoc717 bytesreferences/templates/wechat.ymlasset272 bytesreferences/title-patterns.mddoc1,346 bytesscripts/check-wechat-compliance.pyruns5,756 bytes../wechat-mp-publish/SKILL.mddoc5,188 bytes../xhs-render-cards/references/deai.mddoc3,573 bytes../xhs-render-cards/scripts/check-banned-phrases.pyruns9,214 bytes
Read SKILL.md
# 公众号长文创作 SOP
公众号读者愿意读完长文,前提是标题让他点开、首屏说中他的卡点、每一节都给他一个可带走的结果。本 SOP 的重心在“完整解释 + 真实产品能力 + 可转发价值”。
严格按顺序执行。`source-review.md` 未经用户确认前,不写正文。
## 0. 确定生产单元
必须具备:选题、目标读者、文章类型(教程 / 案例 / 观点 / 更新)、账号角色(官号 / 个人号)、调用方 Model 的 Memory 输出目录,以及来自 `SOUL.md`、产品代码、页面或用户明确提供资料的可验证产品事实。
生产单元目录由调用方决定,默认 `memory/<model-name>/outputs/<YYYYMMDD-slug>/`:
| 文件 | 作用 |
|---|---|View the complete source on GitHubwechat-mp-publish
When your agent uses it
通过微信公众号官方 API 把公众号文章生产单元渲染为微信排版 HTML、生成阅读页预览、上传封面与正文图片并创建草稿;在三重确认下提交发布并查询状态。支持本机直连与固定 IP 远程发布服务两种模式。用户要求预览公众号、同步微信草稿、发布公众号或查询发布状态时使用。
What it loads into context
Frontmatter
97 tokensAlways available to the agent
SKILL.md
1,438 tokensWhen the skill is activated
Reference documents
5,266 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置
- 1. 预览(每次都做)
- 2. 创建草稿(默认终点)
- 3. 受控发布(仅在用户明确要求时)
- 失败处理
- 红线
Scripts executed separately
deploy/Dockerfilescripts/cli.pyscripts/client.pyscripts/payload_builder.pyscripts/remote_client.pyscripts/server.py
Files
../wechat-article-compose/SKILL.mddoc6,076 bytesSKILL.mdcore5,188 bytesSKILL.mdcore5,188 bytesSKILL.mdcore5,188 bytesSKILL.mdcore5,188 bytesSKILL.mdcore5,188 bytesagents/openai.yamlasset275 bytesdeploy/Dockerfileruns1,043 bytesdeploy/docker-compose.ymlasset785 bytesdeploy/server.env.exampleasset1,738 bytesreferences/api.mddoc2,942 bytesreferences/remote-service.mddoc2,195 bytesscripts/cli.pyruns11,211 bytesscripts/client.pyruns9,522 bytesscripts/payload_builder.pyruns28,400 bytesscripts/remote_client.pyruns7,696 bytesscripts/server.pyruns13,873 bytes../../models/onboard-growth-lab/SKILL.mddoc8,335 bytes
Read SKILL.md
# 微信公众号草稿与受控发布
`scripts/` 是仓库自带的零依赖 Python Client(仅用标准库),只调用微信官方接口,见 [api.md](references/api.md)。输入是 [wechat-article-compose](../wechat-article-compose/SKILL.md) 产出的生产单元:
```text
<post-dir>/
├── article.md # 必需
├── wechat.yml # 必需
├── cover.png # 创建草稿时必需(cover 字段可改名)
└── assets/ # 正文图片,可选
```
渲染器支持 `wechat.yml` 的 `theme`(主题名,或 `base` 加 `accent` / `text` / `background` / `link` / `ink` / `tint` / `muted` / `line` / `generic` 颜色覆盖,值可写 `#RRGGBB`)以及正文排版块 `::: card / steps / stats / bars / figure`,语法见 [wechat-article-compose](../wechat-article-compose/SKILL.md)。内置主题:`default`、`white-accent`(白底、中性灰,只用强调色点缀)。品牌色写成覆盖项:
View the complete source on GitHubxhs-render-cards
When your agent uses it
把已批准的小红书草稿、单一分析参考和真实产品素材变成可审查卡片:先完成 DAI 与 image plan,再按确定性、完整效果或可分离图层模式制作,机械验证 PNG 与清单并运行合规检查。精确文字和真实 UI 不交给模型猜测;AI 生图需要单独配置和授权。
What it loads into context
Frontmatter
94 tokensAlways available to the agent
SKILL.md
918 tokensWhen the skill is activated
Reference documents
6,118 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Required inputs
- 1. Lock copy and evidence
- 2. Capture real Product evidence
- 3. Choose one production mode
- 4. Test a three-card vertical slice
- 5. Validate and review
- Stop rules
Scripts executed separately
scripts/check-banned-phrases.pyscripts/check-compliance.pyscripts/test_validate_social_card_pack.pyscripts/validate_social_card_pack.py
Files
../../CONFIGURATION.mddoc3,028 bytes../screenshot-assets/SKILL.mddoc2,331 bytesSKILL.mdcore4,347 bytesSKILL.mdcore4,347 bytesSKILL.mdcore4,347 bytesagents/openai.yamlasset268 bytesreferences/deai.mddoc3,573 bytesreferences/image-plan.mddoc2,270 bytesreferences/imagegen-style-content.mddoc1,315 bytesreferences/imagegen-style-cover.mddoc1,243 bytesreferences/process-doc.mddoc1,212 bytesreferences/quality-gates.mddoc2,130 bytesreferences/rendering.mddoc2,531 bytesreferences/visual-production-contract.mddoc3,436 bytesreferences/visual-review-rubric.mddoc2,761 bytesscripts/check-banned-phrases.pyruns9,214 bytesscripts/check-compliance.pyruns4,553 bytesscripts/test_validate_social_card_pack.pyruns2,844 bytesscripts/validate_social_card_pack.pyruns6,041 bytes
Read SKILL.md
# Xiaohongshu card production
Read [visual-production-contract.md](references/visual-production-contract.md), [rendering.md](references/rendering.md), and [visual-review-rubric.md](references/visual-review-rubric.md). Keep DAI and compliance rules from [deai.md](references/deai.md) and [quality-gates.md](references/quality-gates.md).
## Required inputs
Require before rendering:
- approved draft, exact card copy, account role, reader, and one-sentence user value;
- verified Product facts and Product-owned screenshots or brand assets;
- one validated `visual-reference-selection.json` when external visual research is used;
- output directory in the calling `memory/xhs-replicate/` run;
- target canvas, card count, rights/privacy boundaries, and whether paid image generation is approved.
View the complete source on GitHubonboard-growth-lab
When your agent uses it
通过自然语言完成 Growth Lab 的统一依赖审计与配置。检查所有能力所需的 API key、可直接安装的第三方 CLI/Client、浏览器与登录态;拒绝隐含的外部 Skill 或脚本依赖,告诉用户哪些已配置、哪些缺失、从哪里获取,并允许本轮绕过。需要首次配置、检查环境、修复依赖或询问“还缺什么”时使用。
What it loads into context
Frontmatter
106 tokensAlways available to the agent
SKILL.md
2,154 tokensWhen the skill is activated
Reference documents
5,502 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 工作方式
- 小红书 browser-first 就绪门禁
- MediaCrawler 风险确认与就绪门禁
- 依赖边界
- 判断原则
- 交付格式
Scripts executed separately
scripts/check_configuration.pyscripts/test_check_configuration.py
Files
../../CONFIGURATION.mddoc3,028 bytes../../collectors/media-crawler/references/operations.mddoc5,981 bytes../../collectors/xiaohongshu-mcp/SKILL.mddoc3,414 bytesSKILL.mdcore8,335 bytesreferences/dependencies.mddoc9,864 bytesscripts/check_configuration.pyruns3,581 bytesscripts/test_check_configuration.pyruns1,964 bytes
Read SKILL.md
# Growth Lab 统一 onboarding
这是整个系统唯一的 onboarding 入口。不要要求各业务 Skill 各自重复审计,也不要创建页面、注册全局 command 或维护配置状态机。
## 工作方式
1. 完整读取 [依赖清单](references/dependencies.md)。
2. 先运行 `python models/onboard-growth-lab/scripts/check_configuration.py`,再只读检查当前机器、已声明的第三方 Client 和认证 profile。脚本与回复都不得输出 secret、cookie、token 或认证文件内容。
3. 向用户给出一张统一状态表:`已就绪`、`缺失`、`可选`、`本轮绕过`。
4. 用自然语言询问用户要启用哪些缺失能力、哪些本轮绕过。不要替用户安装所有可选项。
5. 对用户选择启用的项目逐项处理:
- API key:解释用途、官方获取入口、变量名和 [`CONFIGURATION.md`](../../CONFIGURATION.md) 中的本地配置步骤。默认请用户在 `.env.local` 或系统密钥管理器中自行配置;只有用户明确授权写入时才可修改 `.env.local`,且永不回显完整值。
- 第三方 CLI/Client:必须有用户可直接访问的官方来源和安装方式;说明来源、许可证、安装位置与命令,用户确认后安装并检查版本。
- 登录认证:启动上游或业务 Skill 已定义的原生交互流程,让用户本人扫码、OAuth 或输入验证码;认证材料不得进入仓库或 Memory。View the complete source on GitHubrun-seo-page-loop
When your agent uses it
Run an SEO page observation-action-review loop with persistent Memory by coordinating demand research, page creation, adversarial review, image generation, IndexNow submission, and performance review. Use when taking an SEO page from opportunity discovery through publication, measurement, iteration, or continuing a previous SEO loop from Memory.
What it loads into context
Frontmatter
69 tokensAlways available to the agent
SKILL.md
956 tokensWhen the skill is activated
Reference documents
309 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Boundaries
- 1. Read Memory
- 2. Observe
- 3. Decide
- 4. Act
- 5. Review
- 6. Write Memory and continue
Files
SKILL.mdcore4,901 bytesagents/openai.yamlasset220 bytesreferences/memory.mddoc1,627 bytes
Read SKILL.md
# Run the SEO page loop
Coordinate the loop inside the product workspace. Let the current Codex or Claude Code session control the work. Use `memory/run-seo-page-loop/` as this Model's persistent Memory.
```text
Read Memory → Observe → Decide → Act → Review → Write Memory → Next observation
```
Read [memory.md](references/memory.md) before starting. Recover relevant observations, actions, outcomes, conclusions, and next-action recommendations.
## Boundaries
- Keep this Model focused on when and why the loop moves between observation, decision, action, and review.
- Delegate data-collection methods and source-specific interpretation to Collectors.View the complete source on GitHubrun-wechat-article-loop
When your agent uses it
微信公众号长文增长闭环 —— 从读者问题与复刻锚选题、写出可验证的公众号长文、预览与合规检查、同步微信草稿、三重确认下受控发布,到回收阅读与转化数据并复盘。用户要求写公众号、把内容改成公众号、同步或发布微信草稿、查看公众号数据或复盘时使用。
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
1,237 tokensWhen the skill is activated
Reference documents
7,601 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 这条闭环的目标
- ① 观察与选题
- ② 创作
- ③ 预览与检查
- ④ 草稿同步(默认终点)
- ⑤ 受控发布
- ⑥ 结果回收与复盘
- 保留的人工反馈点
- 不做
- Growth Lab Memory 接入
Files
../../collectors/media-crawler/SKILL.mddoc2,922 bytes../../collectors/research-product/SKILL.mddoc3,155 bytes../../executors/wechat-article-compose/SKILL.mddoc6,076 bytes../../executors/wechat-mp-publish/SKILL.mddoc5,188 bytes../onboard-growth-lab/SKILL.mddoc8,335 bytesSKILL.mdcore4,462 bytesagents/openai.yamlasset314 bytesreferences/result-intake.mddoc2,865 bytes
Read SKILL.md
# run-wechat-article-loop — 公众号长文闭环
## 这条闭环的目标
- **打开(阅读数)= 标题与首屏钩子**:让目标读者在订阅列表或转发卡片里想点开。
- **读完与转发(完读、分享、在看)= 完整解释 + 用户价值**:一篇只解决一个主问题,每节都给读者可带走的结果。
- **转化(阅读原文、产品入口点击)= 产品能力服务于方法**:产品出现在读者需要它的那一步,并有具体 CTA。
> 诚实边界:公众号打开量主要受订阅基数、推送时段和转发链路影响,单篇内容优化够不到这些结构性上限。没有粉丝基础的新号,先把文章当作可被转发、可被搜一搜收录的长期资产,而不是期望单次推送带量。
依赖缺失时触发统一的 [onboard-growth-lab](../onboard-growth-lab/SKILL.md)。本 Skill 不自行维护 onboarding。
```text
① 观察与选题 → ② 创作 → ③ 预览与检查 → ④ 草稿同步 → ⑤ 受控发布 → ⑥ 结果回收与复盘View the complete source on GitHubxhs-replicate
When your agent uses it
小红书内容增长闭环 —— 从调研找 idea、锚定爆款骨架、填入真实产品内容、生图与合规检查,到回收 24h/48h/7d 发布结果并完成复盘。用户要求出稿、复刻、月度复盘、查看发布数据或修订内容规律时使用。
What it loads into context
Frontmatter
86 tokensAlways available to the agent
SKILL.md
2,663 tokensWhen the skill is activated
Reference documents
7,723 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 源 Skill 元数据
- 这条流程的目标(项目核心目标,重定义)
- 5 步闭环
- 保留的人工反馈点(只 2 个)
- 红线(自动合规检查 + 人工最终确认)
- 不做什么
- Growth Lab Memory 接入
Files
../../collectors/research-product/SKILL.mddoc3,155 bytes../../collectors/xiaohongshu-mcp/SKILL.mddoc3,414 bytes../../executors/screenshot-assets/SKILL.mddoc2,331 bytes../../executors/xhs-render-cards/SKILL.mddoc4,347 bytes../../executors/xhs-render-cards/references/deai.mddoc3,573 bytes../onboard-growth-lab/SKILL.mddoc8,335 bytesSKILL.mdcore9,447 bytesagents/openai.yamlasset256 bytesreferences/product-opportunity-map.mddoc3,098 bytesreferences/result-intake.mddoc2,888 bytes
Read SKILL.md
# xhs-replicate — 单一参考驱动的内容生产与复盘
## 源 Skill 元数据
- `when_to_use`:用户说「出一篇 / 复刻这条爆款 / 做 X 主题的图文 / 找个爆款套一下 / 蹭这个热点出个内容」时。可独立触发,自带前置补全。
- `arguments`:"topic_or_viral_note role"
- `argument-hint`:"[主题或爆款note_id] [official|personal]"
## 这条流程的目标(项目核心目标,重定义)
- **高效** = 从「调研找 idea」到「发布就绪」的最短链路:锚一条用户确认的高质量参考,迁移可复用的信息层级,填入当前产品的真实内容并出图。产品事实必须来自用户当前 workspace 或明确提供的资料。
- **优质** = 两个指标驱动,**重心全在内容**:
- **曝光(阅读数)= 钩子**:首页钩子照爆款实际编排,从用户痛点 / 热点出发,让人「看到标题封面就想点」。
- **赞藏(赞阅比 / 藏阅比)= 用户价值**:内容有价值、不空、有序清晰、解决用户真实问题——让人「点进来觉得值,愿意赞/收藏」。View the complete source on GitHubSkills included
- media-crawler
- media-crawler-bilibili
- media-crawler-douyin
- media-crawler-kuaishou
- media-crawler-tieba
- media-crawler-weibo
- media-crawler-zhihu
- research-product
- research-seo-demand
- xiaohongshu-mcp
- create-seo-page
- generate-image
- review-seo-page
- review-seo-performance
- screenshot-assets
- wechat-article-compose
- wechat-mp-publish
- xhs-render-cards
- onboard-growth-lab
- run-seo-page-loop
- run-wechat-article-loop
- xhs-replicate
Repository facts
- License
- Apache-2.0
- Created
- Jul 24, 2026
- Last pushed
- Sep 28, 2026
- Forks
- 169
- Open issues
- 0
- Project activity
- Active
Rank over the last 12 weeks
Now #540 · best #400 · down 77 in 30 days
- #532 on Oct 31
- #533 on Nov 1
- #535 on Nov 2
- #536 on Nov 3
- #537 on Nov 4
- #540 since Nov 5
54 earlier periods
- #846 on Aug 2
- #675 on Aug 7
- #618 on Aug 8
- #582 on Aug 9
- #559 on Aug 10
- #530 on Aug 11
- #503 on Aug 12
- #494 on Aug 13
- #478 on Aug 14
- #451 on Aug 15
- #447 on Aug 16
- #438 on Aug 17
- #429 on Aug 18
- #422 on Aug 19
- #416 on Aug 20
- #422 on Aug 21
- #412 on Aug 22
- #426 from Aug 23 to Aug 24
- #419 on Aug 25
- #418 from Aug 26 to Aug 27
- #412 on Aug 28
- #408 on Aug 29
- #400 on Aug 30
- #414 on Aug 31
- #415 on Sep 2
- #411 on Sep 6
- #421 on Sep 7
- #424 on Sep 8
- #423 on Sep 10
- #422 on Sep 13
- #432 on Sep 14
- #436 on Sep 16
- #441 on Sep 18
- #436 on Sep 20
- #438 on Sep 21
- #435 from Sep 24 to Sep 25
- #449 on Sep 28
- #442 on Oct 5
- #449 on Oct 6
- #454 on Oct 7
- #463 on Oct 8
- #464 on Oct 9
- #461 on Oct 11
- #475 on Oct 14
- #478 on Oct 15
- #472 on Oct 17
- #490 on Oct 19
- #492 on Oct 20
- #492 on Oct 22
- #486 on Oct 23
- #519 on Oct 25
- #527 on Oct 28
- #529 on Oct 29
- #531 on Oct 30
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 27 notes
collectors/media-crawler/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/media-crawler/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/media-crawler/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/media-crawler-kuaishou/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/research-seo-demand/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/research-seo-demand/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/research-seo-demand/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/research-seo-demand/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/research-seo-demand/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/xiaohongshu-mcp/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/xiaohongshu-mcp/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/xiaohongshu-mcp/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/generate-image/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/generate-image/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/generate-image/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcollectors/bing-webmaster/bing-webmaster.mjs:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/review-seo-performance/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/screenshot-assets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/screenshot-assets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexecutors/screenshot-assets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 193 network referencesin 24 files: CONFIGURATION.md:23 xiaohongshu-mcp/scripts/test_collect_xiaohongshu.py:29 models/onboard-growth-lab/SKILL.md:42 and 21 more
- 3 obfuscation signalsin 2 files: wechat-mp-publish/scripts/server.py:152 xiaohongshu-mcp/scripts/test_minimal_continuous_flow.py:16
- No instruction overrides
- 32 executable scriptsin 29 files: collectors/bing-webmaster/bing-webmaster.mjs:1 executors/xhs-render-cards/scripts/check-banned-phrases.py:1 models/onboard-growth-lab/scripts/check_configuration.py:1 and 26 more
- 151 references to secretsin 27 files: wechat-mp-publish/scripts/client.py:46 media-crawler/SKILL.md:22 models/onboard-growth-lab/scripts/check_configuration.py:14 and 24 more
- No requests to vote in Hot
Show all 379 signals by file
CONFIGURATION.md
- Network accessline 23
XHS_MCP_ENDPOINT=http://127.0.0.1:18063 - Network accessline 23
XHS_MCP_ENDPOINT=http://127.0.0.1:18063 - Network accessline 23
XHS_MCP_ENDPOINT=http://127.0.0.1:18063 - Network accessline 23
XHS_MCP_ENDPOINT=http://127.0.0.1:18063 - Network accessline 46
[Credential-related source omitted] - Network accessline 46
[Credential-related source omitted] - Network accessline 46
[Credential-related source omitted] - Network accessline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 47
OPENAI_BASE_URL=https://api.openai.com - Network accessline 47
OPENAI_BASE_URL=https://api.openai.com - Network accessline 47
OPENAI_BASE_URL=https://api.openai.com - Network accessline 47
OPENAI_BASE_URL=https://api.openai.com - Network accessline 58
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Network accessline 59
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com - Network accessline 59
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com - Network accessline 59
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com - Network accessline 59
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted]
collectors/bing-webmaster/bing-webmaster.mjs
- Executable scriptline 1
#!/usr/bin/env node - Executable scriptline 1
Executable file; content unavailable - Network accessline 5
const API_BASE = 'https://ssl.bing.com/webmaster/api.svc/json'; - Network accessline 47
const response = await fetch(url, { - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted]
collectors/media-crawler/SKILL.md
- Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted]
collectors/media-crawler/references/operations.md
- Network accessline 5
Source: `https://github.com/NanmiCoder/MediaCrawler`. The repository is external because its license is for non-commercial learning/research. The unified onboarding Skill must obtain confirmation before clone/install/update. - Network accessline 5
Source: `https://github.com/NanmiCoder/MediaCrawler`. The repository is external because its license is for non-commercial learning/research. The unified onboarding Skill must obtain confirmation before clone/install/update. - Network accessline 8
git clone https://github.com/NanmiCoder/MediaCrawler.git "$HOME/.growth-lab/clients/MediaCrawler" - Network accessline 8
git clone https://github.com/NanmiCoder/MediaCrawler.git "$HOME/.growth-lab/clients/MediaCrawler" - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 30
1. 检查 Chrome 版本至少 144,为 MediaCrawler 选择一个固定、仓库外的 profile 目录和未占用端口。默认可使用 `$HOME/.growth-lab/browser-profiles/mediacrawler-chrome` 和 `9223`。 2. 使用安装的 Chrome 启动该实例:`<chrome> --remote-debugging-port=<port> --user-data-dir=<profile-dir> --no-fir - Network accessline 30
1. 检查 Chrome 版本至少 144,为 MediaCrawler 选择一个固定、仓库外的 profile 目录和未占用端口。默认可使用 `$HOME/.growth-lab/browser-profiles/mediacrawler-chrome` 和 `9223`。 2. 使用安装的 Chrome 启动该实例:`<chrome> --remote-debugging-port=<port> --user-data-dir=<profile-dir> --no-fir - Network accessline 31
2. 使用安装的 Chrome 启动该实例:`<chrome> --remote-debugging-port=<port> --user-data-dir=<profile-dir> --no-first-run --no-default-browser-check`。这是持久化专用 profile,不得每轮创建临时目录。 3. 确认外部 checkout 中 `ENABLE_CDP_MODE = True`、`CDP_CONNECT_EXISTING = True` 且 - Network accessline 31
2. 使用安装的 Chrome 启动该实例:`<chrome> --remote-debugging-port=<port> --user-data-dir=<profile-dir> --no-first-run --no-default-browser-check`。这是持久化专用 profile,不得每轮创建临时目录。 3. 确认外部 checkout 中 `ENABLE_CDP_MODE = True`、`CDP_CONNECT_EXISTING = True` 且 - Network accessline 32
3. 确认外部 checkout 中 `ENABLE_CDP_MODE = True`、`CDP_CONNECT_EXISTING = True` 且 `CDP_DEBUG_PORT = <port>`。用 `curl --noproxy '*' http://127.0.0.1:<port>/json/version` 确认返回包含 `webSocketDebuggerUrl` 的可解析 JSON;当前 shell 有代理时必须绕过 localhost。 - Network accessline 32
3. 确认外部 checkout 中 `ENABLE_CDP_MODE = True`、`CDP_CONNECT_EXISTING = True` 且 `CDP_DEBUG_PORT = <port>`。用 `curl --noproxy '*' http://127.0.0.1:<port>/json/version` 确认返回包含 `webSocketDebuggerUrl` 的可解析 JSON;当前 shell 有代理时必须绕过 localhost。 - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted]
collectors/research-seo-demand/SKILL.md
- Access to secretsline 69
[Credential-related source omitted]
collectors/research-seo-demand/scripts/analyze-page.mjs
collectors/research-seo-demand/scripts/fetch-keyword-stats.mjs
- Executable scriptline 1
#!/usr/bin/env node - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 25
process.exit(1); } const BASE = 'https://ssl.bing.com/webmaster/api.svc/json/GetKeywordStats'; - Network accessline 27
const BASE = 'https://ssl.bing.com/webmaster/api.svc/json/GetKeywordStats'; - Network accessline 48
[Credential-related source omitted] - Network accessline 49
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Network accessline 50
const res = await fetch(url);
collectors/research-seo-demand/scripts/package-lock.json
- Network accessline 12
"node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 13
"version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - Network accessline 14
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 26
"node_modules/playwright": { "version": "1.62.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.0.tgz", - Network accessline 27
"version": "1.62.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.0.tgz", "integrity": "sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==", - Network accessline 28
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.0.tgz", - Network accessline 44
"node_modules/playwright-core": { "version": "1.62.0", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.0.tgz", - Network accessline 45
"version": "1.62.0", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.0.tgz", "integrity": "sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==", - Network accessline 46
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.0.tgz",
collectors/research-seo-demand/scripts/package.json
- Executable scriptline 1
Executable file
collectors/research-seo-demand/scripts/render-pages.mjs
- Executable scriptline 1
#!/usr/bin/env node
collectors/research-seo-demand/scripts/scrape-bing-serp.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 28
try { if (!href.includes('/ck/a')) return href; const u = new URL(href, 'https://cn.bing.com').searchParams.get('u'); - Network accessline 29
if (!href.includes('/ck/a')) return href; const u = new URL(href, 'https://cn.bing.com').searchParams.get('u'); if (!u || !u.startsWith('a1')) return href; - Network accessline 30
const u = new URL(href, 'https://cn.bing.com').searchParams.get('u'); - Network accessline 63
const market = process.env.BING_MARKET || 'zh-CN'; const host = market.toLowerCase() === 'zh-cn' ? 'cn.bing.com' : 'www.bing.com'; const url = `https://${host}/search?q=${encodeURIComponent(keyword)}&setmkt=${encodeURIComponent(market)} - Network accessline 64
const host = market.toLowerCase() === 'zh-cn' ? 'cn.bing.com' : 'www.bing.com'; const url = `https://${host}/search?q=${encodeURIComponent(keyword)}&setmkt=${encodeURIComponent(market)}&count=20`; await page.goto(url, { waitUntil: 'domc - Network accessline 65
const url = `https://${host}/search?q=${encodeURIComponent(keyword)}&setmkt=${encodeURIComponent(market)}&count=20`;
collectors/xiaohongshu-mcp/references/runtime.md
collectors/xiaohongshu-mcp/scripts/collect_selected_xiaohongshu_note.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 62
"access_mode": "authorized read-only detail request via local xiaohongshu-mcp", "note_id": candidate["note_id"], "public_url": f"https://www.xiaohongshu.com/explore/{candidate['note_id']}", - Network accessline 63
"note_id": candidate["note_id"], "public_url": f"https://www.xiaohongshu.com/explore/{candidate['note_id']}", "title": candidate["title"], - Network accessline 64
"public_url": f"https://www.xiaohongshu.com/explore/{candidate['note_id']}", - Access to secretsline 79
[Credential-related source omitted]
collectors/xiaohongshu-mcp/scripts/collect_xiaohongshu.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 20
DEFAULT_ENDPOINT = "http://127.0.0.1:18063" - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Network accessline 65
body = json.dumps(payload, ensure_ascii=False).encode("utf-8") headers["Content-Type"] = "application/json" request = urllib.request.Request( - Network accessline 66
headers["Content-Type"] = "application/json" request = urllib.request.Request( f"{self.endpoint}{path}", data=body, headers=headers, method=method - Network accessline 67
request = urllib.request.Request( - Network accessline 140
return { "note_id": note_id, "public_url": f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 141
"note_id": note_id, "public_url": f"https://www.xiaohongshu.com/explore/{note_id}", "title": str(card.get("displayTitle") or ""), - Network accessline 142
"public_url": f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 229
candidate = { "note_id": note_id, "public_url": f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 230
"note_id": note_id, "public_url": f"https://www.xiaohongshu.com/explore/{note_id}", "title": str(note.get("title") or ""), - Network accessline 231
"public_url": f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 256
def download_image(opener: urllib.request.OpenerDirector, url: str, timeout: float) -> bytes: request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - Network accessline 257
request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}) - Access to secretsline 431
[Credential-related source omitted] - Access to secretsline 471
[Credential-related source omitted] - Access to secretsline 472
[Credential-related source omitted]
collectors/xiaohongshu-mcp/scripts/login_xiaohongshu.ps1
collectors/xiaohongshu-mcp/scripts/start_xiaohongshu_service.ps1
collectors/xiaohongshu-mcp/scripts/test_collect_xiaohongshu.py
- Executable scriptline 1
Executable file - Network accessline 29
def do_POST(self): length = int(self.headers.get("Content-Length", "0")) requests.append(json.loads(self.rfile.read(length))) - Network accessline 30
length = int(self.headers.get("Content-Length", "0")) requests.append(json.loads(self.rfile.read(length))) self.respond({"feeds": [{ - Network accessline 31
requests.append(json.loads(self.rfile.read(length))) - Network accessline 37
"type": "normal", "displayTitle": "测试标题", "user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, - Network accessline 38
"displayTitle": "测试标题", "user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, "interactInfo": {"likedCount": "12", "commentCount": "3", "collectedCount": "8"}, - Network accessline 39
"user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, - Network accessline 40
"interactInfo": {"likedCount": "12", "commentCount": "3", "collectedCount": "8"}, "cover": {"urlDefault": "https://cdn.example/image?signature=secret"}, }, - Network accessline 41
"cover": {"urlDefault": "https://cdn.example/image?signature=secret"}, - Access to secretsline 61
[Credential-related source omitted] - Network accessline 65
]) self.assertEqual(args.limit, 25) client = collector.XiaohongshuClient(f"http://127.0.0.1:{server.server_port}", 2) - Network accessline 66
self.assertEqual(args.limit, 25) client = collector.XiaohongshuClient(f"http://127.0.0.1:{server.server_port}", 2) client.check_ready() - Network accessline 67
client = collector.XiaohongshuClient(f"http://127.0.0.1:{server.server_port}", 2) - Network accessline 75
serialized = json.dumps(evidence, ensure_ascii=False) self.assertEqual(evidence["collected"], 1) self.assertEqual(evidence["items"][0]["public_url"], "https://www.xiaohongshu.com/explore/note-1") - Network accessline 76
self.assertEqual(evidence["collected"], 1) self.assertEqual(evidence["items"][0]["public_url"], "https://www.xiaohongshu.com/explore/note-1") self.assertNotIn("secret-token", serialized) - Network accessline 77
self.assertEqual(evidence["items"][0]["public_url"], "https://www.xiaohongshu.com/explore/note-1") - Access to secretsline 83
[Credential-related source omitted] - Network accessline 87
def test_rejects_non_local_endpoint(self) -> None: with self.assertRaises(collector.CollectorError): collector.validate_local_endpoint("https://example.com:18063") - Network accessline 89
collector.validate_local_endpoint("https://example.com:18063") - Network accessline 161
"user": {"nickname": "作者"}, "interactInfo": {"likedCount": "10"}, "imageList": [{"urlDefault": f"https://cdn.example/{feed_id}?signature=secret"}], - Network accessline 162
"interactInfo": {"likedCount": "10"}, "imageList": [{"urlDefault": f"https://cdn.example/{feed_id}?signature=secret"}], } - Network accessline 163
"imageList": [{"urlDefault": f"https://cdn.example/{feed_id}?signature=secret"}],
collectors/xiaohongshu-mcp/scripts/test_minimal_continuous_flow.py
- Executable scriptline 1
Executable file - Possible obfuscationline 16
PNG = base64.b64decode( - Network accessline 38
length = int(self.headers.get("Content-Length", "0")) payload = json.loads(self.rfile.read(length)) requests.append({"path": self.path, "payload": payload}) - Network accessline 39
payload = json.loads(self.rfile.read(length)) requests.append({"path": self.path, "payload": payload}) origin = f"http://127.0.0.1:{self.server.server_port}" - Network accessline 40
requests.append({"path": self.path, "payload": payload}) - Network accessline 41
origin = f"http://127.0.0.1:{self.server.server_port}" - Network accessline 49
"type": "normal", "displayTitle": "公开测试标题", "user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, - Network accessline 50
"displayTitle": "公开测试标题", "user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, "interactInfo": {"likedCount": "12", "commentCount": "3", "collectedCount": - Network accessline 51
"user": {"nickname": "公开作者", "avatar": "https://private.example/avatar"}, - Network accessline 93
"研究工作流", "--endpoint", f"http://127.0.0.1:{server.server_port}", - Network accessline 94
"--endpoint", f"http://127.0.0.1:{server.server_port}", "--timeout", - Network accessline 95
f"http://127.0.0.1:{server.server_port}",
collectors/xiaohongshu-mcp/scripts/test_validate_visual_reference_selection.py
- Executable scriptline 1
Executable file
collectors/xiaohongshu-mcp/scripts/validate_visual_reference_selection.py
- Executable scriptline 1
#!/usr/bin/env python3
executors/generate-image/SKILL.md
executors/generate-image/generate-image.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 19
return null; } const GEMINI_BASE_URL = 'https://generativelanguage.googleapis.com'; - Network accessline 20
} const GEMINI_BASE_URL = 'https://generativelanguage.googleapis.com'; const OPENAI_BASE_URL = 'https://api.openai.com'; - Network accessline 21
const GEMINI_BASE_URL = 'https://generativelanguage.googleapis.com'; - Network accessline 22
const OPENAI_BASE_URL = 'https://api.openai.com'; - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 161
[Credential-related source omitted] - Network accessline 176
const response = await fetch( - Access to secretsline 203
[Credential-related source omitted] - Network accessline 219
); } response = await fetch(openAIEndpoint(baseUrl, '/images/edits'), { - Network accessline 220
} response = await fetch(openAIEndpoint(baseUrl, '/images/edits'), { method: 'POST', - Network accessline 221
response = await fetch(openAIEndpoint(baseUrl, '/images/edits'), { - Network accessline 226
}); } else { response = await fetch(openAIEndpoint(baseUrl, '/images/generations'), { - Network accessline 227
} else { response = await fetch(openAIEndpoint(baseUrl, '/images/generations'), { method: 'POST', - Network accessline 228
response = await fetch(openAIEndpoint(baseUrl, '/images/generations'), { - Network accessline 247
} if (image?.url) { const download = await fetch(image.url, { signal: AbortSignal.timeout(TIMEOUT_MS) }); - Network accessline 248
if (image?.url) { const download = await fetch(image.url, { signal: AbortSignal.timeout(TIMEOUT_MS) }); if (!download.ok) throw new Error(`Image download failed with HTTP ${download.status}`); - Network accessline 249
const download = await fetch(image.url, { signal: AbortSignal.timeout(TIMEOUT_MS) });
executors/screenshot-assets/SKILL.md
- Network accessline 21
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \ --cdp http://127.0.0.1:9222 \ - Network accessline 21
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \ --cdp http://127.0.0.1:9222 \ - Network accessline 21
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \ --cdp http://127.0.0.1:9222 \ - Network accessline 21
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \ --cdp http://127.0.0.1:9222 \ - Network accessline 21
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \ --cdp http://127.0.0.1:9222 \ - Network accessline 22
--cdp http://127.0.0.1:9222 \ - Network accessline 22
--cdp http://127.0.0.1:9222 \ - Network accessline 22
--cdp http://127.0.0.1:9222 \ - Network accessline 22
--cdp http://127.0.0.1:9222 \ - Network accessline 22
--cdp http://127.0.0.1:9222 \ - Network accessline 23
--url "https://product.example/workspace/..." \ - Network accessline 23
--url "https://product.example/workspace/..." \ - Network accessline 23
--url "https://product.example/workspace/..." \ - Network accessline 23
--url "https://product.example/workspace/..." \ - Network accessline 23
--url "https://product.example/workspace/..." \
executors/screenshot-assets/scripts/capture.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 38
def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--cdp", default="http://127.0.0.1:9222") - Network accessline 39
parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--cdp", default="http://127.0.0.1:9222") parser.add_argument("--url", required=True) - Network accessline 40
parser.add_argument("--cdp", default="http://127.0.0.1:9222")
executors/wechat-article-compose/SKILL.md
- Network accessline 63
- 小标题用 `## 01 标题` 形式,两位编号显示为主题强调色。 - 品牌色通过 `wechat.yml` 的 `theme` 设置,只作点缀色(编号、线条、标记、强调字),底色保持白色。 - 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。 - Network accessline 63
- 小标题用 `## 01 标题` 形式,两位编号显示为主题强调色。 - 品牌色通过 `wechat.yml` 的 `theme` 设置,只作点缀色(编号、线条、标记、强调字),底色保持白色。 - 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。 - Network accessline 63
- 小标题用 `## 01 标题` 形式,两位编号显示为主题强调色。 - 品牌色通过 `wechat.yml` 的 `theme` 设置,只作点缀色(编号、线条、标记、强调字),底色保持白色。 - 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。 - Network accessline 65
- 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。 - Network accessline 65
- 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。 - Network accessline 65
- 需要可点击入口时使用 `[](https://...)`,alt 会显示为图片下方的链接文字。
executors/wechat-article-compose/scripts/check-wechat-compliance.py
- Executable scriptline 1
Executable file
executors/wechat-mp-publish/SKILL.md
executors/wechat-mp-publish/deploy/Dockerfile
- Executable scriptline 1
Executable file - Network accessline 25
HEALTHCHECK --interval=15s --timeout=5s --retries=3 --start-period=10s \ CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=3).read()" - Network accessline 26
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=3).read()"
executors/wechat-mp-publish/deploy/docker-compose.yml
- Access to secretsline 1
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 20
"python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=3).read()", - Network accessline 21
"-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=3).read()", ] - Network accessline 22
"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=3).read()",
executors/wechat-mp-publish/deploy/server.env.example
executors/wechat-mp-publish/references/api.md
- Access to secretsline 7
[Credential-related source omitted] - Network accessline 16
- 发布能力:<https://developers.weixin.qq.com/doc/service/guide/product/publish.html> - Network accessline 17
- 草稿箱:<https://developers.weixin.qq.com/doc/offiaccount/Draft_Box/Add_draft.html> - Network accessline 18
- 素材管理:<https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html> - Network accessline 19
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted]
executors/wechat-mp-publish/scripts/cli.py
- Executable scriptline 1
#!/usr/bin/env python3
executors/wechat-mp-publish/scripts/client.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
API_BASE = "https://api.weixin.qq.com" - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 137
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 142
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Access to secretsline 186
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted] - Network accessline 191
body = json.dumps(payload, ensure_ascii=False).encode("utf-8") headers["Content-Type"] = "application/json; charset=utf-8" req = urllib.request.Request(url, data=body, headers=headers, method=method) - Network accessline 192
headers["Content-Type"] = "application/json; charset=utf-8" req = urllib.request.Request(url, data=body, headers=headers, method=method) try: - Network accessline 193
req = urllib.request.Request(url, data=body, headers=headers, method=method) - Network accessline 194
try: with urllib.request.urlopen(req, timeout=30) as resp: data = json.loads(resp.read().decode("utf-8")) - Network accessline 195
with urllib.request.urlopen(req, timeout=30) as resp: - Access to secretsline 213
[Credential-related source omitted] - Network accessline 236
[Credential-related source omitted] - Access to secretsline 236
[Credential-related source omitted] - Network accessline 237
req = urllib.request.Request( - Network accessline 245
) try: with urllib.request.urlopen(req, timeout=60) as resp: - Network accessline 246
try: with urllib.request.urlopen(req, timeout=60) as resp: data = json.loads(resp.read().decode("utf-8")) - Network accessline 247
with urllib.request.urlopen(req, timeout=60) as resp:
executors/wechat-mp-publish/scripts/payload_builder.py
executors/wechat-mp-publish/scripts/remote_client.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 91
if body is not None: headers["Content-Type"] = "application/json; charset=utf-8" request = urllib.request.Request(url, data=body, headers=headers, method=method) - Network accessline 92
headers["Content-Type"] = "application/json; charset=utf-8" request = urllib.request.Request(url, data=body, headers=headers, method=method) try: - Network accessline 93
request = urllib.request.Request(url, data=body, headers=headers, method=method) - Network accessline 94
try: with urllib.request.urlopen(request, timeout=180) as response: data = json.loads(response.read().decode("utf-8")) - Network accessline 95
with urllib.request.urlopen(request, timeout=180) as response: - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 120
[Credential-related source omitted]
executors/wechat-mp-publish/scripts/server.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Possible obfuscationline 152
content = base64.b64decode(content_b64, validate=True) - Possible obfuscationline 192
content = base64.b64decode(content_b64, validate=True)
executors/xhs-render-cards/SKILL.md
executors/xhs-render-cards/scripts/check-banned-phrases.py
executors/xhs-render-cards/scripts/check-compliance.py
- Executable scriptline 1
#!/usr/bin/env python3
executors/xhs-render-cards/scripts/test_validate_social_card_pack.py
- Executable scriptline 1
Executable file
executors/xhs-render-cards/scripts/validate_social_card_pack.py
- Executable scriptline 1
#!/usr/bin/env python3
models/onboard-growth-lab/SKILL.md
- Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 42
2. 请用户明确回复类似“我已了解封号风险,并确认使用非正式、可损失的专用账号”。沉默、模糊回复或仅要求“继续”不构成确认。未取得确认就停在风险门禁,不启动登录和抓取。 3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding: - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 43
3. 确认后,让用户选择需要启用的平台:抖音、快手、B 站、微博、贴吧、知乎。小红书使用独立的 browser-first 就绪门禁。未启用的平台必须由用户明确说“本轮绕过”,不得默认忽略。 4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-de - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Network accessline 44
4. 只要启用任一 MediaCrawler 平台,必须先完成不可绕过的 Chrome CDP onboarding:Chrome 版本至少 144;为 MediaCrawler 启动一个使用仓库外持久化 profile 的专用 Chrome 实例,同时显式传入 `--remote-debugging-port=<port>` 和 `--user-data-dir=<profile-dir>`;`curl --noproxy '*' http://127.0.0.1:<por - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted]
models/onboard-growth-lab/references/dependencies.md
- Network accessline 13
| Node.js | Bing、IndexNow、SEO 调研脚本、通用生图 Executor | `command -v node` | Node.js 官方发行版或版本管理器 | 不使用这些能力时 | | Playwright + Chromium | 批量抓取 Bing SERP、渲染竞品页并截图 | `npm --prefix collectors/research-seo-demand/scripts exec playwright -- --version`,再 - Network accessline 14
| Playwright + Chromium | 批量抓取 Bing SERP、渲染竞品页并截图 | `npm --prefix collectors/research-seo-demand/scripts exec playwright -- --version`,再执行一次最小 Chromium 启动检查 | `npm install --prefix collectors/research-seo-demand/scripts`,然后 `npm --prefix co - Network accessline 15
| uv | 第三方 Python Client 与临时依赖 | `command -v uv` | <https://docs.astral.sh/uv/> | 不使用媒体 Client、Playwright 渲染时 | - Network accessline 17
| Chrome 144+ | 其他媒体平台的 MediaCrawler CDP 登录、默认 Playwright 渲染 | 检查 Chrome 版本及 `chrome://inspect/#remote-debugging` | <https://www.google.com/chrome/> | 不用 MediaCrawler 时;小红书使用独立 browser-first Client | - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Network accessline 49
- 用途:小红书关键词搜索、用户指定笔记详情和候选图片的 browser-first 只读采集。 - 来源:<https://github.com/xpzouying/xiaohongshu-mcp>。二进制、源码 checkout 和登录态均放在仓库外。 - Network accessline 50
- 来源:<https://github.com/xpzouying/xiaohongshu-mcp>。二进制、源码 checkout 和登录态均放在仓库外。 - Network accessline 61
- 用途:抖音、快手、B站、微博、贴吧、知乎的搜索、详情、评论、媒体和创作者采集。 - 状态检查:目标目录存在,含 `main.py` 和 `.git`;依赖环境可解析。 - 来源:<https://github.com/NanmiCoder/MediaCrawler>。 - Network accessline 62
- 状态检查:目标目录存在,含 `main.py` 和 `.git`;依赖环境可解析。 - 来源:<https://github.com/NanmiCoder/MediaCrawler>。 - 安装:用户确认许可证和目录后执行 `git clone`,进入目录运行 `uv sync`;记录 `git rev-parse HEAD`。 - Network accessline 63
- 来源:<https://github.com/NanmiCoder/MediaCrawler>。 - Network accessline 64
- 安装:用户确认许可证和目录后执行 `git clone`,进入目录运行 `uv sync`;记录 `git rev-parse HEAD`。 - 强制 CDP:使用 Chrome 144+ 与仓库外的专用持久化 profile,通过 `--remote-debugging-port=<port> --user-data-dir=<profile-dir>` 启动实例;必须验证 `http://127.0.0.1:<port>/json/version` 返回 DevToo - Network accessline 65
- 强制 CDP:使用 Chrome 144+ 与仓库外的专用持久化 profile,通过 `--remote-debugging-port=<port> --user-data-dir=<profile-dir>` 启动实例;必须验证 `http://127.0.0.1:<port>/json/version` 返回 DevTools JSON,并保持 `ENABLE_CDP_MODE = True`、`CDP_CONNECT_EXISTING = True` 与一致的 ` - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted]
models/onboard-growth-lab/scripts/check_configuration.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Access to secretsline 113
[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: 8 facts
- Contacts ssl.bing.com, which SKILL.md, the README and the plugin manifest do not mentioncollectors/bing-webmaster/bing-webmaster.mjs:5High confidence
- Contacts ssl.bing.com, which SKILL.md, the README and the plugin manifest do not mentionresearch-seo-demand/scripts/fetch-keyword-stats.mjs:27High confidence
- Contacts cn.bing.com, which SKILL.md, the README and the plugin manifest do not mentionresearch-seo-demand/scripts/scrape-bing-serp.mjs:30High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionxiaohongshu-mcp/scripts/collect_selected_xiaohongshu_note.py:64High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionxiaohongshu-mcp/scripts/collect_xiaohongshu.py:142High confidence
- Contacts generativelanguage.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentiongenerate-image/generate-image.mjs:21High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentiongenerate-image/generate-image.mjs:22High confidence
- Contacts api.weixin.qq.com, which SKILL.md, the README and the plugin manifest do not mentionwechat-mp-publish/scripts/client.py:21High confidence
Signal confidence: 363 facts
- Network access in code of documentationCONFIGURATION.md:23Low confidence
- Network access in code of documentationCONFIGURATION.md:23Low confidence
- Network access in code of documentationCONFIGURATION.md:23Low confidence
- Network access in code of documentationCONFIGURATION.md:23Low confidence
- Network access in code of documentationCONFIGURATION.md:46Low confidence
- Network access in code of documentationCONFIGURATION.md:46Low confidence
- Network access in code of documentationCONFIGURATION.md:46Low confidence
- Network access in code of documentationCONFIGURATION.md:46Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:46Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:46Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:46Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:46Low confidence
- Network access in code of documentationCONFIGURATION.md:47Low confidence
- Network access in code of documentationCONFIGURATION.md:47Low confidence
- Network access in code of documentationCONFIGURATION.md:47Low confidence
- Network access in code of documentationCONFIGURATION.md:47Low confidence
- Network access in code of documentationCONFIGURATION.md:58Low confidence
- Network access in code of documentationCONFIGURATION.md:58Low confidence
- Network access in code of documentationCONFIGURATION.md:58Low confidence
- Network access in code of documentationCONFIGURATION.md:58Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:58Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:58Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:58Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:58Low confidence
- Network access in code of documentationCONFIGURATION.md:59Low confidence
- Network access in code of documentationCONFIGURATION.md:59Low confidence
- Network access in code of documentationCONFIGURATION.md:59Low confidence
- Network access in code of documentationCONFIGURATION.md:59Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:68Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:68Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:68Low confidence
- Access to secrets in code of documentationCONFIGURATION.md:68Low confidence
- Executable script in code of a file that runscollectors/bing-webmaster/bing-webmaster.mjs:1High confidence
- Executable script in code of a file that runscollectors/bing-webmaster/bing-webmaster.mjs:1High confidence
- Network access in code of a file that runscollectors/bing-webmaster/bing-webmaster.mjs:5High confidence
- Network access in code of a file that runscollectors/bing-webmaster/bing-webmaster.mjs:47High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecollectors/bing-webmaster/bing-webmaster.mjs:147Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecollectors/bing-webmaster/bing-webmaster.mjs:150Low confidence
- Access to secrets in prose of the SKILL.mdmedia-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.mdcollectors/media-crawler/SKILL.md:22Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuemedia-crawler/SKILL.md:23Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuecollectors/media-crawler/SKILL.md:23Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuecollectors/media-crawler/SKILL.md:23Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuecollectors/media-crawler/SKILL.md:23Low confidence
and 313 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md collectors/media-crawler/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md collectors/media-crawler/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md collectors/media-crawler/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md collectors/media-crawler/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md collectors/media-crawler/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.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/tsingyuai-growth-lab/)