Prioritize using this Skill's built-in fixed secure executor, then orchestrate platform Skills that are still independently maintained. Public single-item scraping for Xiaohongshu, Douyin, and Weibo is already built in; do not call the old standalone scraping Skills; do not copy search, collection export, or authentication implementations for other platforms.
Entry Gate
Only the following inputs are accepted:
- One or more content URLs directly provided by the user in the current turn.
- A local URL file provided by the user.
- Candidates in upstream artifacts that are individually marked as
confirmed, or candidates explicitly selected by the user in the current turn. - Explicitly specified by the user
known_collection: URL files, YouTube/Bilibili playlists, known Xiaoyuzhou podcasts or episode lists; WeChat Official Account names/history containers are no longer enumerable containers. - Bounded site containers explicitly specified by the user: public HTTPS
site-url, exactpath-prefix、limit <= 100andmax-depth <= 3; by default only Map is run, and Crawl must also explicitly pass--execute --preflight <file>。 $yichen-bookmarks-exportgenerated link files, but they may only be used after the user separately and explicitly requests reading, downloading, or archiving.
known_collection Must include the exact container URL, ID, or local manifest path, and specify a quantity limit, time range, or explicit full amount. Exact container enumeration only lists entries directly contained in that container and does not constitute search discovery; do not proceed from entries into author homepages, recommendation sections, similar lists, or other sources. WeChat Official Account names cannot be used as executable containers.
If the above conditions are not met, stop and explain that known links, confirmed candidates, or explicit containers are required. Do not search on the user's behalf, browse unspecified accounts/channels, expand similar content, or fill in recommendation lists.
Hard Boundaries
- Do not perform keyword searches or open-ended discovery; unbounded site crawling, browsing unspecified channels/accounts, recommendation expansion, similar content lookup, and cross-source completion are prohibited. Site archiving only allows the public HTTPS same-origin path range explicitly specified by the user, and is subject to the fourfold restrictions of
limit <= 100、max-depth <= 3, signed Map precheck, and explicit--execute. - Do not call any master router; do not call
$yichen-content-archiveagain; do not indirectly return to this Skill through other Skills. - Do not infer "read" as "download," do not infer "download" as logged-in authorization, and do not infer "archive" as writing to Feishu Bitable. Only perform the actions explicitly requested by the user in the current turn.
- Do not automatically read private collections. Authorization in the current turn for collection export cannot be transferred to media download authorization.
- Do not delete any files. When the target exists, create a non-conflicting new directory or filename; do not silently overwrite.
- Do not print or write Cookies, Tokens, login credentials, or full URLs with sensitive query parameters into ordinary logs.
- Do not bypass login, CAPTCHA, paywalls, deletion status, regional restrictions, or access controls.
- The WeChat Official Account route only handles known public article URLs; WeChat Official Account search, complete history, and latest N articles have been unavailable since 2026-07-30, and must not be worked around through login, local deployment, or proxies. Absolutely do not manipulate the WeChat client.
- For known Twitter/X links, use FxTwitter → Jina anonymous public reading first. Only when the anonymous route fails or the Article body is incomplete, list the OpenCLI → xreach fallback; before executing any logged-in fallback, explicit authorization for the current round must be obtained for the current link.
- Xiaohongshu reads anonymously by default. Only when anonymous parsing or media download of the current note fails, and the user has explicitly authorized that target for the current round, may
XHS_COOKIEbe injected from private configuration into the subprocess and--use-cookiebe passed explicitly; Cookies must not be read, printed, or saved. - Weibo only processes public single-content URLs already provided by the user. Always use the anonymous guest route of
weibo_known_url.py, without reading browser Cookies, user configuration, or login state;/u/<uid>?layerid=<id>must not be passed as-is toyt-dlp, and account video pages, search, trending lists, comments, or recommended content must not be enumerated.
Execution flow
1. Lock down scope
First check existing authorization against the current task and trusted upstream handoff, and pass along the already specified actions, source scope, media types, and output locations; if information is sufficient, proceed directly to the next step. A handoff cannot create new authorization, nor does it clear valid authorization the user has already granted for the same action as required. Private reading, login state, downloads, and cost thresholds are checked separately, and must still meet the requirements for the current round or at the time of the action.
Record:
- Input type:
known_urls、url_file、confirmed_candidatesorknown_collection。 - platform and item count.
known_collectionthe exact container reference, enumeration limit/range, and whether enumeration followed by direct archiving within the current request is allowed.- Action:
read、download、archivethe set explicitly requested by the user. - Output directory; if unspecified, use a new date-time directory and do not overwrite old artifacts.
- Whether login state is required; if so, authorization for the current round must be obtained according to the rules of the target platform or the corresponding executor of this Skill.
- Whether it is explicitly required to write Xiaohongshu materials into Feishu Bitable; when not explicitly required, only perform local reading, downloading, or archiving.
A candidate counts as confirmedonly after it is explicitly marked upstream or selected by the user in the current round. The mere existence of a title or keyword does not count as executable input. A channel name or podcast name can be used for container parsing only when the user explicitly designates it as a supported known_collection container and provides a scope; it must not be used as a search term to expand other results. A WeChat Official Account name cannot trigger historical enumeration.
2. Select a single platform route
Read the row corresponding to the target platform and the applicable discipline in platform routes , then read the existing platform Skill, reference files, or script help specified by that route; do not load all platform details for a single platform. Only call allowed known-link/exact-container paths:
- Ordinary web pages: Jina Reader / Web Reader; only read the HTTP(S) URL given by the user, and do not crawl the site.
- Bounded sites: this Skill
firecrawl_site.py; by default Map only generates a signed precheck and a filtered URL list, and only--execute --preflight <file>with the same parameters, not expired, and still matching the content hash calls Firecrawl v2 Crawl. - Twitter/X: this Skill
x_known_url.pyidentifies known Post, Quote, and Article; anonymous FxTwitter is preferred, and anonymous Jina when necessary. When the user explicitly requests video download, useknown_media_download.pyto select the highest-bitrate MP4 publicly returned for that post; logged-in OpenCLI/xreach is only used as an authorized read fallback. - Xiaohongshu: this Skill
xiaohongshu_fetch.py;--skip-mediaRead-only HTML and metadata; only download known note media after removing this parameter, and only after authorization.--use-cookie. Only read when explicitly requested to persist to Feishu: references/xiaohongshu-bitable.md。 - Douyin: This Skill
douyin_download.py;--metadata-onlyonly reads metadata; only download known videos after removing this parameter. - Weibo: This Skill
weibo_known_url.py'sinfoordownload; first normalize the single overlay/status URL provided by the user into an exact detail URL, then read or download anonymously; do not hand account pages to bareyt-dlp。 - WeChat Official Accounts: all known public article URLs (single article or URL file) uniformly use
$yichen-wechat-mp-batch-exporter; official account names, full history, and latest N articles are uniformly markedunsupported; do not call the localsearch, login, download, or proxy fallback. - YouTube: This Skill
youtube_known_url.py'sinfo、download、subtitlesandplaylist; only accept explicit video/playlist URLs, do not search or browse channels. - Bilibili:
bili-cliread known BV/AV/full URLs,yt-dlpdownload; for known playlists, flatten and enumerate first. - Xiaoyuzhou:
xiaoyuzhou_stepfun.pyanonymously read/download known episodes; known podcast lists are only enumerated withxiaoyuzhou_opencli.pyafter authorization in the current round, then return to anonymous batch download. - Other public media platforms: when the user explicitly provides a single public HTTPS content URL and requests downloading video or audio, use
known_media_download.py's anonymousyt-dlp --no-playlistas a fallback; do not disguise keywords, homepages, channels, search results, or playlists as a single-item URL.
When the target platform has no dedicated route, single public HTTPS media downloads enter known_media_download.py; when other actions or exact containers cannot be handled by the existing backend, record the item as unsupported, and do not forward it to the general router, invent a scraping implementation yourself, or degrade it into a search. Logged-in state, account enumeration, playlists, and cross-source expansion must still separately satisfy the corresponding authorization and routing rules.
3. Pre-check first, then execute the authorized action
read: use the platform Skill's metadata, body text, or subtitle reading path, and do not download media along the way.download: download only the body text, images, video, audio, or subtitle types explicitly requested by the user.archive: write platform Skill outputs to a new directory, and retain the source, status, and failure list.
known_collection First generate enumerated-urls.txt or the platform's existing equivalent manifest, record container references, enumeration limits, returned counts, and truncation status, then archive only the items in the manifest. When the user has already explicitly requested "enumerate then archive" in the same request, there is no need to re-confirm the manifest; however, logged-in state, membership content, StepFun quota, or other target-level gates must still be satisfied separately.
Before executing bounded sites, read Bounded site execution. Fixed public HTTPS same-origin paths,limit <= 100、max-depth <= 3; by default only Map, and only when the current scope has obtained explicit execution authorization and the signature pre-check is still valid, explicitly run --execute --preflightwith the exact same four scope parameters. Do not automatically upgrade from Map to Crawl; verify the cost scope before calling, and do not promise fixed pricing or absolute zero retention.
Batch tasks should use low concurrency and support resuming from checkpoints. After a single item fails, record the reason and continue with the remaining confirmed items; do not search for new content just to make up the quantity.
4. Execution anti-overwrite
Use only the safe executor under this Skill scripts/ . Before the first call, read Executor safety and anti-overwrite The same-named section of the target script; sections for other platforms need not be loaded. Output conflicts use a new directory or new filename, anonymous by default; read-only mode does not download media. It is forbidden to bypass authorization, input restrictions, overwrite protection, or signature pre-checks through old scripts, bare OpenCLI, or writing files yourself.
The Agent is forbidden from automatically using compatible --overwrite; Xiaoyuzhou overwrite still requires the user to explicitly name the same absolute directory in the current turn, and to provide a matching independent --confirm-overwrite-exact-dir。wechat_mp_local.py is only a security-compatibility stub,login、search、download fails closed, and WeChat operations must not be performed based on it.
5. Generate the archive manifest
The archive root directory must contain at least:
<archive-root>/
|-- archive-manifest.jsonl
|-- run-summary.json
|-- failures.json
|-- handoff.json
`-- <platform>/
`-- <content-id-or-sequence>/
archive-manifest.jsonl Each line records only one confirmed input, containing at least:
{"item_ref":"opaque-or-line-ref","platform":"xiaohongshu","source_url_ref":"input.txt:3","requested_actions":["archive"],"status":"success","artifact_paths":["/absolute/path"],"route_backend":"xiaohongshu-known-url","fetched_at":"RFC3339"}
Container entries additionally record container_ref、container_position and enumeration_status. When the backend is not a Skill, use route_backend, for example jina-reader、weibo-known-url、youtube-known-url、yt-dlp or xiaoyuzhou-stepfun。
For sensitive URLs, prefer referencing file line numbers, and do not repeat the full value in summaries, chats, or ordinary logs. For missing fields write null, and do not infer or fill them in.
6. Output standard handoff
Read and comply with references/handoff-contract.md. Ordinary known links and precise container handoffs must state discovery_performed: false; only after signature pre-check bounded_site write discovery_performed: true。known_collection use scope.input_kind: known_collection, and reference the enumeration list as an artifact. Continue by stating the actual authorization, absolute paths of artifacts, success/failure counts, and whether the next step requires a new explicit request.
Finally report only:
- The counts of processed, succeeded, failed, skipped, and unsupported.
- The platform Skill actually invoked or the existing backend.
- The archive root directory, manifest, and failure file paths.
- Actions still requiring user decision or re-authorization.
Do not present sampling success as all content being permanently accessible.