Not in the top 1,000 by GitHub stars
KristenPan/pickoo-your-favorites
Local-first creator favorites workbench with evidence-preserving Markdown capture and a complete browser UI.
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
packaging/redskill/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
c47f98297ded → c47f98297ded
skill-source/asset-review-agent/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
c47f98297ded → c47f98297ded
skill-source/creator-content-ingest/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
c47f98297ded → c47f98297ded
skill-source/save-to-favorites/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
c47f98297ded → c47f98297ded
Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- pickoo-your-favorites
packaging/redskill - asset-review-agent
skill-source/asset-review-agent - creator-content-ingest
skill-source/creator-content-ingest - save-to-favorites
skill-source/save-to-favorites
How it works
pickoo-your-favorites
When your agent uses it
本地优先的 AI 收藏夹助手,让桌面 Agent 自动收录和整理小红书、微信、抖音、B站、小宇宙、音乐、文章与常见网页,保留可编辑 Markdown 和原始证据。当用户要安装、启动或配置 Pickoo,以及收藏、搜索、阅读或整理公开内容时使用。
What it loads into context
Frontmatter
108 tokensAlways available to the agent
SKILL.md
789 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
- What Pickoo does
- Authorization boundary
- Start
- Save links
Files
SKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytes
Read SKILL.md
# Pickoo!AI收藏夹助手
Pickoo is a complete local-first AI favorites assistant with a browser frontend, local Node.js server, shared task journal, and three bundled Agent Skills. It turns submitted public links into editable Markdown, source evidence, OCR text, timestamped transcripts, semantic chapters, and reusable ideas and content assets.
Pickoo is for anyone who collects information to remember, understand, or find inspiration. Creators are an important use case, not the product boundary.
The top-level `pickoo-your-favorites` Skill is the product entry point. The bundled `save-to-favorites`, `creator-content-ingest`, and `asset-review-agent` Skills are internal workflow components; do not present or invoke any one of them as a replacement for Pickoo.
## What Pickoo does
- Accepts complete share text or public links from Xiaohongshu, WeChat, Douyin, Bilibili, Xiaoyuzhou, music services, articles, podcasts, and general webpages.
- Routes every new collection through one duplicate-aware intake before capture, OCR, ASR, semantic organization, and evidence review.
- Preserves source text, media, timestamps, processing state, and user edits instead of replacing the source with an AI summary.
- Provides a complete local browser interface for reading, playback, search, collections, tags, likes, notes, saved images, frames, clips, quotes, viewpoints, hooks, and structures.View the complete source on GitHubasset-review-agent
When your agent uses it
Independently review source-extracted quote, viewpoint, hook, and structure candidates. Image and shot assets are outside automatic review and enter only after explicit user interaction.
What it loads into context
Frontmatter
42 tokensAlways available to the agent
SKILL.md
4,453 tokensWhen the skill is activated
Reference documents
4,236 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- One review line
- Review order
- Type standards
- Decision rules
- Reader-facing writing
- Review record
Files
SKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesSKILL.mdcore21,287 bytesagents/openai.yamlasset401 bytesreferences/review-rubric.mddoc2,863 bytes../creator-content-ingest/references/asset-decomposition-system.mddoc6,166 bytes../creator-content-ingest/references/carrier-specific-asset-frameworks.mddoc8,168 bytes../creator-content-ingest/references/content-deconstruction-framework.mddoc3,596 bytes
Read SKILL.md
# Asset Review Agent
This Agent is the independent reviewer for four source-extracted creator asset
types: 金句、观点、钩子、结构.
For hook and structure review, read
`../creator-content-ingest/references/content-deconstruction-framework.md`.
It is the maintained basis for the compact reader projection; keep its richer
evidence and falsification work in the audit record.
Also read `../creator-content-ingest/references/asset-decomposition-system.md`
and `../creator-content-ingest/references/carrier-specific-asset-frameworks.md`,
then select exactly one profile from the bundle's actual `carrier`. The shared
asset names do not imply shared discovery or evidence rules. Treat scene cuts,View the complete source on GitHubcreator-content-ingest
When your agent uses it
Process, validate, repair, or resume an existing Pickoo source package after save-to-favorites or the shared task worker hands it off. Handles evidence-preserving capture, OCR, ASR, chaptering, analysis, and quality-gated assets inside that package. Do not use this skill as the intake route for an ordinary new link; route new 收藏、保存、收录、抓取、归档 or 完整处理 requests through save-to-favorites.
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
6,447 tokensWhen the skill is activated
Reference documents
32,420 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Routing boundary
- Required reading
- Route the request
- Executable baseline
- Non-negotiable execution rules
- Low-intelligence worker protocol
- Output model
- Escalation
Scripts executed separately
bin/ocr-images-darwin-arm64bin/ocr-images-darwin-x64scripts/apply_image_fidelity_review.pyscripts/asr_lexicon.pyscripts/browser_comment_adapters.mjsscripts/capture_publisher_transcript.pyscripts/capture_source.pyscripts/capture_xhs_collection.pyscripts/capture_xhs_collection_item.pyscripts/comment_selection.pyscripts/content_job.pyscripts/douyin_web_capture.pyscripts/finalize_archive.pyscripts/finalize_comments.pyscripts/finalize_settled_assets.pyscripts/finalize_transcript.pyscripts/gate_ledger.pyscripts/manifest_changes.pyscripts/merge_comments.pyscripts/ocr_images.swiftscripts/ocr_organization.pyscripts/ocr_runtime.pyscripts/package_document.pyscripts/plan_transcript_issues.pyscripts/public_page_snapshot.mjsscripts/record_transcript_range_review.pyscripts/refresh_comments.pyscripts/refresh_xiaoyuzhou_shownotes.pyscripts/resource_guard.pyscripts/settle_xhs_public_comments.pyscripts/social_author_tags.pyscripts/targeted_image_ocr.pyscripts/title_normalization.pyscripts/transcribe_package.pyscripts/validate_package.pyscripts/validate_social_analysis.pyscripts/validate_source_assets.pyscripts/vendor/__init__.pyscripts/vendor/douyin_abogus.pyscripts/xhs_collection_login_bridge.mjstests/test_bounded_transcript_review.pytests/test_capture_strategy.pytests/test_comment_login_guard.pytests/test_comment_selection.pytests/test_gate_ledger.pytests/test_image_fidelity_review.pytests/test_plan_transcript_issues.pytests/test_transcribe_qa.pytests/test_transcript_range_review.pytests/test_validate_source_assets.py
Files
SKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesSKILL.mdcore32,787 bytesagents/openai.yamlasset301 bytesassets/asr-lexicon.seed.jsonasset1,298 bytesassets/job.example.jsonasset937 bytesbin/ocr-images-darwin-arm64runs132,600 bytesbin/ocr-images-darwin-x64runs98,104 bytesreferences/agent-handoff.mddoc3,668 bytesreferences/article-pipeline.mddoc6,325 bytesreferences/asset-decomposition-system.mddoc6,166 bytesreferences/asset-review-loop.mddoc10,724 bytesreferences/carrier-specific-asset-frameworks.mddoc8,168 bytesreferences/chapter-contract.mddoc10,292 bytesreferences/comment-signals.mddoc5,100 bytesreferences/content-deconstruction-framework.mddoc3,596 bytesreferences/content-taxonomy.mddoc11,164 bytesreferences/cover-analysis.mddoc5,983 bytesreferences/gate-ledger.mddoc2,158 bytesreferences/image-post-pipeline.mddoc8,750 bytesreferences/job-contract.mddoc3,379 bytesreferences/obsidian-contract.mddoc8,177 bytesreferences/quality-gates.mddoc8,982 bytesreferences/shownote-timeline-adaptation.mddoc5,073 bytesreferences/source-assets-contract.mddoc27,696 bytesreferences/source-assets.schema.jsonasset4,884 bytesreferences/token-discipline.mddoc3,365 bytesreferences/video-pipeline.mddoc12,820 bytesrequirements-asr.txtdoc177 bytesrequirements-ocr.txtdoc36 bytesrequirements.txtdoc100 bytesscripts/apply_image_fidelity_review.pyruns7,879 bytesscripts/asr_lexicon.pyruns5,622 bytesscripts/browser_comment_adapters.mjsruns11,229 bytesscripts/capture_publisher_transcript.pyruns3,866 bytesscripts/capture_source.pyruns124,291 bytesscripts/capture_xhs_collection.pyruns9,469 bytesscripts/capture_xhs_collection_item.pyruns12,155 bytesscripts/comment_selection.pyruns5,332 bytesscripts/content_job.pyruns11,496 bytesscripts/douyin_web_capture.pyruns25,059 bytesscripts/finalize_archive.pyruns6,257 bytesscripts/finalize_comments.pyruns2,387 bytesscripts/finalize_settled_assets.pyruns2,303 bytesscripts/finalize_transcript.pyruns5,120 bytesscripts/gate_ledger.pyruns29,957 bytesscripts/manifest_changes.pyruns1,824 bytesscripts/merge_comments.pyruns10,092 bytesscripts/ocr_images.swiftruns3,176 bytesscripts/ocr_organization.pyruns6,155 bytesscripts/ocr_runtime.pyruns8,635 bytesscripts/package_document.pyruns9,891 bytesscripts/plan_transcript_issues.pyruns7,418 bytesscripts/public_page_snapshot.mjsruns10,707 bytesscripts/record_transcript_range_review.pyruns13,657 bytesscripts/refresh_comments.pyruns7,947 bytesscripts/refresh_xiaoyuzhou_shownotes.pyruns9,011 bytesscripts/resource_guard.pyruns9,821 bytesscripts/settle_xhs_public_comments.pyruns4,048 bytesscripts/social_author_tags.pyruns4,213 bytesscripts/targeted_image_ocr.pyruns4,638 bytesscripts/title_normalization.pyruns1,114 bytesscripts/transcribe_package.pyruns79,872 bytesscripts/validate_package.pyruns10,349 bytesscripts/validate_social_analysis.pyruns9,592 bytesscripts/validate_source_assets.pyruns67,745 bytesscripts/vendor/LICENSE-APACHE-2.0.txtdoc11,358 bytesscripts/vendor/NOTICE.mddoc543 bytesscripts/vendor/__init__.pyruns73 bytesscripts/vendor/douyin_abogus.pyruns34,791 bytesscripts/xhs_collection_login_bridge.mjsruns13,001 bytestests/fixtures/valid-article/manifest.jsonasset110 bytestests/test_bounded_transcript_review.pyruns1,713 bytestests/test_capture_strategy.pyruns5,224 bytestests/test_comment_login_guard.pyruns966 bytestests/test_comment_selection.pyruns2,281 bytestests/test_gate_ledger.pyruns9,609 bytestests/test_image_fidelity_review.pyruns1,762 bytestests/test_plan_transcript_issues.pyruns1,961 bytestests/test_transcribe_qa.pyruns11,241 bytestests/test_transcript_range_review.pyruns9,090 bytestests/test_validate_source_assets.pyruns23,675 bytes
Read SKILL.md
# Creator Content Ingest
Build reusable creative assets from material the user deliberately sends. Preserve what was actually present before analyzing it. Never let an attractive summary hide a failed download, weak transcript, missing image, or uncertain OCR result.
## Routing boundary
This is the downstream package worker inside Pickoo's complete managed workflow, not a user-facing link router. Start only when `save-to-favorites`, the Pickoo shared task center, or an explicit repair/resume request supplies an existing package or a registered Pickoo task. Do not independently accept the same new link or create a parallel archive. Standalone platform-capture and link-intake Skills are obsolete and must not be invoked as alternatives or fallbacks. Return progress and terminal state to the original Pickoo task.
Hermes, Claudian, WorkBuddy, and Codex are equal-quality runtime adapters for this complete skill, not fixed pipeline roles. Any adapter may execute the full workflow; optional queueing and cross-adapter continuation must preserve the same schema and gates.
## Required reading
Read `references/job-contract.md`, `references/quality-gates.md`, `references/gate-ledger.md`, and `references/obsidian-contract.md` for every full ingestion job. For video/audio or article/blog/document, also read `references/chapter-contract.md`. For `analyze`, `cards`, or `full`, read `references/content-taxonomy.md`, `references/source-assets-contract.md`, `references/asset-decomposition-system.md`, and `references/carrier-specific-asset-frameworks.md` before interpreting the source. Use the shared decomposition system once, select exactly one carrier profile, then read exactly one carrier pipeline:
View the complete source on GitHubsave-to-favorites
When your agent uses it
The single complete Pickoo workflow for new Xiaohongshu, WeChat, Douyin, Bilibili, Xiaoyuzhou, podcast, music, article/blog, or general web links. Use for 收藏、保存、收录、抓取、归档、拆解、分析、OCR、ASR or 完整处理 from Codex, WorkBuddy, Hermes, Claude, or Claudian. It owns intake and the complete downstream workflow; obsolete standalone capture or link-intake skills must not be selected.
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
7,476 tokensWhen the skill is activated
Reference documents
3,339 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Routing boundary
- Shared contract
- Save links
- Quality
- Safety
Scripts executed separately
scripts/apply_chapter_semantic_review.pyscripts/build_article_chapters.pyscripts/build_transcript_chapters.pyscripts/capture_netease_music.pyscripts/chapter_title_audit.pyscripts/diarize_package.pyscripts/install_speaker_runtime.shscripts/migrate_shownote_chapter_titles.pyscripts/plan_asset_batch.pyscripts/prepare_asset_review.pyscripts/prepare_chapter_semantic_review.pyscripts/restore_asset_snapshot.pyscripts/save_link.py
Files
SKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesSKILL.mdcore38,578 bytesagents/openai.yamlasset278 bytesreferences/library-contract.mddoc13,907 bytesreferences/netease-music.mddoc2,753 bytesscripts/apply_chapter_semantic_review.pyruns8,472 bytesscripts/build_article_chapters.pyruns18,579 bytesscripts/build_transcript_chapters.pyruns81,216 bytesscripts/capture_netease_music.pyruns31,928 bytesscripts/chapter_title_audit.pyruns9,167 bytesscripts/diarize_package.pyruns23,057 bytesscripts/install_speaker_runtime.shruns1,459 bytesscripts/migrate_shownote_chapter_titles.pyruns3,778 bytesscripts/plan_asset_batch.pyruns4,692 bytesscripts/prepare_asset_review.pyruns40,968 bytesscripts/prepare_chapter_semantic_review.pyruns12,068 bytesscripts/restore_asset_snapshot.pyruns7,154 bytesscripts/save_link.pyruns257,493 bytes
Read SKILL.md
# Save to favorites
Write every Agent's result into the same local library. The frontend is a reader for that library, not a separate database.
## Routing boundary
This is the only automatically selected skill for a new link entering Pickoo. One request gets one intake owner and one shared task; the source platform does not select another top-level skill. Platform capture, OCR, ASR, chaptering, analysis, and asset review are downstream capabilities of this task, not competing entry points.
Do not invoke `creator-content-ingest` or `asset-review-agent` as another route, including as a user-facing downstream Skill. They are internal implementation contracts owned and scheduled by this workflow after the Pickoo package exists. Obsolete standalone platform-capture and link-intake Skills are not part of Pickoo's runtime, including as an explicit alternative or fallback. All platform capture, OCR, ASR, chaptering, analysis, and archive work stays inside this managed workflow.
## Shared contract
Read [references/library-contract.md](references/library-contract.md) before writing. Use the bundled `scripts/save_link.py` as the single entry point so duplicate detection and Markdown output stay identical across Agents.
View the complete source on GitHubSkills included
- pickoo-your-favorites
- asset-review-agent
- creator-content-ingest
- save-to-favorites
Repository facts
- License
- MIT
- Created
- Aug 25, 2026
- Last pushed
- Sep 17, 2026
- Forks
- 4
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 133 notes
packaging/redskill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackaging/redskill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackaging/redskill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpackaging/redskill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill-source/asset-review-agent/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 1 dangerous shell commandin 1 file: creator-content-ingest/scripts/public_page_snapshot.mjs:3
- 226 network referencesin 26 files: save-to-favorites/scripts/save_link.py:67 creator-content-ingest/scripts/capture_source.py:546 save-to-favorites/scripts/capture_netease_music.py:101 and 23 more
- 1 obfuscation signalin 1 file: creator-content-ingest/scripts/capture_source.py:1119
- No instruction overrides
- 63 executable scriptsin 63 files: creator-content-ingest/bin/ocr-images-darwin-arm64:1 creator-content-ingest/bin/ocr-images-darwin-x64:1 creator-content-ingest/scripts/apply_image_fidelity_review.py:1 and 60 more
- 21 references to secretsin 7 files: save-to-favorites/scripts/save_link.py:77 creator-content-ingest/scripts/capture_source.py:55 creator-content-ingest/scripts/ocr_runtime.py:198 and 4 more
- No requests to vote in Hot
Show all 312 signals by file
packaging/redskill/SKILL.md
- Network accessline 34
2. In this Skill directory, install Node dependencies with `npm ci` only after approval. 3. Install Python dependencies from `skill-source/creator-content-ingest/requirements.txt` only when capture is requested and after approval. 4. Start - Network accessline 35
3. Install Python dependencies from `skill-source/creator-content-ingest/requirements.txt` only when capture is requested and after approval. 4. Start with `npm start` and open `http://127.0.0.1:4324`. 5. Let the user choose a library in se - Network accessline 36
4. Start with `npm start` and open `http://127.0.0.1:4324`.
skill-source/creator-content-ingest/assets/job.example.json
- Network accessline 5
"source_agent": "hermes", "input_channel": "user-direct", "raw_input": "这篇小红书的封面和观点都值得学习 https://xhslink.cn/o/example", - Network accessline 6
"input_channel": "user-direct", "raw_input": "这篇小红书的封面和观点都值得学习 https://xhslink.cn/o/example", "source": { - Network accessline 7
"raw_input": "这篇小红书的封面和观点都值得学习 https://xhslink.cn/o/example", - Network accessline 8
"source": { "url": "https://xhslink.cn/o/example", "local_files": [], - Network accessline 9
"url": "https://xhslink.cn/o/example",
skill-source/creator-content-ingest/bin/ocr-images-darwin-arm64
- Executable scriptline 1
Binary executable
skill-source/creator-content-ingest/bin/ocr-images-darwin-x64
- Executable scriptline 1
Binary executable
skill-source/creator-content-ingest/references/asset-decomposition-system.md
- Network accessline 41
| Carrier | Mature basis | Reuse policy | Forbidden inference | |---|---|---|---| | Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen t - Network accessline 41
| Carrier | Mature basis | Reuse policy | Forbidden inference | |---|---|---|---| | Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen t - Network accessline 42
|---|---|---|---| | Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen text, visible action, and result changes. | A camera cut is not a - Network accessline 42
|---|---|---|---| | Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen text, visible action, and result changes. | A camera cut is not a - Network accessline 43
| Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen text, visible action, and result changes. | A camera cut is not automatically a cha - Network accessline 43
| Video | [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | Optional cut/transition boundary proposals. Merge with reviewed speech, on-screen text, visible action, and result changes. | A camera cut is not automatically a cha - Network accessline 44
| Podcast / spoken audio | [pyannote.audio](https://github.com/pyannote/pyannote-audio) concepts; current Sherpa-ONNX runtime with a pyannote segmentation model | Keep the existing runtime. Reuse diarization only for “who spoke when,” attri - Network accessline 44
| Podcast / spoken audio | [pyannote.audio](https://github.com/pyannote/pyannote-audio) concepts; current Sherpa-ONNX runtime with a pyannote segmentation model | Keep the existing runtime. Reuse diarization only for “who spoke when,” attri - Network accessline 45
| Image post / document image | Direct image inspection plus source-authored text first; Apple Vision for the baseline page pass; [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) as a portable/layout-aware fallback | Run one bounded b - Network accessline 45
| Image post / document image | Direct image inspection plus source-authored text first; Apple Vision for the baseline page pass; [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) as a portable/layout-aware fallback | Run one bounded b - Network accessline 46
| Article / WeChat / web document | Platform-specific canonical capture first; [Trafilatura](https://github.com/adbar/trafilatura) as generic-web extraction fallback; [Argdown](https://github.com/argdown/argdown) relation concepts | Recover - Network accessline 46
| Article / WeChat / web document | Platform-specific canonical capture first; [Trafilatura](https://github.com/adbar/trafilatura) as generic-web extraction fallback; [Argdown](https://github.com/argdown/argdown) relation concepts | Recover - Network accessline 47
| Music | Verified, rights-compatible lyrics evidence for quotes; [MSAF](https://github.com/urinieto/msaf) or [All-In-One](https://github.com/mir-aidj/all-in-one) as optional structure enhancement | Scan short exact lyric lines for quote va - Network accessline 47
| Music | Verified, rights-compatible lyrics evidence for quotes; [MSAF](https://github.com/urinieto/msaf) or [All-In-One](https://github.com/mir-aidj/all-in-one) as optional structure enhancement | Scan short exact lyric lines for quote va
skill-source/creator-content-ingest/references/content-deconstruction-framework.md
- Network accessline 7
- [BrowserAct YouTube transcript analysis](https://github.com/browser-act/skills/blob/main/solutions/video-platforms/youtube-transcript-analysis-api-skill/SKILL.md) separates structure/hook, core message, evidence/credibility, and business/ - Network accessline 7
- [BrowserAct YouTube transcript analysis](https://github.com/browser-act/skills/blob/main/solutions/video-platforms/youtube-transcript-analysis-api-skill/SKILL.md) separates structure/hook, core message, evidence/credibility, and business/ - Network accessline 8
- [Storytelling Skills](https://github.com/yaxeen/storytelling-skills) treats a hook as a curiosity/tension contract that must be paid off, and long-form structure as a chain of opened and closed loops. Adopt promise-to-payoff tracing; trea - Network accessline 8
- [Storytelling Skills](https://github.com/yaxeen/storytelling-skills) treats a hook as a curiosity/tension contract that must be paid off, and long-form structure as a chain of opened and closed loops. Adopt promise-to-payoff tracing; trea - Network accessline 9
- [Viral Reverse-Engineering](https://github.com/social-media-skills/skills/tree/main/skills/viral-reverse-engineering) distinguishes surface, retention structure, emotional/share driver, and distribution confounds. Its counterfactual test— - Network accessline 9
- [Viral Reverse-Engineering](https://github.com/social-media-skills/skills/tree/main/skills/viral-reverse-engineering) distinguishes surface, retention structure, emotional/share driver, and distribution confounds. Its counterfactual test—
skill-source/creator-content-ingest/references/job-contract.md
skill-source/creator-content-ingest/references/obsidian-contract.md
- Network accessline 120
"mode": "full", "content_form": "image_post", "source": {"canonical_url": "https://...", "stable_id": "abc123"}, - Network accessline 121
"content_form": "image_post", "source": {"canonical_url": "https://...", "stable_id": "abc123"}, "artifacts": [], - Network accessline 122
"source": {"canonical_url": "https://...", "stable_id": "abc123"},
skill-source/creator-content-ingest/references/source-assets.schema.json
skill-source/creator-content-ingest/scripts/apply_image_fidelity_review.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/asr_lexicon.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/browser_comment_adapters.mjs
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/scripts/capture_publisher_transcript.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 64
manifest = json.loads(manifest_path.read_text("utf-8")) fetched = subprocess.run( ["curl", "-sSL", "--fail", args.url], check=True, text=True, capture_output=True, - Network accessline 65
fetched = subprocess.run( ["curl", "-sSL", "--fail", args.url], check=True, text=True, capture_output=True, ).stdout
skill-source/creator-content-ingest/scripts/capture_source.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 55
[Credential-related source omitted] - Network accessline 546
))) candidates.extend([ f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 547
candidates.extend([ f"https://www.xiaohongshu.com/explore/{note_id}", f"https://www.xiaohongshu.com/discovery/item/{note_id}", - Network accessline 548
f"https://www.xiaohongshu.com/explore/{note_id}", - Network accessline 549
f"https://www.xiaohongshu.com/discovery/item/{note_id}", - Access to secretsline 560
[Credential-related source omitted] - Network accessline 639
), reverse=True) is_video = note.get("type") == "video" or bool(candidates) canonical = f"https://www.xiaohongshu.com/discovery/item/{note_id}" - Network accessline 640
is_video = note.get("type") == "video" or bool(candidates) canonical = f"https://www.xiaohongshu.com/discovery/item/{note_id}" interact = note.get("interactInfo") or {} - Network accessline 641
canonical = f"https://www.xiaohongshu.com/discovery/item/{note_id}" - Access to secretsline 702
[Credential-related source omitted] - Network accessline 715
resolved = source_url if not re.search(r"/(?:note|video)/\d+", urlparse(source_url).path): resolver = requests.Session() - Network accessline 716
if not re.search(r"/(?:note|video)/\d+", urlparse(source_url).path): resolver = requests.Session() resolved = resolver.get(source_url, headers=HEADERS, timeout=30, allow_redirects=True).url - Network accessline 717
resolver = requests.Session() - Network accessline 744
response = request( session, f"https://api.bilibili.com/x/web-interface/view?{key}={value}", - Network accessline 745
session, f"https://api.bilibili.com/x/web-interface/view?{key}={value}", referer=referer, - Network accessline 746
f"https://api.bilibili.com/x/web-interface/view?{key}={value}", - Network accessline 766
response = request( session, f"https://api.bilibili.com/x/tag/archive/tags?{key}={value}", - Network accessline 767
session, f"https://api.bilibili.com/x/tag/archive/tags?{key}={value}", referer=referer, - Network accessline 768
f"https://api.bilibili.com/x/tag/archive/tags?{key}={value}", - Network accessline 792
try: response = session.get( f"https://api.bilibili.com/x/v2/reply/main?type=1&oid={aid}&mode=3&next=0&ps=20", - Network accessline 793
response = session.get( f"https://api.bilibili.com/x/v2/reply/main?type=1&oid={aid}&mode=3&next=0&ps=20", headers={"User-Agent": "Mozilla/5.0", "Referer": referer, "Accept-Language": HEADERS["Accept-Language"]}, - Network accessline 794
f"https://api.bilibili.com/x/v2/reply/main?type=1&oid={aid}&mode=3&next=0&ps=20", - Network accessline 868
webpage = str(info.get("webpage_url") or source_url) key, stable_id = bilibili_content_key(webpage, source_url) canonical = f"https://www.bilibili.com/video/{stable_id if key == 'bvid' else f'av{stable_id}'}" - Network accessline 869
key, stable_id = bilibili_content_key(webpage, source_url) canonical = f"https://www.bilibili.com/video/{stable_id if key == 'bvid' else f'av{stable_id}'}" public = bilibili_public_video_metadata(session, key, stable_id, canonical) - Network accessline 870
canonical = f"https://www.bilibili.com/video/{stable_id if key == 'bvid' else f'av{stable_id}'}" - Possible obfuscationline 1119
r"^(?:(\d{1,2})(?:[<U+FE0F>⃣①-⑳❶-❿]+|[.、.||]\s*|\s+))(.+)$", - Network accessline 1297
body = shownote_markdown or description shownote_times = xiaoyuzhou_shownote_times(body) canonical = f"https://www.xiaoyuzhoufm.com/episode/{episode_id}" - Network accessline 1298
shownote_times = xiaoyuzhou_shownote_times(body) canonical = f"https://www.xiaoyuzhoufm.com/episode/{episode_id}" images = [] - Network accessline 1299
canonical = f"https://www.xiaoyuzhoufm.com/episode/{episode_id}" - Access to secretsline 2301
[Credential-related source omitted] - Network accessline 2722
def main() -> int: args = parse_args() session = requests.Session() - Network accessline 2723
args = parse_args() session = requests.Session() try: - Network accessline 2724
session = requests.Session() - Access to secretsline 2726
[Credential-related source omitted]
skill-source/creator-content-ingest/scripts/capture_xhs_collection.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
def fetch(url: str, timeout: float) -> tuple[str, str, int]: - Network accessline 35
headers = {"User-Agent": MOBILE_UA, "Accept": "text/html,application/xhtml+xml", "Accept-Language": "zh-CN,zh;q=0.9"} for _ in range(4): response = requests.get(current, headers=headers, timeout=timeout, allow_redirects=False, s - Network accessline 36
for _ in range(4): response = requests.get(current, headers=headers, timeout=timeout, allow_redirects=False, stream=True) if 300 <= response.status_code < 400: - Network accessline 37
response = requests.get(current, headers=headers, timeout=timeout, allow_redirects=False, stream=True) - Network accessline 99
params = {"board_id": board_id} signed = client.sign_headers_get(uri=path, cookies=cookies, params=params) response = requests.get( - Network accessline 100
signed = client.sign_headers_get(uri=path, cookies=cookies, params=params) response = requests.get( "https://edith.xiaohongshu.com" + path, - Network accessline 101
response = requests.get( - Network accessline 102
"https://edith.xiaohongshu.com" + path, - Network accessline 105
"User-Agent": MOBILE_UA, "Accept": "application/json, text/plain, */*", "Origin": "https://www.xiaohongshu.com", - Network accessline 106
"Accept": "application/json, text/plain, */*", "Origin": "https://www.xiaohongshu.com", "Referer": board_url, - Network accessline 107
"Origin": "https://www.xiaohongshu.com", - Network accessline 165
"position": len(items) + 1, "note_id": note_id, "canonical_url": f"https://www.xiaohongshu.com/discovery/item/{note_id}", - Network accessline 166
"note_id": note_id, "canonical_url": f"https://www.xiaohongshu.com/discovery/item/{note_id}", "acquisition_url": f"https://www.xiaohongshu.com/explore/{note_id}{query}", - Network accessline 167
"canonical_url": f"https://www.xiaohongshu.com/discovery/item/{note_id}", - Network accessline 168
"acquisition_url": f"https://www.xiaohongshu.com/explore/{note_id}{query}", - Network accessline 181
"status": "complete" if complete else "partial", "capture": {"method": enumeration_method, "authenticated": False, "browser_profile_used": False, "account_session_used": False, "retrieved_at": datetime.now().astimezone().isoformat(t - Network accessline 182
"capture": {"method": enumeration_method, "authenticated": False, "browser_profile_used": False, "account_session_used": False, "retrieved_at": datetime.now().astimezone().isoformat(timespec="seconds"), "elapsed_seconds": round(elapsed, 3), - Network accessline 183
"collection": {"platform": "xhs", "board_id": board_id, "canonical_url": f"https://www.xiaohongshu.com/board/{board_id}", "title": text(info, "name", "title", "boardName"), "declared_count": declared}, - Network accessline 194
started = time.perf_counter() try: page, resolved, size = fetch(args.url, args.timeout) - Network accessline 195
try: page, resolved, size = fetch(args.url, args.timeout) state = initial_state(page) - Network accessline 196
page, resolved, size = fetch(args.url, args.timeout)
skill-source/creator-content-ingest/scripts/capture_xhs_collection_item.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 35
def fetch_public_html(source_url: str, timeout: float) -> tuple[str, str, int]: response = requests.get( - Network accessline 36
response = requests.get( - Network accessline 226
package = args.output_root.expanduser().resolve() / f"S-xhs-{note_id}" package.mkdir(parents=True, exist_ok=True) session = requests.Session() - Network accessline 227
package.mkdir(parents=True, exist_ok=True) session = requests.Session() cover, cover_error = download_cover(session, item, package, resolved) - Network accessline 228
session = requests.Session() - Network accessline 229
cover, cover_error = download_cover(session, item, package, resolved) canonical = f"https://www.xiaohongshu.com/discovery/item/{note_id}" title = str(item.get("displayTitle") or item.get("title") or note_id).strip() - Network accessline 230
canonical = f"https://www.xiaohongshu.com/discovery/item/{note_id}"
skill-source/creator-content-ingest/scripts/comment_selection.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/content_job.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/douyin_web_capture.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 6
[Credential-related source omitted] - Network accessline 268
"content_form": content_form, "stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/{route}/{aweme_id}", - Network accessline 269
"stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/{route}/{aweme_id}", "resolved_url_redacted": f"https://www.douyin.com/{route}/{aweme_id}", - Network accessline 270
"canonical_url": f"https://www.douyin.com/{route}/{aweme_id}", - Network accessline 271
"resolved_url_redacted": f"https://www.douyin.com/{route}/{aweme_id}", - Network accessline 299
def capture_video_note(aweme_id: str, _browser: str = "chrome", mode: str = "full", acquisition_url: str | None = None) -> dict[str, Any]: canonical_url = f"https://www.douyin.com/video/{aweme_id}" - Network accessline 300
canonical_url = f"https://www.douyin.com/video/{aweme_id}" - Network accessline 360
"content_form": "video", "stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/video/{aweme_id}", - Network accessline 361
"stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/video/{aweme_id}", "resolved_url_redacted": f"https://www.douyin.com/video/{aweme_id}", - Network accessline 362
"canonical_url": f"https://www.douyin.com/video/{aweme_id}", - Network accessline 363
"resolved_url_redacted": f"https://www.douyin.com/video/{aweme_id}", - Network accessline 496
def capture_image_note(aweme_id: str, _browser: str = "chrome", mode: str = "full", acquisition_url: str | None = None) -> dict[str, Any]: canonical_url = f"https://www.douyin.com/note/{aweme_id}" - Network accessline 497
canonical_url = f"https://www.douyin.com/note/{aweme_id}" - Network accessline 498
value = _snapshot( acquisition_url or canonical_url, fallback_urls=[canonical_url, f"https://www.iesdouyin.com/share/slides/{aweme_id}/"], - Network accessline 499
acquisition_url or canonical_url, fallback_urls=[canonical_url, f"https://www.iesdouyin.com/share/slides/{aweme_id}/"], image_note=True, - Network accessline 500
fallback_urls=[canonical_url, f"https://www.iesdouyin.com/share/slides/{aweme_id}/"], - Network accessline 554
"content_form": "image_post", "stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/note/{aweme_id}", - Network accessline 555
"stable_id": aweme_id, "canonical_url": f"https://www.douyin.com/note/{aweme_id}", "resolved_url_redacted": f"https://www.douyin.com/note/{aweme_id}", - Network accessline 556
"canonical_url": f"https://www.douyin.com/note/{aweme_id}", - Network accessline 557
"resolved_url_redacted": f"https://www.douyin.com/note/{aweme_id}",
skill-source/creator-content-ingest/scripts/finalize_archive.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/finalize_comments.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/finalize_settled_assets.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/finalize_transcript.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/gate_ledger.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/manifest_changes.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/merge_comments.py
skill-source/creator-content-ingest/scripts/ocr_images.swift
- Executable scriptline 1
#!/usr/bin/env swift
skill-source/creator-content-ingest/scripts/ocr_organization.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/ocr_runtime.py
skill-source/creator-content-ingest/scripts/package_document.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/scripts/plan_transcript_issues.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/public_page_snapshot.mjs
- Executable scriptline 1
#!/usr/bin/env node - Dangerous shell operationline 3
import { mkdtemp, readFile, rm } from "node:fs/promises"; - Network accessline 67
"--remote-debugging-port=0", `--user-data-dir=${profile}`, ...(crawlerUa ? ["--user-agent=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"] : []), - Network accessline 68
`--user-data-dir=${profile}`, ...(crawlerUa ? ["--user-agent=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"] : []), "about:blank", - Network accessline 69
...(crawlerUa ? ["--user-agent=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"] : []), - Network accessline 145
const { port } = await debuggingPort(); const tab = await withTimeout( fetch(`http://127.0.0.1:${port}/json/new?${encodeURIComponent("about:blank")}`, { method: "PUT" }).then((response) => response.json()), - Network accessline 146
const tab = await withTimeout( fetch(`http://127.0.0.1:${port}/json/new?${encodeURIComponent("about:blank")}`, { method: "PUT" }).then((response) => response.json()), 10_000, - Network accessline 147
fetch(`http://127.0.0.1:${port}/json/new?${encodeURIComponent("about:blank")}`, { method: "PUT" }).then((response) => response.json()),
skill-source/creator-content-ingest/scripts/record_transcript_range_review.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/refresh_comments.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 48
return deferred_comment_result(preliminary) route = "note" if source.get("content_form") == "image_post" else "video" snapshot = douyin_snapshot(f"https://www.douyin.com/{route}/{stable_id}") - Network accessline 49
route = "note" if source.get("content_form") == "image_post" else "video" snapshot = douyin_snapshot(f"https://www.douyin.com/{route}/{stable_id}") page_html = str(snapshot.get("html") or "") - Network accessline 50
snapshot = douyin_snapshot(f"https://www.douyin.com/{route}/{stable_id}") - Network accessline 58
return deferred_comment_result(decision) return douyin_public_comments(page_html, "full" if force else mode, {} if force else metrics) session = requests.Session() - Network accessline 59
return douyin_public_comments(page_html, "full" if force else mode, {} if force else metrics) session = requests.Session() if platform == "bilibili": - Network accessline 60
session = requests.Session()
skill-source/creator-content-ingest/scripts/refresh_xiaoyuzhou_shownotes.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 193
path.parent for path in args.library_root.expanduser().resolve().glob("S-xiaoyuzhou-*/manifest.json") ] session = requests.Session() - Network accessline 194
] session = requests.Session() session.headers.update(HEADERS) - Network accessline 195
session = requests.Session()
skill-source/creator-content-ingest/scripts/resource_guard.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/settle_xhs_public_comments.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/social_author_tags.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/scripts/targeted_image_ocr.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/title_normalization.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/transcribe_package.py
skill-source/creator-content-ingest/scripts/validate_package.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/validate_social_analysis.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/validate_source_assets.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/scripts/vendor/LICENSE-APACHE-2.0.txt
skill-source/creator-content-ingest/scripts/vendor/NOTICE.md
skill-source/creator-content-ingest/scripts/vendor/__init__.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/scripts/vendor/douyin_abogus.py
- Executable scriptline 1
Executable file - Network accessline 9
@version :0.0.3 @License :Apache License 2.0 @Github :https://github.com/johnserf-seed - Network accessline 10
@License :Apache License 2.0 @Github :https://github.com/johnserf-seed @Mail :support@f2.wiki - Network accessline 11
@Github :https://github.com/johnserf-seed - Network accessline 843
url = "https://www.douyin.com/aweme/v1/web/aweme/detail/?" - Network accessline 849
url = "https://www.douyin.com/aweme/v2/web/aweme/stats/?"
skill-source/creator-content-ingest/scripts/xhs_collection_login_bridge.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 33
const match = url.pathname.match(/^\/board\/([a-z0-9_-]+)\/?$/iu); if (!match) throw new Error("bridge accepts only /board/{id}; note detail URLs are forbidden"); return { boardId: match[1], url: `https://www.xiaohongshu.com/board/${mat - Network accessline 34
if (!match) throw new Error("bridge accepts only /board/{id}; note detail URLs are forbidden"); return { boardId: match[1], url: `https://www.xiaohongshu.com/board/${match[1]}` }; } - Network accessline 35
return { boardId: match[1], url: `https://www.xiaohongshu.com/board/${match[1]}` }; - Network accessline 172
[Credential-related source omitted] - Network accessline 173
[Credential-related source omitted] - Network accessline 174
[Credential-related source omitted] - Network accessline 243
[Credential-related source omitted] - Network accessline 244
[Credential-related source omitted] - Network accessline 245
[Credential-related source omitted]
skill-source/creator-content-ingest/tests/test_bounded_transcript_review.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/tests/test_capture_strategy.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 80
response.iter_content.return_value = [b"a" * 600, b"b" * 424] with tempfile.TemporaryDirectory() as temp, mock.patch.object(MODULE, "request", return_value=response) as request: path, returned = MODULE.download(mock.Mock - Network accessline 81
with tempfile.TemporaryDirectory() as temp, mock.patch.object(MODULE, "request", return_value=response) as request: path, returned = MODULE.download(mock.Mock(), "https://media.example/test", Path(temp) / "source", referer="http - Network accessline 82
path, returned = MODULE.download(mock.Mock(), "https://media.example/test", Path(temp) / "source", referer="https://example.com") - Network accessline 83
self.assertEqual(path.stat().st_size, 1024) self.assertEqual(returned, response) request.assert_called_once_with(mock.ANY, "https://media.example/test", referer="https://example.com", stream=True) - Network accessline 84
self.assertEqual(returned, response) request.assert_called_once_with(mock.ANY, "https://media.example/test", referer="https://example.com", stream=True) response.close.assert_called_once() - Network accessline 85
request.assert_called_once_with(mock.ANY, "https://media.example/test", referer="https://example.com", stream=True) - Network accessline 93
root = Path(temp) with self.assertRaisesRegex(ValueError, "safety limit"): MODULE.download(mock.Mock(), "https://media.example/test", root / "source", referer="https://example.com", max_bytes=1000) - Network accessline 94
with self.assertRaisesRegex(ValueError, "safety limit"): MODULE.download(mock.Mock(), "https://media.example/test", root / "source", referer="https://example.com", max_bytes=1000) self.assertEqual(list(root.iterd - Network accessline 95
MODULE.download(mock.Mock(), "https://media.example/test", root / "source", referer="https://example.com", max_bytes=1000)
skill-source/creator-content-ingest/tests/test_comment_login_guard.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/tests/test_comment_selection.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/tests/test_gate_ledger.py
- Executable scriptline 1
Executable file - Network accessline 39
"mode": "full", "content_form": "video", "source": {"platform": "xhs", "stable_id": "example", "canonical_url": "https://example.com/note"}, - Network accessline 40
"content_form": "video", "source": {"platform": "xhs", "stable_id": "example", "canonical_url": "https://example.com/note"}, "document": {"path": DOCUMENT_NAME, "naming_version": 4}, - Network accessline 41
"source": {"platform": "xhs", "stable_id": "example", "canonical_url": "https://example.com/note"},
skill-source/creator-content-ingest/tests/test_image_fidelity_review.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/tests/test_plan_transcript_issues.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/tests/test_transcribe_qa.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/creator-content-ingest/tests/test_transcript_range_review.py
- Executable scriptline 1
Executable file
skill-source/creator-content-ingest/tests/test_validate_source_assets.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/references/library-contract.md
skill-source/save-to-favorites/references/netease-music.md
- Network accessline 5
- `https://163cn.tv/...` public share redirects. - Network accessline 6
- `https://music.163.com/song?id={song_id}` including tracking parameters. - Network accessline 7
- `https://y.music.163.com/m/song?id={song_id}` mobile links. - Network accessline 9
Resolve the public redirect without login or user cookies, extract the numeric song ID, and store only `https://music.163.com/song?id={song_id}` as the canonical URL. Identity token `netease:{song_id}` makes alternate links duplicates.
skill-source/save-to-favorites/scripts/apply_chapter_semantic_review.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/build_article_chapters.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/build_transcript_chapters.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/capture_netease_music.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 101
def canonical_url(song_id: str) -> str: return f"https://music.163.com/song?id={song_id}" - Network accessline 102
return f"https://music.163.com/song?id={song_id}" - Network accessline 115
def fetch_song(session: requests.Session, song_id: str) -> dict: endpoint = "https://music.163.com/api/song/detail/" - Network accessline 116
endpoint = "https://music.163.com/api/song/detail/" - Network accessline 168
def fetch_lyrics(session: requests.Session, song_id: str) -> dict: response = session.get( "https://music.163.com/api/song/lyric", - Network accessline 169
response = session.get( "https://music.163.com/api/song/lyric", params={"id": song_id, "lv": 1, "kv": 1, "tv": -1}, - Network accessline 170
"https://music.163.com/api/song/lyric", - Network accessline 171
params={"id": song_id, "lv": 1, "kv": 1, "tv": -1}, headers={**HEADERS, "Referer": "https://music.163.com/"}, timeout=30, - Network accessline 172
headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 364
response = session.get( "https://music.163.com/api/song/enhance/player/url", - Network accessline 365
"https://music.163.com/api/song/enhance/player/url", - Network accessline 366
params={"ids": f"[{song_id}]", "br": bitrate}, headers={**HEADERS, "Referer": "https://music.163.com/"}, timeout=30, - Network accessline 367
headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 376
with session.get( source_url, headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 377
source_url, headers={**HEADERS, "Referer": "https://music.163.com/"}, timeout=(20, 90), - Network accessline 378
headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 391
endpoint = f"https://music.163.com/song/media/outer/url?id={song_id}.mp3" - Network accessline 392
with session.get( endpoint, headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 393
endpoint, headers={**HEADERS, "Referer": "https://music.163.com/"}, timeout=(20, 90), - Network accessline 394
headers={**HEADERS, "Referer": "https://music.163.com/"}, - Network accessline 649
return 2 try: session = requests.Session() - Network accessline 650
try: session = requests.Session() cookie, bitrate = runtime_netease_session() - Network accessline 651
session = requests.Session()
skill-source/save-to-favorites/scripts/chapter_title_audit.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/diarize_package.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/install_speaker_runtime.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 15
archive_path="$runtime_root/sherpa-onnx-pyannote-segmentation-3-0.tar.bz2" if [[ ! -f "$segmentation_path/model.onnx" ]]; then curl -L --fail --retry 3 -o "$archive_path" \ - Network accessline 16
if [[ ! -f "$segmentation_path/model.onnx" ]]; then curl -L --fail --retry 3 -o "$archive_path" \ "https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-segmentation-models/sherpa-onnx-pyannote-segmentation-3-0.tar.bz2" - Network accessline 17
curl -L --fail --retry 3 -o "$archive_path" \ - Network accessline 18
"https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-segmentation-models/sherpa-onnx-pyannote-segmentation-3-0.tar.bz2" - Network accessline 22
if [[ ! -f "$models_path/$embedding_name" ]]; then curl -L --fail --retry 3 -o "$models_path/$embedding_name" \ - Network accessline 23
curl -L --fail --retry 3 -o "$models_path/$embedding_name" \ - Network accessline 24
"https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/$embedding_name"
skill-source/save-to-favorites/scripts/migrate_shownote_chapter_titles.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/plan_asset_batch.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/prepare_asset_review.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/prepare_chapter_semantic_review.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/restore_asset_snapshot.py
- Executable scriptline 1
#!/usr/bin/env python3
skill-source/save-to-favorites/scripts/save_link.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 67
DOUYIN_LIVE_PHOTO_MIGRATION = "douyin-live-photo-motion-v1" RUNTIME_SETTINGS_FILE = Path(os.getenv("PICKOO_SETTINGS_FILE") or os.getenv("PICKOO_FAVORITES_SETTINGS") or Path.home() / ".config/pickoo/settings.json") DEFAULT_PICKOO_URL = "http - Network accessline 68
RUNTIME_SETTINGS_FILE = Path(os.getenv("PICKOO_SETTINGS_FILE") or os.getenv("PICKOO_FAVORITES_SETTINGS") or Path.home() / ".config/pickoo/settings.json") DEFAULT_PICKOO_URL = "http://127.0.0.1:4324" DEFAULT_SHARED_WAIT_SECONDS = 3_600 - Network accessline 69
DEFAULT_PICKOO_URL = "http://127.0.0.1:4324" - Access to secretsline 77
[Credential-related source omitted] - Network accessline 166
def canonical_netease_url(song_id: str) -> str: return f"https://music.163.com/song?id={song_id}" - Network accessline 167
return f"https://music.163.com/song?id={song_id}" - Network accessline 180
if host in DOUYIN_SHORT_HOSTS: try: response = requests.get( - Network accessline 181
try: response = requests.get( value.strip(), - Network accessline 182
response = requests.get( - Network accessline 190
return value.strip() match = re.search(r"/(video|note)/(\d{16,22})(?:/|$)", urlsplit(response.url).path) return f"https://www.douyin.com/{match.group(1)}/{match.group(2)}" if match else value.strip() - Network accessline 191
match = re.search(r"/(video|note)/(\d{16,22})(?:/|$)", urlsplit(response.url).path) return f"https://www.douyin.com/{match.group(1)}/{match.group(2)}" if match else value.strip() if host != "163cn.tv": - Network accessline 192
return f"https://www.douyin.com/{match.group(1)}/{match.group(2)}" if match else value.strip() - Network accessline 194
return value.strip() try: response = requests.get( - Network accessline 195
try: response = requests.get( value.strip(), headers={"User-Agent": "Mozilla/5.0", "Accept-Language": "zh-CN,zh;q=0.9"}, - Network accessline 196
response = requests.get( - Network accessline 262
note_id = xhs_note_id(candidate) if note_id and has_xhs_detail_context(candidate): redacted = redacted.replace(candidate, f"https://www.xiaohongshu.com/explore/{note_id}") - Network accessline 263
if note_id and has_xhs_detail_context(candidate): redacted = redacted.replace(candidate, f"https://www.xiaohongshu.com/explore/{note_id}") return redacted - Network accessline 264
redacted = redacted.replace(candidate, f"https://www.xiaohongshu.com/explore/{note_id}") - Network accessline 281
match = re.fullmatch(r"/board/([A-Za-z0-9_-]+)/*", parsed.path) if match: return f"https://www.xiaohongshu.com/board/{match.group(1)}" - Network accessline 282
if match: return f"https://www.xiaohongshu.com/board/{match.group(1)}" return None - Network accessline 283
return f"https://www.xiaohongshu.com/board/{match.group(1)}" - Access to secretsline 317
[Credential-related source omitted] - Access to secretsline 3595
[Credential-related source omitted] - Access to secretsline 3619
[Credential-related source omitted] - Access to secretsline 3656
[Credential-related source omitted] - Access to secretsline 3843
[Credential-related source omitted] - Access to secretsline 3844
[Credential-related source omitted] - Access to secretsline 3845
[Credential-related source omitted] - Access to secretsline 3846
[Credential-related source omitted] - Network accessline 3917
response = requests.post(f"{server_url}/api/import", json=payload, timeout=(5, 55)) - Network accessline 3970
for start in range(0, len(job_ids), 40): wanted = job_ids[start:start + 40] status_response = requests.get( - Network accessline 3971
wanted = job_ids[start:start + 40] status_response = requests.get( f"{server_url}/api/jobs", - Network accessline 3972
status_response = requests.get( - Network accessline 4119
stable_id, mode="capture", acquisition_url=str(source.get("canonical_url") or f"https://www.douyin.com/note/{stable_id}"), - Network accessline 4120
mode="capture", acquisition_url=str(source.get("canonical_url") or f"https://www.douyin.com/note/{stable_id}"), ) - Network accessline 4121
acquisition_url=str(source.get("canonical_url") or f"https://www.douyin.com/note/{stable_id}"), - Network accessline 4143
staging_dir = package / "evidence/media" / f".douyin-live-photo-repair-{uuid.uuid4().hex[:10]}" try: session = requests.Session() - Network accessline 4144
try: session = requests.Session() for position, item in sorted(discovered.items()): - Network accessline 4145
session = requests.Session()
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: 16 facts
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_source.py:548High confidence
- Contacts api.bilibili.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_source.py:746High confidence
- Contacts www.bilibili.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_source.py:870High confidence
- Contacts www.xiaoyuzhoufm.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_source.py:1299High confidence
- Contacts edith.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_xhs_collection.py:102High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_xhs_collection.py:107High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/capture_xhs_collection_item.py:230High confidence
- Contacts www.douyin.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/douyin_web_capture.py:270High confidence
- Contacts www.iesdouyin.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/douyin_web_capture.py:500High confidence
- Contacts www.google.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/public_page_snapshot.mjs:69High confidence
- Contacts www.douyin.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/refresh_comments.py:50High confidence
- Contacts www.douyin.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/vendor/douyin_abogus.py:843High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentioncreator-content-ingest/scripts/xhs_collection_login_bridge.mjs:35High confidence
- Contacts github.com, which SKILL.md, the README and the plugin manifest do not mentionsave-to-favorites/scripts/install_speaker_runtime.sh:18High confidence
- Contacts www.douyin.com, which SKILL.md, the README and the plugin manifest do not mentionsave-to-favorites/scripts/save_link.py:192High confidence
- Contacts www.xiaohongshu.com, which SKILL.md, the README and the plugin manifest do not mentionsave-to-favorites/scripts/save_link.py:264High confidence
Signal confidence: 305 facts
- Network access in prose of the SKILL.mdredskill/SKILL.md:34Low confidence
- Network access in prose of the SKILL.mdredskill/SKILL.md:35Low confidence
- Network access in prose of the SKILL.mdredskill/SKILL.md:36Low confidence
- Executable script in code of a file that runscreator-content-ingest/bin/ocr-images-darwin-arm64:1High confidence
- Executable script in code of a file that runscreator-content-ingest/bin/ocr-images-darwin-x64:1High confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:41Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:41Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:42Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:42Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:43Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:43Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:44Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:44Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:45Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:45Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:46Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:46Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/asset-decomposition-system.md:47Low confidence
- Network access in prose of documentationcreator-content-ingest/references/asset-decomposition-system.md:47Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/content-deconstruction-framework.md:7Low confidence
- Network access in prose of documentationcreator-content-ingest/references/content-deconstruction-framework.md:7Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/content-deconstruction-framework.md:8Low confidence
- Network access in prose of documentationcreator-content-ingest/references/content-deconstruction-framework.md:8Low confidence
- Network access in prose of documentationskill-source/creator-content-ingest/references/content-deconstruction-framework.md:9Low confidence
- Network access in prose of documentationcreator-content-ingest/references/content-deconstruction-framework.md:9Low confidence
- Network access in code of documentationcreator-content-ingest/references/job-contract.md:14Low confidence
- Network access in code of documentationcreator-content-ingest/references/job-contract.md:15Low confidence
- Network access in code of documentationcreator-content-ingest/references/job-contract.md:16Low confidence
- Network access in code of documentationcreator-content-ingest/references/obsidian-contract.md:120Low confidence
- Network access in code of documentationcreator-content-ingest/references/obsidian-contract.md:121Low confidence
- Network access in code of documentationcreator-content-ingest/references/obsidian-contract.md:122Low confidence
- Executable script in code of a file that runscreator-content-ingest/scripts/apply_image_fidelity_review.py:1High confidence
- Executable script in code of a file that runscreator-content-ingest/scripts/asr_lexicon.py:1High confidence
- Executable script in a comment of a file that runscreator-content-ingest/scripts/browser_comment_adapters.mjs:1Low confidence
- Executable script in code of a file that runscreator-content-ingest/scripts/capture_publisher_transcript.py:1High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_publisher_transcript.py:64High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_publisher_transcript.py:65High confidence
- Executable script in code of a file that runscreator-content-ingest/scripts/capture_source.py:1High confidence
- Access to secrets in code of a file that runscreator-content-ingest/scripts/capture_source.py:55High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:546High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:547High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:548High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:549High confidence
- Access to secrets in a comment of a file that runscreator-content-ingest/scripts/capture_source.py:560Low confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:639High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:640High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:641High confidence
- Access to secrets in code of a file that runscreator-content-ingest/scripts/capture_source.py:702High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:715High confidence
- Network access in code of a file that runscreator-content-ingest/scripts/capture_source.py:716High confidence
and 255 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md packaging/redskill/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md packaging/redskill/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md packaging/redskill/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md packaging/redskill/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md packaging/redskill/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md packaging/redskill/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.