@tikomni/skills 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.skill-package-allowlist.txt +1 -3
- package/README.md +41 -49
- package/README.zh-CN.md +43 -51
- package/bin/tikomni-skills.js +2 -2
- package/env.example +37 -56
- package/package.json +7 -5
- package/skills/social-media-crawl/SKILL.md +53 -0
- package/skills/social-media-crawl/agents/openai.yaml +5 -0
- package/skills/social-media-crawl/references/contracts/output-envelope.md +22 -0
- package/skills/social-media-crawl/references/contracts/work-fact-card-fields.md +48 -0
- package/skills/social-media-crawl/references/guides/generic-mcp-objects.md +30 -0
- package/skills/social-media-crawl/references/mcp-usage-contract.md +30 -0
- package/skills/social-media-crawl/references/pipelines/douyin-creator-home.md +7 -0
- package/skills/social-media-crawl/references/pipelines/douyin-single-work.md +7 -0
- package/skills/social-media-crawl/references/pipelines/xiaohongshu-creator-home.md +7 -0
- package/skills/social-media-crawl/references/pipelines/xiaohongshu-single-work.md +7 -0
- package/skills/social-media-crawl/references/schemas/creator-profile.schema.json +33 -0
- package/skills/social-media-crawl/references/schemas/output-envelope.schema.json +41 -0
- package/skills/social-media-crawl/references/schemas/work-collection.schema.json +29 -0
- package/skills/social-media-crawl/references/schemas/work-fact-card.schema.json +67 -0
- package/skills/social-media-crawl/references/service-guides/u2-u3-mandatory-fallback.md +21 -0
- package/skills/social-media-crawl/scripts/__init__.py +2 -0
- package/skills/social-media-crawl/scripts/core/__init__.py +2 -0
- package/skills/{single-work-analysis/scripts/pipeline/asr → social-media-crawl/scripts/core}/asr_pipeline.py +98 -2
- package/skills/social-media-crawl/scripts/core/completeness.py +83 -0
- package/skills/{single-work-analysis → social-media-crawl}/scripts/core/config_loader.py +106 -141
- package/skills/social-media-crawl/scripts/core/mcp_dispatch.py +145 -0
- package/skills/social-media-crawl/scripts/core/object_detection.py +63 -0
- package/skills/{single-work-analysis/scripts/pipeline/asr → social-media-crawl/scripts/core}/poll_u2_task.py +3 -1
- package/skills/{creator-analysis → social-media-crawl}/scripts/core/progress_report.py +32 -0
- package/skills/social-media-crawl/scripts/core/storage_router.py +160 -0
- package/skills/social-media-crawl/scripts/core/u3_fallback.py +328 -0
- package/skills/social-media-crawl/scripts/pipelines/__init__.py +2 -0
- package/skills/social-media-crawl/scripts/pipelines/douyin_creator_home_helpers.py +35 -0
- package/skills/social-media-crawl/scripts/pipelines/douyin_platform_adapter.py +7 -0
- package/skills/{creator-analysis/scripts/author_home/asr → social-media-crawl/scripts/pipelines}/home_asr.py +1 -1
- package/skills/{creator-analysis/scripts/author_home/adapters → social-media-crawl/scripts/pipelines}/platform_adapters.py +8 -2
- package/skills/social-media-crawl/scripts/pipelines/run_douyin_creator_home.py +237 -0
- package/skills/{single-work-analysis/scripts/platform/douyin/run_douyin_single_video.py → social-media-crawl/scripts/pipelines/run_douyin_single_work.py} +58 -149
- package/skills/social-media-crawl/scripts/pipelines/run_xiaohongshu_creator_home.py +237 -0
- package/skills/{single-work-analysis/scripts/platform/xiaohongshu/run_xiaohongshu_extract.py → social-media-crawl/scripts/pipelines/run_xiaohongshu_single_work.py} +30 -119
- package/skills/{creator-analysis/scripts/author_home → social-media-crawl/scripts/pipelines}/schema.py +1 -1
- package/skills/social-media-crawl/scripts/pipelines/xiaohongshu_creator_home_helpers.py +35 -0
- package/skills/social-media-crawl/scripts/pipelines/xiaohongshu_platform_adapter.py +7 -0
- package/skills/social-media-crawl/scripts/writers/__init__.py +1 -0
- package/skills/social-media-crawl/scripts/writers/write_work_fact_card.py +391 -0
- package/skills/creator-analysis/SKILL.md +0 -95
- package/skills/creator-analysis/agents/openai.yaml +0 -4
- package/skills/creator-analysis/env.example +0 -36
- package/skills/creator-analysis/references/api-capability-index.md +0 -92
- package/skills/creator-analysis/references/api-contracts/asr-api.md +0 -130
- package/skills/creator-analysis/references/api-contracts/bilibili-app-api.md +0 -776
- package/skills/creator-analysis/references/api-contracts/bilibili-web-api.md +0 -2017
- package/skills/creator-analysis/references/api-contracts/demo-api.md +0 -717
- package/skills/creator-analysis/references/api-contracts/douyin-app-v3-api.md +0 -3594
- package/skills/creator-analysis/references/api-contracts/douyin-billboard-api.md +0 -2274
- package/skills/creator-analysis/references/api-contracts/douyin-creator-api.md +0 -1575
- package/skills/creator-analysis/references/api-contracts/douyin-creator-v2-api.md +0 -3254
- package/skills/creator-analysis/references/api-contracts/douyin-search-api.md +0 -4118
- package/skills/creator-analysis/references/api-contracts/douyin-web-api.md +0 -5544
- package/skills/creator-analysis/references/api-contracts/douyin-xingtu-api.md +0 -1916
- package/skills/creator-analysis/references/api-contracts/douyin-xingtu-v2-api.md +0 -1540
- package/skills/creator-analysis/references/api-contracts/health-check.md +0 -69
- package/skills/creator-analysis/references/api-contracts/hybrid-parsing.md +0 -78
- package/skills/creator-analysis/references/api-contracts/instagram-v1-api.md +0 -2256
- package/skills/creator-analysis/references/api-contracts/instagram-v2-api.md +0 -2011
- package/skills/creator-analysis/references/api-contracts/instagram-v3-api.md +0 -2630
- package/skills/creator-analysis/references/api-contracts/ios-shortcut.md +0 -44
- package/skills/creator-analysis/references/api-contracts/kuaishou-app-api.md +0 -1518
- package/skills/creator-analysis/references/api-contracts/kuaishou-web-api.md +0 -1242
- package/skills/creator-analysis/references/api-contracts/lemon8-app-api.md +0 -1088
- package/skills/creator-analysis/references/api-contracts/linkedin-web-api.md +0 -1949
- package/skills/creator-analysis/references/api-contracts/media-ingest-api.md +0 -126
- package/skills/creator-analysis/references/api-contracts/pipixia-app-api.md +0 -1142
- package/skills/creator-analysis/references/api-contracts/reddit-app-api.md +0 -2025
- package/skills/creator-analysis/references/api-contracts/sora2-api.md +0 -2266
- package/skills/creator-analysis/references/api-contracts/temp-mail-api.md +0 -208
- package/skills/creator-analysis/references/api-contracts/threads-web-api.md +0 -897
- package/skills/creator-analysis/references/api-contracts/tikhub-downloader-api.md +0 -134
- package/skills/creator-analysis/references/api-contracts/tikhub-user-api.md +0 -494
- package/skills/creator-analysis/references/api-contracts/tiktok-ads-api.md +0 -5947
- package/skills/creator-analysis/references/api-contracts/tiktok-analytics-api.md +0 -968
- package/skills/creator-analysis/references/api-contracts/tiktok-app-v3-api.md +0 -5735
- package/skills/creator-analysis/references/api-contracts/tiktok-creator-api.md +0 -1951
- package/skills/creator-analysis/references/api-contracts/tiktok-interaction-api.md +0 -742
- package/skills/creator-analysis/references/api-contracts/tiktok-shop-web-api.md +0 -1890
- package/skills/creator-analysis/references/api-contracts/tiktok-web-api.md +0 -4448
- package/skills/creator-analysis/references/api-contracts/toutiao-app-api.md +0 -342
- package/skills/creator-analysis/references/api-contracts/toutiao-web-api.md +0 -143
- package/skills/creator-analysis/references/api-contracts/twitter-web-api.md +0 -989
- package/skills/creator-analysis/references/api-contracts/wechat-channels-api.md +0 -809
- package/skills/creator-analysis/references/api-contracts/wechat-media-platform-web-api.md +0 -677
- package/skills/creator-analysis/references/api-contracts/weibo-app-api.md +0 -1547
- package/skills/creator-analysis/references/api-contracts/weibo-web-api.md +0 -798
- package/skills/creator-analysis/references/api-contracts/weibo-web-v2-api.md +0 -2459
- package/skills/creator-analysis/references/api-contracts/xiaohongshu-app-api.md +0 -1291
- package/skills/creator-analysis/references/api-contracts/xiaohongshu-app-v2-api.md +0 -1683
- package/skills/creator-analysis/references/api-contracts/xiaohongshu-web-api.md +0 -1324
- package/skills/creator-analysis/references/api-contracts/xiaohongshu-web-v2-api.md +0 -1209
- package/skills/creator-analysis/references/api-contracts/xigua-app-v2-api.md +0 -489
- package/skills/creator-analysis/references/api-contracts/youtube-web-api.md +0 -2636
- package/skills/creator-analysis/references/api-contracts/youtube-web-v2-api.md +0 -2660
- package/skills/creator-analysis/references/api-contracts/zhihu-web-api.md +0 -2315
- package/skills/creator-analysis/references/api-tags/asr-api.md +0 -100
- package/skills/creator-analysis/references/api-tags/bilibili-app-api.md +0 -482
- package/skills/creator-analysis/references/api-tags/bilibili-web-api.md +0 -1267
- package/skills/creator-analysis/references/api-tags/demo-api.md +0 -365
- package/skills/creator-analysis/references/api-tags/douyin-app-v3-api.md +0 -2012
- package/skills/creator-analysis/references/api-tags/douyin-billboard-api.md +0 -1428
- package/skills/creator-analysis/references/api-tags/douyin-creator-api.md +0 -694
- package/skills/creator-analysis/references/api-tags/douyin-creator-v2-api.md +0 -694
- package/skills/creator-analysis/references/api-tags/douyin-search-api.md +0 -1059
- package/skills/creator-analysis/references/api-tags/douyin-web-api.md +0 -3314
- package/skills/creator-analysis/references/api-tags/douyin-xingtu-api.md +0 -935
- package/skills/creator-analysis/references/api-tags/douyin-xingtu-v2-api.md +0 -925
- package/skills/creator-analysis/references/api-tags/health-check.md +0 -40
- package/skills/creator-analysis/references/api-tags/hybrid-parsing.md +0 -57
- package/skills/creator-analysis/references/api-tags/instagram-v1-api.md +0 -1224
- package/skills/creator-analysis/references/api-tags/instagram-v2-api.md +0 -1147
- package/skills/creator-analysis/references/api-tags/instagram-v3-api.md +0 -1123
- package/skills/creator-analysis/references/api-tags/ios-shortcut.md +0 -45
- package/skills/creator-analysis/references/api-tags/kuaishou-app-api.md +0 -846
- package/skills/creator-analysis/references/api-tags/kuaishou-web-api.md +0 -551
- package/skills/creator-analysis/references/api-tags/lemon8-app-api.md +0 -687
- package/skills/creator-analysis/references/api-tags/linkedin-web-api.md +0 -1105
- package/skills/creator-analysis/references/api-tags/media-ingest-api.md +0 -112
- package/skills/creator-analysis/references/api-tags/pipixia-app-api.md +0 -721
- package/skills/creator-analysis/references/api-tags/reddit-app-api.md +0 -1057
- package/skills/creator-analysis/references/api-tags/sora2-api.md +0 -737
- package/skills/creator-analysis/references/api-tags/temp-mail-api.md +0 -136
- package/skills/creator-analysis/references/api-tags/threads-web-api.md +0 -472
- package/skills/creator-analysis/references/api-tags/tikhub-downloader-api.md +0 -65
- package/skills/creator-analysis/references/api-tags/tikhub-user-api.md +0 -253
- package/skills/creator-analysis/references/api-tags/tiktok-ads-api.md +0 -1393
- package/skills/creator-analysis/references/api-tags/tiktok-analytics-api.md +0 -179
- package/skills/creator-analysis/references/api-tags/tiktok-app-v3-api.md +0 -3264
- package/skills/creator-analysis/references/api-tags/tiktok-creator-api.md +0 -709
- package/skills/creator-analysis/references/api-tags/tiktok-interaction-api.md +0 -366
- package/skills/creator-analysis/references/api-tags/tiktok-shop-web-api.md +0 -663
- package/skills/creator-analysis/references/api-tags/tiktok-web-api.md +0 -2516
- package/skills/creator-analysis/references/api-tags/toutiao-app-api.md +0 -220
- package/skills/creator-analysis/references/api-tags/toutiao-web-api.md +0 -96
- package/skills/creator-analysis/references/api-tags/twitter-web-api.md +0 -562
- package/skills/creator-analysis/references/api-tags/wechat-channels-api.md +0 -405
- package/skills/creator-analysis/references/api-tags/wechat-media-platform-web-api.md +0 -431
- package/skills/creator-analysis/references/api-tags/weibo-app-api.md +0 -851
- package/skills/creator-analysis/references/api-tags/weibo-web-api.md +0 -470
- package/skills/creator-analysis/references/api-tags/weibo-web-v2-api.md +0 -1405
- package/skills/creator-analysis/references/api-tags/xiaohongshu-app-api.md +0 -534
- package/skills/creator-analysis/references/api-tags/xiaohongshu-app-v2-api.md +0 -934
- package/skills/creator-analysis/references/api-tags/xiaohongshu-web-api.md +0 -757
- package/skills/creator-analysis/references/api-tags/xiaohongshu-web-v2-api.md +0 -762
- package/skills/creator-analysis/references/api-tags/xigua-app-v2-api.md +0 -308
- package/skills/creator-analysis/references/api-tags/youtube-web-api.md +0 -934
- package/skills/creator-analysis/references/api-tags/youtube-web-v2-api.md +0 -717
- package/skills/creator-analysis/references/api-tags/zhihu-web-api.md +0 -1384
- package/skills/creator-analysis/references/asr-orchestration.md +0 -33
- package/skills/creator-analysis/references/config-templates/defaults.yaml +0 -60
- package/skills/creator-analysis/references/contracts/creator-card-fields.md +0 -25
- package/skills/creator-analysis/references/contracts/work-card-fields.md +0 -68
- package/skills/creator-analysis/references/platform-guides/douyin.md +0 -54
- package/skills/creator-analysis/references/platform-guides/generic.md +0 -50
- package/skills/creator-analysis/references/platform-guides/xiaohongshu.md +0 -69
- package/skills/creator-analysis/references/prompt-contracts/asr-clean.md +0 -28
- package/skills/creator-analysis/references/prompt-contracts/author-analysis-v2.md +0 -46
- package/skills/creator-analysis/references/prompt-contracts/author-analysis.md +0 -49
- package/skills/creator-analysis/references/prompt-contracts/cta.md +0 -24
- package/skills/creator-analysis/references/prompt-contracts/hook.md +0 -25
- package/skills/creator-analysis/references/prompt-contracts/insight.md +0 -47
- package/skills/creator-analysis/references/prompt-contracts/sampled-work-batch-explanations.md +0 -30
- package/skills/creator-analysis/references/prompt-contracts/structure.md +0 -25
- package/skills/creator-analysis/references/prompt-contracts/style.md +0 -27
- package/skills/creator-analysis/references/prompt-contracts/summary.md +0 -29
- package/skills/creator-analysis/references/prompt-contracts/topic.md +0 -29
- package/skills/creator-analysis/references/schemas/author-analysis-input-v1.schema.json +0 -325
- package/skills/creator-analysis/references/schemas/author-analysis-v2.schema.json +0 -287
- package/skills/creator-analysis/references/schemas/sampled-work-batch-explanations.schema.json +0 -41
- package/skills/creator-analysis/references/service-guides/asr-u2-u3-fallback.md +0 -75
- package/skills/creator-analysis/references/workflow.md +0 -23
- package/skills/creator-analysis/scripts/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/adapters/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/analyzers/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/analyzers/author_analysis_v2_support.py +0 -1165
- package/skills/creator-analysis/scripts/author_home/analyzers/prompt_first_analyzers.py +0 -447
- package/skills/creator-analysis/scripts/author_home/analyzers/sampled_work_batch_explainer.py +0 -331
- package/skills/creator-analysis/scripts/author_home/asr/__init__.py +0 -5
- package/skills/creator-analysis/scripts/author_home/builders/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/builders/home_builders.py +0 -213
- package/skills/creator-analysis/scripts/author_home/collectors/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/orchestrator/__init__.py +0 -0
- package/skills/creator-analysis/scripts/author_home/orchestrator/run_author_analysis.py +0 -834
- package/skills/creator-analysis/scripts/author_home/orchestrator/work_analysis_artifacts.py +0 -609
- package/skills/creator-analysis/scripts/core/__init__.py +0 -0
- package/skills/creator-analysis/scripts/core/analysis_pipeline.py +0 -133
- package/skills/creator-analysis/scripts/core/config_loader.py +0 -418
- package/skills/creator-analysis/scripts/core/storage_router.py +0 -256
- package/skills/creator-analysis/scripts/core/tikomni_common.py +0 -588
- package/skills/creator-analysis/scripts/pipeline/__init__.py +0 -0
- package/skills/creator-analysis/scripts/pipeline/asr/__init__.py +0 -0
- package/skills/creator-analysis/scripts/pipeline/asr/asr_pipeline.py +0 -1189
- package/skills/creator-analysis/scripts/pipeline/asr/poll_u2_task.py +0 -95
- package/skills/creator-analysis/scripts/platform/__init__.py +0 -0
- package/skills/creator-analysis/scripts/platform/douyin/__init__.py +0 -0
- package/skills/creator-analysis/scripts/platform/douyin/run_douyin_single_video.py +0 -1208
- package/skills/creator-analysis/scripts/platform/xiaohongshu/__init__.py +0 -0
- package/skills/creator-analysis/scripts/platform/xiaohongshu/run_xiaohongshu_extract.py +0 -2128
- package/skills/creator-analysis/scripts/writers/__init__.py +0 -0
- package/skills/creator-analysis/scripts/writers/write_author_homepage_samples.py +0 -107
- package/skills/creator-analysis/scripts/writers/write_benchmark_card.py +0 -1579
- package/skills/meta-capability/SKILL.md +0 -69
- package/skills/meta-capability/agents/openai.yaml +0 -4
- package/skills/meta-capability/env.example +0 -42
- package/skills/meta-capability/references/api-capability-index.md +0 -92
- package/skills/meta-capability/references/api-contracts/asr-api.md +0 -130
- package/skills/meta-capability/references/api-contracts/bilibili-app-api.md +0 -776
- package/skills/meta-capability/references/api-contracts/bilibili-web-api.md +0 -2017
- package/skills/meta-capability/references/api-contracts/demo-api.md +0 -717
- package/skills/meta-capability/references/api-contracts/douyin-app-v3-api.md +0 -3594
- package/skills/meta-capability/references/api-contracts/douyin-billboard-api.md +0 -2274
- package/skills/meta-capability/references/api-contracts/douyin-creator-api.md +0 -1575
- package/skills/meta-capability/references/api-contracts/douyin-creator-v2-api.md +0 -3254
- package/skills/meta-capability/references/api-contracts/douyin-search-api.md +0 -4118
- package/skills/meta-capability/references/api-contracts/douyin-web-api.md +0 -5544
- package/skills/meta-capability/references/api-contracts/douyin-xingtu-api.md +0 -1916
- package/skills/meta-capability/references/api-contracts/douyin-xingtu-v2-api.md +0 -1540
- package/skills/meta-capability/references/api-contracts/health-check.md +0 -69
- package/skills/meta-capability/references/api-contracts/hybrid-parsing.md +0 -78
- package/skills/meta-capability/references/api-contracts/instagram-v1-api.md +0 -2256
- package/skills/meta-capability/references/api-contracts/instagram-v2-api.md +0 -2011
- package/skills/meta-capability/references/api-contracts/instagram-v3-api.md +0 -2630
- package/skills/meta-capability/references/api-contracts/ios-shortcut.md +0 -44
- package/skills/meta-capability/references/api-contracts/kuaishou-app-api.md +0 -1518
- package/skills/meta-capability/references/api-contracts/kuaishou-web-api.md +0 -1242
- package/skills/meta-capability/references/api-contracts/lemon8-app-api.md +0 -1088
- package/skills/meta-capability/references/api-contracts/linkedin-web-api.md +0 -1949
- package/skills/meta-capability/references/api-contracts/media-ingest-api.md +0 -126
- package/skills/meta-capability/references/api-contracts/pipixia-app-api.md +0 -1142
- package/skills/meta-capability/references/api-contracts/reddit-app-api.md +0 -2025
- package/skills/meta-capability/references/api-contracts/sora2-api.md +0 -2266
- package/skills/meta-capability/references/api-contracts/temp-mail-api.md +0 -208
- package/skills/meta-capability/references/api-contracts/threads-web-api.md +0 -897
- package/skills/meta-capability/references/api-contracts/tikhub-downloader-api.md +0 -134
- package/skills/meta-capability/references/api-contracts/tikhub-user-api.md +0 -494
- package/skills/meta-capability/references/api-contracts/tiktok-ads-api.md +0 -5947
- package/skills/meta-capability/references/api-contracts/tiktok-analytics-api.md +0 -968
- package/skills/meta-capability/references/api-contracts/tiktok-app-v3-api.md +0 -5735
- package/skills/meta-capability/references/api-contracts/tiktok-creator-api.md +0 -1951
- package/skills/meta-capability/references/api-contracts/tiktok-interaction-api.md +0 -742
- package/skills/meta-capability/references/api-contracts/tiktok-shop-web-api.md +0 -1890
- package/skills/meta-capability/references/api-contracts/tiktok-web-api.md +0 -4448
- package/skills/meta-capability/references/api-contracts/toutiao-app-api.md +0 -342
- package/skills/meta-capability/references/api-contracts/toutiao-web-api.md +0 -143
- package/skills/meta-capability/references/api-contracts/twitter-web-api.md +0 -989
- package/skills/meta-capability/references/api-contracts/wechat-channels-api.md +0 -809
- package/skills/meta-capability/references/api-contracts/wechat-media-platform-web-api.md +0 -677
- package/skills/meta-capability/references/api-contracts/weibo-app-api.md +0 -1547
- package/skills/meta-capability/references/api-contracts/weibo-web-api.md +0 -798
- package/skills/meta-capability/references/api-contracts/weibo-web-v2-api.md +0 -2459
- package/skills/meta-capability/references/api-contracts/xiaohongshu-app-api.md +0 -1291
- package/skills/meta-capability/references/api-contracts/xiaohongshu-app-v2-api.md +0 -1683
- package/skills/meta-capability/references/api-contracts/xiaohongshu-web-api.md +0 -1324
- package/skills/meta-capability/references/api-contracts/xiaohongshu-web-v2-api.md +0 -1209
- package/skills/meta-capability/references/api-contracts/xigua-app-v2-api.md +0 -489
- package/skills/meta-capability/references/api-contracts/youtube-web-api.md +0 -2636
- package/skills/meta-capability/references/api-contracts/youtube-web-v2-api.md +0 -2660
- package/skills/meta-capability/references/api-contracts/zhihu-web-api.md +0 -2315
- package/skills/meta-capability/references/api-tags/asr-api.md +0 -100
- package/skills/meta-capability/references/api-tags/bilibili-app-api.md +0 -482
- package/skills/meta-capability/references/api-tags/bilibili-web-api.md +0 -1267
- package/skills/meta-capability/references/api-tags/demo-api.md +0 -365
- package/skills/meta-capability/references/api-tags/douyin-app-v3-api.md +0 -2012
- package/skills/meta-capability/references/api-tags/douyin-billboard-api.md +0 -1428
- package/skills/meta-capability/references/api-tags/douyin-creator-api.md +0 -694
- package/skills/meta-capability/references/api-tags/douyin-creator-v2-api.md +0 -694
- package/skills/meta-capability/references/api-tags/douyin-search-api.md +0 -1059
- package/skills/meta-capability/references/api-tags/douyin-web-api.md +0 -3314
- package/skills/meta-capability/references/api-tags/douyin-xingtu-api.md +0 -935
- package/skills/meta-capability/references/api-tags/douyin-xingtu-v2-api.md +0 -925
- package/skills/meta-capability/references/api-tags/health-check.md +0 -40
- package/skills/meta-capability/references/api-tags/hybrid-parsing.md +0 -57
- package/skills/meta-capability/references/api-tags/instagram-v1-api.md +0 -1224
- package/skills/meta-capability/references/api-tags/instagram-v2-api.md +0 -1147
- package/skills/meta-capability/references/api-tags/instagram-v3-api.md +0 -1123
- package/skills/meta-capability/references/api-tags/ios-shortcut.md +0 -45
- package/skills/meta-capability/references/api-tags/kuaishou-app-api.md +0 -846
- package/skills/meta-capability/references/api-tags/kuaishou-web-api.md +0 -551
- package/skills/meta-capability/references/api-tags/lemon8-app-api.md +0 -687
- package/skills/meta-capability/references/api-tags/linkedin-web-api.md +0 -1105
- package/skills/meta-capability/references/api-tags/media-ingest-api.md +0 -112
- package/skills/meta-capability/references/api-tags/pipixia-app-api.md +0 -721
- package/skills/meta-capability/references/api-tags/reddit-app-api.md +0 -1057
- package/skills/meta-capability/references/api-tags/sora2-api.md +0 -737
- package/skills/meta-capability/references/api-tags/temp-mail-api.md +0 -136
- package/skills/meta-capability/references/api-tags/threads-web-api.md +0 -472
- package/skills/meta-capability/references/api-tags/tikhub-downloader-api.md +0 -65
- package/skills/meta-capability/references/api-tags/tikhub-user-api.md +0 -253
- package/skills/meta-capability/references/api-tags/tiktok-ads-api.md +0 -1393
- package/skills/meta-capability/references/api-tags/tiktok-analytics-api.md +0 -179
- package/skills/meta-capability/references/api-tags/tiktok-app-v3-api.md +0 -3264
- package/skills/meta-capability/references/api-tags/tiktok-creator-api.md +0 -709
- package/skills/meta-capability/references/api-tags/tiktok-interaction-api.md +0 -366
- package/skills/meta-capability/references/api-tags/tiktok-shop-web-api.md +0 -663
- package/skills/meta-capability/references/api-tags/tiktok-web-api.md +0 -2516
- package/skills/meta-capability/references/api-tags/toutiao-app-api.md +0 -220
- package/skills/meta-capability/references/api-tags/toutiao-web-api.md +0 -96
- package/skills/meta-capability/references/api-tags/twitter-web-api.md +0 -562
- package/skills/meta-capability/references/api-tags/wechat-channels-api.md +0 -405
- package/skills/meta-capability/references/api-tags/wechat-media-platform-web-api.md +0 -431
- package/skills/meta-capability/references/api-tags/weibo-app-api.md +0 -851
- package/skills/meta-capability/references/api-tags/weibo-web-api.md +0 -470
- package/skills/meta-capability/references/api-tags/weibo-web-v2-api.md +0 -1405
- package/skills/meta-capability/references/api-tags/xiaohongshu-app-api.md +0 -534
- package/skills/meta-capability/references/api-tags/xiaohongshu-app-v2-api.md +0 -934
- package/skills/meta-capability/references/api-tags/xiaohongshu-web-api.md +0 -757
- package/skills/meta-capability/references/api-tags/xiaohongshu-web-v2-api.md +0 -762
- package/skills/meta-capability/references/api-tags/xigua-app-v2-api.md +0 -308
- package/skills/meta-capability/references/api-tags/youtube-web-api.md +0 -934
- package/skills/meta-capability/references/api-tags/youtube-web-v2-api.md +0 -717
- package/skills/meta-capability/references/api-tags/zhihu-web-api.md +0 -1384
- package/skills/meta-capability/references/config-templates/defaults.yaml +0 -18
- package/skills/meta-capability/references/dispatch.md +0 -27
- package/skills/meta-capability/references/execution-guidelines.md +0 -25
- package/skills/meta-capability/references/implemented-route-map.md +0 -177
- package/skills/meta-capability/references/service-guides/asr-u2-u3-fallback.md +0 -75
- package/skills/meta-capability/scripts/__init__.py +0 -1
- package/skills/meta-capability/scripts/call_route.py +0 -141
- package/skills/meta-capability/scripts/core/__init__.py +0 -1
- package/skills/meta-capability/scripts/core/bootstrap_env.py +0 -32
- package/skills/meta-capability/scripts/core/config_loader.py +0 -204
- package/skills/meta-capability/scripts/core/tikomni_common.py +0 -443
- package/skills/meta-capability/scripts/test_auth.py +0 -98
- package/skills/single-work-analysis/SKILL.md +0 -62
- package/skills/single-work-analysis/agents/openai.yaml +0 -4
- package/skills/single-work-analysis/env.example +0 -36
- package/skills/single-work-analysis/references/api-capability-index.md +0 -92
- package/skills/single-work-analysis/references/api-contracts/asr-api.md +0 -130
- package/skills/single-work-analysis/references/api-contracts/bilibili-app-api.md +0 -776
- package/skills/single-work-analysis/references/api-contracts/bilibili-web-api.md +0 -2017
- package/skills/single-work-analysis/references/api-contracts/demo-api.md +0 -717
- package/skills/single-work-analysis/references/api-contracts/douyin-app-v3-api.md +0 -3594
- package/skills/single-work-analysis/references/api-contracts/douyin-billboard-api.md +0 -2274
- package/skills/single-work-analysis/references/api-contracts/douyin-creator-api.md +0 -1575
- package/skills/single-work-analysis/references/api-contracts/douyin-creator-v2-api.md +0 -3254
- package/skills/single-work-analysis/references/api-contracts/douyin-search-api.md +0 -4118
- package/skills/single-work-analysis/references/api-contracts/douyin-web-api.md +0 -5544
- package/skills/single-work-analysis/references/api-contracts/douyin-xingtu-api.md +0 -1916
- package/skills/single-work-analysis/references/api-contracts/douyin-xingtu-v2-api.md +0 -1540
- package/skills/single-work-analysis/references/api-contracts/health-check.md +0 -69
- package/skills/single-work-analysis/references/api-contracts/hybrid-parsing.md +0 -78
- package/skills/single-work-analysis/references/api-contracts/instagram-v1-api.md +0 -2256
- package/skills/single-work-analysis/references/api-contracts/instagram-v2-api.md +0 -2011
- package/skills/single-work-analysis/references/api-contracts/instagram-v3-api.md +0 -2630
- package/skills/single-work-analysis/references/api-contracts/ios-shortcut.md +0 -44
- package/skills/single-work-analysis/references/api-contracts/kuaishou-app-api.md +0 -1518
- package/skills/single-work-analysis/references/api-contracts/kuaishou-web-api.md +0 -1242
- package/skills/single-work-analysis/references/api-contracts/lemon8-app-api.md +0 -1088
- package/skills/single-work-analysis/references/api-contracts/linkedin-web-api.md +0 -1949
- package/skills/single-work-analysis/references/api-contracts/media-ingest-api.md +0 -126
- package/skills/single-work-analysis/references/api-contracts/pipixia-app-api.md +0 -1142
- package/skills/single-work-analysis/references/api-contracts/reddit-app-api.md +0 -2025
- package/skills/single-work-analysis/references/api-contracts/sora2-api.md +0 -2266
- package/skills/single-work-analysis/references/api-contracts/temp-mail-api.md +0 -208
- package/skills/single-work-analysis/references/api-contracts/threads-web-api.md +0 -897
- package/skills/single-work-analysis/references/api-contracts/tikhub-downloader-api.md +0 -134
- package/skills/single-work-analysis/references/api-contracts/tikhub-user-api.md +0 -494
- package/skills/single-work-analysis/references/api-contracts/tiktok-ads-api.md +0 -5947
- package/skills/single-work-analysis/references/api-contracts/tiktok-analytics-api.md +0 -968
- package/skills/single-work-analysis/references/api-contracts/tiktok-app-v3-api.md +0 -5735
- package/skills/single-work-analysis/references/api-contracts/tiktok-creator-api.md +0 -1951
- package/skills/single-work-analysis/references/api-contracts/tiktok-interaction-api.md +0 -742
- package/skills/single-work-analysis/references/api-contracts/tiktok-shop-web-api.md +0 -1890
- package/skills/single-work-analysis/references/api-contracts/tiktok-web-api.md +0 -4448
- package/skills/single-work-analysis/references/api-contracts/toutiao-app-api.md +0 -342
- package/skills/single-work-analysis/references/api-contracts/toutiao-web-api.md +0 -143
- package/skills/single-work-analysis/references/api-contracts/twitter-web-api.md +0 -989
- package/skills/single-work-analysis/references/api-contracts/wechat-channels-api.md +0 -809
- package/skills/single-work-analysis/references/api-contracts/wechat-media-platform-web-api.md +0 -677
- package/skills/single-work-analysis/references/api-contracts/weibo-app-api.md +0 -1547
- package/skills/single-work-analysis/references/api-contracts/weibo-web-api.md +0 -798
- package/skills/single-work-analysis/references/api-contracts/weibo-web-v2-api.md +0 -2459
- package/skills/single-work-analysis/references/api-contracts/xiaohongshu-app-api.md +0 -1291
- package/skills/single-work-analysis/references/api-contracts/xiaohongshu-app-v2-api.md +0 -1683
- package/skills/single-work-analysis/references/api-contracts/xiaohongshu-web-api.md +0 -1324
- package/skills/single-work-analysis/references/api-contracts/xiaohongshu-web-v2-api.md +0 -1209
- package/skills/single-work-analysis/references/api-contracts/xigua-app-v2-api.md +0 -489
- package/skills/single-work-analysis/references/api-contracts/youtube-web-api.md +0 -2636
- package/skills/single-work-analysis/references/api-contracts/youtube-web-v2-api.md +0 -2660
- package/skills/single-work-analysis/references/api-contracts/zhihu-web-api.md +0 -2315
- package/skills/single-work-analysis/references/api-tags/asr-api.md +0 -100
- package/skills/single-work-analysis/references/api-tags/bilibili-app-api.md +0 -482
- package/skills/single-work-analysis/references/api-tags/bilibili-web-api.md +0 -1267
- package/skills/single-work-analysis/references/api-tags/demo-api.md +0 -365
- package/skills/single-work-analysis/references/api-tags/douyin-app-v3-api.md +0 -2012
- package/skills/single-work-analysis/references/api-tags/douyin-billboard-api.md +0 -1428
- package/skills/single-work-analysis/references/api-tags/douyin-creator-api.md +0 -694
- package/skills/single-work-analysis/references/api-tags/douyin-creator-v2-api.md +0 -694
- package/skills/single-work-analysis/references/api-tags/douyin-search-api.md +0 -1059
- package/skills/single-work-analysis/references/api-tags/douyin-web-api.md +0 -3314
- package/skills/single-work-analysis/references/api-tags/douyin-xingtu-api.md +0 -935
- package/skills/single-work-analysis/references/api-tags/douyin-xingtu-v2-api.md +0 -925
- package/skills/single-work-analysis/references/api-tags/health-check.md +0 -40
- package/skills/single-work-analysis/references/api-tags/hybrid-parsing.md +0 -57
- package/skills/single-work-analysis/references/api-tags/instagram-v1-api.md +0 -1224
- package/skills/single-work-analysis/references/api-tags/instagram-v2-api.md +0 -1147
- package/skills/single-work-analysis/references/api-tags/instagram-v3-api.md +0 -1123
- package/skills/single-work-analysis/references/api-tags/ios-shortcut.md +0 -45
- package/skills/single-work-analysis/references/api-tags/kuaishou-app-api.md +0 -846
- package/skills/single-work-analysis/references/api-tags/kuaishou-web-api.md +0 -551
- package/skills/single-work-analysis/references/api-tags/lemon8-app-api.md +0 -687
- package/skills/single-work-analysis/references/api-tags/linkedin-web-api.md +0 -1105
- package/skills/single-work-analysis/references/api-tags/media-ingest-api.md +0 -112
- package/skills/single-work-analysis/references/api-tags/pipixia-app-api.md +0 -721
- package/skills/single-work-analysis/references/api-tags/reddit-app-api.md +0 -1057
- package/skills/single-work-analysis/references/api-tags/sora2-api.md +0 -737
- package/skills/single-work-analysis/references/api-tags/temp-mail-api.md +0 -136
- package/skills/single-work-analysis/references/api-tags/threads-web-api.md +0 -472
- package/skills/single-work-analysis/references/api-tags/tikhub-downloader-api.md +0 -65
- package/skills/single-work-analysis/references/api-tags/tikhub-user-api.md +0 -253
- package/skills/single-work-analysis/references/api-tags/tiktok-ads-api.md +0 -1393
- package/skills/single-work-analysis/references/api-tags/tiktok-analytics-api.md +0 -179
- package/skills/single-work-analysis/references/api-tags/tiktok-app-v3-api.md +0 -3264
- package/skills/single-work-analysis/references/api-tags/tiktok-creator-api.md +0 -709
- package/skills/single-work-analysis/references/api-tags/tiktok-interaction-api.md +0 -366
- package/skills/single-work-analysis/references/api-tags/tiktok-shop-web-api.md +0 -663
- package/skills/single-work-analysis/references/api-tags/tiktok-web-api.md +0 -2516
- package/skills/single-work-analysis/references/api-tags/toutiao-app-api.md +0 -220
- package/skills/single-work-analysis/references/api-tags/toutiao-web-api.md +0 -96
- package/skills/single-work-analysis/references/api-tags/twitter-web-api.md +0 -562
- package/skills/single-work-analysis/references/api-tags/wechat-channels-api.md +0 -405
- package/skills/single-work-analysis/references/api-tags/wechat-media-platform-web-api.md +0 -431
- package/skills/single-work-analysis/references/api-tags/weibo-app-api.md +0 -851
- package/skills/single-work-analysis/references/api-tags/weibo-web-api.md +0 -470
- package/skills/single-work-analysis/references/api-tags/weibo-web-v2-api.md +0 -1405
- package/skills/single-work-analysis/references/api-tags/xiaohongshu-app-api.md +0 -534
- package/skills/single-work-analysis/references/api-tags/xiaohongshu-app-v2-api.md +0 -934
- package/skills/single-work-analysis/references/api-tags/xiaohongshu-web-api.md +0 -757
- package/skills/single-work-analysis/references/api-tags/xiaohongshu-web-v2-api.md +0 -762
- package/skills/single-work-analysis/references/api-tags/xigua-app-v2-api.md +0 -308
- package/skills/single-work-analysis/references/api-tags/youtube-web-api.md +0 -934
- package/skills/single-work-analysis/references/api-tags/youtube-web-v2-api.md +0 -717
- package/skills/single-work-analysis/references/api-tags/zhihu-web-api.md +0 -1384
- package/skills/single-work-analysis/references/asr-and-fallback.md +0 -20
- package/skills/single-work-analysis/references/config-templates/defaults.yaml +0 -47
- package/skills/single-work-analysis/references/contracts/work-card-fields.md +0 -41
- package/skills/single-work-analysis/references/platform-guides/douyin.md +0 -47
- package/skills/single-work-analysis/references/platform-guides/generic.md +0 -43
- package/skills/single-work-analysis/references/platform-guides/xiaohongshu.md +0 -54
- package/skills/single-work-analysis/references/prompt-contracts/analysis-bundle.md +0 -82
- package/skills/single-work-analysis/references/schemas/work-card.schema.json +0 -39
- package/skills/single-work-analysis/references/service-guides/asr-u2-u3-fallback.md +0 -75
- package/skills/single-work-analysis/scripts/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/core/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/core/analysis_adapter.py +0 -384
- package/skills/single-work-analysis/scripts/core/analysis_pipeline.py +0 -456
- package/skills/single-work-analysis/scripts/core/bootstrap_env.py +0 -35
- package/skills/single-work-analysis/scripts/core/extract_pipeline.py +0 -173
- package/skills/single-work-analysis/scripts/core/progress_report.py +0 -258
- package/skills/single-work-analysis/scripts/core/storage_router.py +0 -220
- package/skills/single-work-analysis/scripts/pipeline/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/pipeline/asr/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/platform/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/platform/douyin/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/platform/douyin/douyin_video_type_matrix.py +0 -224
- package/skills/single-work-analysis/scripts/platform/douyin/select_low_quality_video_url.py +0 -200
- package/skills/single-work-analysis/scripts/platform/xiaohongshu/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/writers/__init__.py +0 -0
- package/skills/single-work-analysis/scripts/writers/write_benchmark_card.py +0 -752
- /package/skills/{creator-analysis → social-media-crawl}/scripts/core/bootstrap_env.py +0 -0
- /package/skills/{creator-analysis → social-media-crawl}/scripts/core/extract_pipeline.py +0 -0
- /package/skills/{single-work-analysis → social-media-crawl}/scripts/core/tikomni_common.py +0 -0
- /package/skills/{creator-analysis/scripts/platform/douyin → social-media-crawl/scripts/pipelines}/douyin_video_type_matrix.py +0 -0
- /package/skills/{creator-analysis/scripts/author_home/collectors → social-media-crawl/scripts/pipelines}/homepage_collectors.py +0 -0
- /package/skills/{creator-analysis/scripts/platform/douyin → social-media-crawl/scripts/pipelines}/select_low_quality_video_url.py +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Write work fact cards and normalized envelopes."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import hashlib
|
|
7
|
+
import json
|
|
8
|
+
from datetime import datetime, timedelta, timezone
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any, Dict, List, Optional
|
|
11
|
+
|
|
12
|
+
from scripts.core.completeness import ensure_request_id, evaluate_work_fact_card, normalize_missing_fields
|
|
13
|
+
from scripts.core.config_loader import resolve_storage_paths
|
|
14
|
+
from scripts.core.storage_router import (
|
|
15
|
+
build_work_fact_card_paths,
|
|
16
|
+
render_output_filename,
|
|
17
|
+
resolve_card_root,
|
|
18
|
+
resolve_json_filename_pattern,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
SHANGHAI_TZ = timezone(timedelta(hours=8))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _safe_text(value: Any) -> str:
|
|
25
|
+
if value is None:
|
|
26
|
+
return ""
|
|
27
|
+
return str(value).strip()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _safe_int(value: Any) -> int:
|
|
31
|
+
if value is None:
|
|
32
|
+
return 0
|
|
33
|
+
if isinstance(value, bool):
|
|
34
|
+
return int(value)
|
|
35
|
+
if isinstance(value, int):
|
|
36
|
+
return value
|
|
37
|
+
if isinstance(value, float):
|
|
38
|
+
return int(value)
|
|
39
|
+
text = _safe_text(value)
|
|
40
|
+
if not text:
|
|
41
|
+
return 0
|
|
42
|
+
try:
|
|
43
|
+
return int(float(text.replace(",", "")))
|
|
44
|
+
except Exception:
|
|
45
|
+
return 0
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _source_dict(payload: Dict[str, Any]) -> Dict[str, Any]:
|
|
49
|
+
source = payload.get("source")
|
|
50
|
+
return source if isinstance(source, dict) else {}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _author_dict(payload: Dict[str, Any]) -> Dict[str, Any]:
|
|
54
|
+
author = payload.get("author")
|
|
55
|
+
return author if isinstance(author, dict) else {}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _resolve_platform(payload: Dict[str, Any], platform: Optional[str]) -> str:
|
|
59
|
+
return _safe_text(platform or payload.get("platform")) or "unknown"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _resolve_work_id(payload: Dict[str, Any]) -> str:
|
|
63
|
+
for key in ("platform_work_id", "note_id", "aweme_id", "id"):
|
|
64
|
+
hit = _safe_text(payload.get(key))
|
|
65
|
+
if hit:
|
|
66
|
+
return hit
|
|
67
|
+
source = _source_dict(payload)
|
|
68
|
+
for key in ("note_id", "platform_work_id"):
|
|
69
|
+
hit = _safe_text(source.get(key))
|
|
70
|
+
if hit:
|
|
71
|
+
return hit
|
|
72
|
+
return ""
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _resolve_author_display(payload: Dict[str, Any]) -> str:
|
|
76
|
+
author_raw = payload.get("author")
|
|
77
|
+
author_obj = _author_dict(payload)
|
|
78
|
+
if isinstance(author_raw, str) and _safe_text(author_raw):
|
|
79
|
+
return _safe_text(author_raw)
|
|
80
|
+
for key in ("nickname", "author_handle", "platform_author_id"):
|
|
81
|
+
hit = _safe_text(author_obj.get(key))
|
|
82
|
+
if hit:
|
|
83
|
+
return hit
|
|
84
|
+
for key in ("nickname", "author_handle", "platform_author_id"):
|
|
85
|
+
hit = _safe_text(payload.get(key))
|
|
86
|
+
if hit:
|
|
87
|
+
return hit
|
|
88
|
+
return ""
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _resolve_author_handle(payload: Dict[str, Any]) -> str:
|
|
92
|
+
author_obj = _author_dict(payload)
|
|
93
|
+
source = _source_dict(payload)
|
|
94
|
+
for key in ("author_handle", "short_id", "red_id"):
|
|
95
|
+
for container in (payload, author_obj, source):
|
|
96
|
+
hit = _safe_text(container.get(key))
|
|
97
|
+
if hit:
|
|
98
|
+
return hit
|
|
99
|
+
return _resolve_author_display(payload)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _resolve_platform_author_id(payload: Dict[str, Any]) -> str:
|
|
103
|
+
author_obj = _author_dict(payload)
|
|
104
|
+
source = _source_dict(payload)
|
|
105
|
+
for key in (
|
|
106
|
+
"platform_author_id",
|
|
107
|
+
"author_platform_id",
|
|
108
|
+
"xhs_user_id",
|
|
109
|
+
"douyin_aweme_author_id",
|
|
110
|
+
"uid",
|
|
111
|
+
):
|
|
112
|
+
for container in (payload, author_obj, source):
|
|
113
|
+
hit = _safe_text(container.get(key))
|
|
114
|
+
if hit:
|
|
115
|
+
return hit
|
|
116
|
+
return ""
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _resolve_title(payload: Dict[str, Any]) -> str:
|
|
120
|
+
for key in ("title", "display_title", "name"):
|
|
121
|
+
hit = _safe_text(payload.get(key))
|
|
122
|
+
if hit:
|
|
123
|
+
return hit
|
|
124
|
+
caption = _resolve_caption(payload)
|
|
125
|
+
return caption[:60] if caption else ""
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _resolve_caption(payload: Dict[str, Any]) -> str:
|
|
129
|
+
source = _source_dict(payload)
|
|
130
|
+
for key in ("caption_raw", "desc", "content", "raw_content", "summary"):
|
|
131
|
+
for container in (payload, source):
|
|
132
|
+
hit = _safe_text(container.get(key))
|
|
133
|
+
if hit:
|
|
134
|
+
return hit
|
|
135
|
+
return ""
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def _to_timestamp(value: Any) -> Optional[int]:
|
|
139
|
+
raw = _safe_int(value)
|
|
140
|
+
if raw <= 0:
|
|
141
|
+
return None
|
|
142
|
+
if raw > 1_000_000_000_000:
|
|
143
|
+
raw //= 1000
|
|
144
|
+
return raw if raw > 0 else None
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def _resolve_published_date(payload: Dict[str, Any]) -> str:
|
|
148
|
+
for key in ("published_date", "publish_time_text"):
|
|
149
|
+
hit = _safe_text(payload.get(key))
|
|
150
|
+
if hit:
|
|
151
|
+
return hit[:10] if len(hit) >= 10 else hit
|
|
152
|
+
for key in ("publish_time", "create_time_sec", "create_time", "time"):
|
|
153
|
+
ts = _to_timestamp(payload.get(key))
|
|
154
|
+
if ts:
|
|
155
|
+
return datetime.fromtimestamp(ts, tz=SHANGHAI_TZ).strftime("%Y-%m-%d")
|
|
156
|
+
return ""
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def _resolve_work_modality(payload: Dict[str, Any]) -> str:
|
|
160
|
+
modality = _safe_text(payload.get("work_modality")).lower()
|
|
161
|
+
if modality:
|
|
162
|
+
return modality
|
|
163
|
+
content_type = _safe_text(payload.get("note_content_type") or payload.get("content_type")).lower()
|
|
164
|
+
if content_type in {"video", "single_video", "video_note"}:
|
|
165
|
+
return "video"
|
|
166
|
+
if content_type in {"image", "photo", "text", "note"}:
|
|
167
|
+
return "text"
|
|
168
|
+
if payload.get("is_video") is True:
|
|
169
|
+
return "video"
|
|
170
|
+
return "video" if _safe_text(payload.get("video_download_url") or payload.get("video_down_url")) else "text"
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def _resolve_source_url(payload: Dict[str, Any], platform: str, work_id: str) -> str:
|
|
174
|
+
source = _source_dict(payload)
|
|
175
|
+
for key in ("source_url", "url", "note_url"):
|
|
176
|
+
for container in (payload, source):
|
|
177
|
+
hit = _safe_text(container.get(key))
|
|
178
|
+
if hit:
|
|
179
|
+
return hit
|
|
180
|
+
if platform == "douyin" and work_id:
|
|
181
|
+
return f"https://www.douyin.com/video/{work_id}"
|
|
182
|
+
if platform == "xiaohongshu" and work_id:
|
|
183
|
+
return f"https://www.xiaohongshu.com/explore/{work_id}"
|
|
184
|
+
return ""
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def _resolve_share_url(payload: Dict[str, Any], source_url: str) -> str:
|
|
188
|
+
source = _source_dict(payload)
|
|
189
|
+
for key in ("share_url", "share_link", "share_text"):
|
|
190
|
+
for container in (payload, source):
|
|
191
|
+
hit = _safe_text(container.get(key))
|
|
192
|
+
if hit:
|
|
193
|
+
return hit
|
|
194
|
+
return source_url
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _resolve_primary_text(payload: Dict[str, Any], caption_raw: str) -> Dict[str, str]:
|
|
198
|
+
subtitle_raw = _safe_text(payload.get("subtitle_raw"))
|
|
199
|
+
asr_clean = _safe_text(payload.get("asr_clean"))
|
|
200
|
+
asr_raw = _safe_text(payload.get("asr_raw"))
|
|
201
|
+
if subtitle_raw:
|
|
202
|
+
return {"primary_text": subtitle_raw, "primary_text_source": "subtitle_raw"}
|
|
203
|
+
if asr_clean:
|
|
204
|
+
return {"primary_text": asr_clean, "primary_text_source": "asr_clean"}
|
|
205
|
+
if asr_raw:
|
|
206
|
+
return {"primary_text": asr_raw, "primary_text_source": "asr_raw"}
|
|
207
|
+
if caption_raw:
|
|
208
|
+
return {"primary_text": caption_raw, "primary_text_source": "caption_raw"}
|
|
209
|
+
return {"primary_text": "", "primary_text_source": "missing"}
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def build_work_fact_card(payload: Dict[str, Any], platform: Optional[str] = None) -> Dict[str, Any]:
|
|
213
|
+
platform_name = _resolve_platform(payload, platform)
|
|
214
|
+
work_id = _resolve_work_id(payload)
|
|
215
|
+
caption_raw = _resolve_caption(payload)
|
|
216
|
+
source_url = _resolve_source_url(payload, platform_name, work_id)
|
|
217
|
+
share_url = _resolve_share_url(payload, source_url)
|
|
218
|
+
author_handle = _resolve_author_handle(payload)
|
|
219
|
+
platform_author_id = _resolve_platform_author_id(payload)
|
|
220
|
+
primary_text_bundle = _resolve_primary_text(payload, caption_raw)
|
|
221
|
+
|
|
222
|
+
card: Dict[str, Any] = {
|
|
223
|
+
"platform": platform_name,
|
|
224
|
+
"platform_work_id": work_id,
|
|
225
|
+
"platform_author_id": platform_author_id,
|
|
226
|
+
"author_handle": author_handle,
|
|
227
|
+
"author": _resolve_author_display(payload),
|
|
228
|
+
"title": _resolve_title(payload),
|
|
229
|
+
"caption_raw": caption_raw,
|
|
230
|
+
"subtitle_raw": _safe_text(payload.get("subtitle_raw")),
|
|
231
|
+
"work_modality": _resolve_work_modality(payload),
|
|
232
|
+
"published_date": _resolve_published_date(payload),
|
|
233
|
+
"digg_count": _safe_int(payload.get("digg_count")),
|
|
234
|
+
"comment_count": _safe_int(payload.get("comment_count")),
|
|
235
|
+
"collect_count": _safe_int(payload.get("collect_count")),
|
|
236
|
+
"share_count": _safe_int(payload.get("share_count")),
|
|
237
|
+
"play_count": _safe_int(payload.get("play_count")),
|
|
238
|
+
"cover_image": _safe_text(payload.get("cover_image")),
|
|
239
|
+
"source_url": source_url,
|
|
240
|
+
"share_url": share_url,
|
|
241
|
+
"video_download_url": _safe_text(payload.get("video_download_url") or payload.get("video_down_url")),
|
|
242
|
+
"primary_text": primary_text_bundle["primary_text"],
|
|
243
|
+
"primary_text_source": primary_text_bundle["primary_text_source"],
|
|
244
|
+
"asr_raw": _safe_text(payload.get("asr_raw")),
|
|
245
|
+
"asr_clean": _safe_text(payload.get("asr_clean")),
|
|
246
|
+
"request_id": ensure_request_id(_safe_text(payload.get("request_id")), fallback_seed=share_url or work_id or caption_raw),
|
|
247
|
+
"missing_fields": normalize_missing_fields(payload.get("missing_fields")),
|
|
248
|
+
"error_reason": _safe_text(payload.get("error_reason")) or None,
|
|
249
|
+
"extract_trace": payload.get("extract_trace") if isinstance(payload.get("extract_trace"), list) else [],
|
|
250
|
+
}
|
|
251
|
+
existing_missing = {(entry.get("field"), entry.get("reason")) for entry in card["missing_fields"]}
|
|
252
|
+
if (
|
|
253
|
+
card["work_modality"] == "video"
|
|
254
|
+
and not card["asr_clean"]
|
|
255
|
+
and not card["asr_raw"]
|
|
256
|
+
and not card["subtitle_raw"]
|
|
257
|
+
and ("asr_clean", "caption_fallback") not in existing_missing
|
|
258
|
+
):
|
|
259
|
+
card["missing_fields"].append({"field": "asr_clean", "reason": "caption_fallback"})
|
|
260
|
+
evaluation = evaluate_work_fact_card(card)
|
|
261
|
+
card["completeness"] = evaluation["completeness"]
|
|
262
|
+
card["missing_fields"] = evaluation["missing_fields"]
|
|
263
|
+
return card
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def build_work_output_envelope(payload: Dict[str, Any], platform: Optional[str] = None) -> Dict[str, Any]:
|
|
267
|
+
card = build_work_fact_card(payload, platform=platform)
|
|
268
|
+
source = _source_dict(payload)
|
|
269
|
+
input_value = source.get("share_url") or source.get("share_text") or source.get("source_url") or source
|
|
270
|
+
return {
|
|
271
|
+
"object_type": "work",
|
|
272
|
+
"platform": card["platform"],
|
|
273
|
+
"input": input_value,
|
|
274
|
+
"normalized": card,
|
|
275
|
+
"completeness": card["completeness"],
|
|
276
|
+
"missing_fields": card["missing_fields"],
|
|
277
|
+
"error_reason": card.get("error_reason"),
|
|
278
|
+
"extract_trace": card.get("extract_trace", []),
|
|
279
|
+
"request_id": card["request_id"],
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def _markdown_lines(card: Dict[str, Any]) -> List[str]:
|
|
284
|
+
lines = [
|
|
285
|
+
f"# {card.get('title') or card.get('platform_work_id') or 'Work'}",
|
|
286
|
+
"",
|
|
287
|
+
"## Facts",
|
|
288
|
+
f"- platform: {card.get('platform') or ''}",
|
|
289
|
+
f"- platform_work_id: {card.get('platform_work_id') or ''}",
|
|
290
|
+
f"- platform_author_id: {card.get('platform_author_id') or ''}",
|
|
291
|
+
f"- author_handle: {card.get('author_handle') or ''}",
|
|
292
|
+
f"- author: {card.get('author') or ''}",
|
|
293
|
+
f"- published_date: {card.get('published_date') or ''}",
|
|
294
|
+
f"- work_modality: {card.get('work_modality') or ''}",
|
|
295
|
+
f"- digg_count: {card.get('digg_count')}",
|
|
296
|
+
f"- comment_count: {card.get('comment_count')}",
|
|
297
|
+
f"- collect_count: {card.get('collect_count')}",
|
|
298
|
+
f"- share_count: {card.get('share_count')}",
|
|
299
|
+
f"- play_count: {card.get('play_count')}",
|
|
300
|
+
f"- source_url: {card.get('source_url') or ''}",
|
|
301
|
+
f"- share_url: {card.get('share_url') or ''}",
|
|
302
|
+
f"- video_download_url: {card.get('video_download_url') or ''}",
|
|
303
|
+
"",
|
|
304
|
+
"## Text",
|
|
305
|
+
card.get("primary_text") or "",
|
|
306
|
+
"",
|
|
307
|
+
"## Meta",
|
|
308
|
+
f"- primary_text_source: {card.get('primary_text_source') or ''}",
|
|
309
|
+
f"- completeness: {card.get('completeness') or ''}",
|
|
310
|
+
f"- request_id: {card.get('request_id') or ''}",
|
|
311
|
+
f"- error_reason: {card.get('error_reason') or ''}",
|
|
312
|
+
]
|
|
313
|
+
if card.get("missing_fields"):
|
|
314
|
+
lines.extend(["", "## Missing Fields"])
|
|
315
|
+
for entry in card["missing_fields"]:
|
|
316
|
+
lines.append(f"- {entry.get('field')}: {entry.get('reason')}")
|
|
317
|
+
return lines
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def write_work_fact_card(
|
|
321
|
+
*,
|
|
322
|
+
payload: Dict[str, Any],
|
|
323
|
+
platform: Optional[str] = None,
|
|
324
|
+
card_root: Optional[str] = None,
|
|
325
|
+
storage_config: Optional[Dict[str, Any]] = None,
|
|
326
|
+
**_: Any,
|
|
327
|
+
) -> Dict[str, Any]:
|
|
328
|
+
card = build_work_fact_card(payload, platform=platform)
|
|
329
|
+
resolved_card_root = resolve_card_root(storage_config, explicit_card_root=card_root)
|
|
330
|
+
fallback_identifier = card["share_url"] or card["source_url"] or card["title"] or card["request_id"]
|
|
331
|
+
paths = build_work_fact_card_paths(
|
|
332
|
+
card_root=resolved_card_root,
|
|
333
|
+
platform=card["platform"],
|
|
334
|
+
platform_work_id=card["platform_work_id"],
|
|
335
|
+
author_handle=card["author_handle"],
|
|
336
|
+
platform_author_id=card["platform_author_id"],
|
|
337
|
+
storage_config=storage_config,
|
|
338
|
+
fallback_identifier=fallback_identifier,
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
Path(paths["json_path"]).write_text(json.dumps(card, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
342
|
+
Path(paths["markdown_path"]).write_text("\n".join(_markdown_lines(card)).strip() + "\n", encoding="utf-8")
|
|
343
|
+
|
|
344
|
+
return {
|
|
345
|
+
"enabled": True,
|
|
346
|
+
"ok": True,
|
|
347
|
+
"count": 1,
|
|
348
|
+
"path": paths["markdown_path"],
|
|
349
|
+
"json_path": paths["json_path"],
|
|
350
|
+
"markdown_path": paths["markdown_path"],
|
|
351
|
+
"route": paths["route"],
|
|
352
|
+
"identifier": paths["identifier"],
|
|
353
|
+
"card": card,
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
def persist_output_envelope(
|
|
358
|
+
*,
|
|
359
|
+
envelope: Dict[str, Any],
|
|
360
|
+
storage_config: Optional[Dict[str, Any]],
|
|
361
|
+
platform: str,
|
|
362
|
+
fallback_identifier: str,
|
|
363
|
+
) -> Dict[str, Any]:
|
|
364
|
+
try:
|
|
365
|
+
paths = resolve_storage_paths(storage_config or {})
|
|
366
|
+
except Exception as error:
|
|
367
|
+
return {"enabled": True, "ok": False, "error": f"resolve_storage_paths_failed:{error}"}
|
|
368
|
+
|
|
369
|
+
now = datetime.now()
|
|
370
|
+
date_key = now.strftime("%Y%m%d")
|
|
371
|
+
timestamp = now.strftime("%Y%m%dT%H%M%S")
|
|
372
|
+
identifier = _safe_text(envelope.get("normalized", {}).get("platform_work_id")) or fallback_identifier
|
|
373
|
+
status = "error" if envelope.get("error_reason") else "success"
|
|
374
|
+
|
|
375
|
+
target_root = Path(paths["errors_root"] if status == "error" else paths["results_root"]) / date_key
|
|
376
|
+
target_root.mkdir(parents=True, exist_ok=True)
|
|
377
|
+
file_name = render_output_filename(
|
|
378
|
+
pattern=resolve_json_filename_pattern(storage_config),
|
|
379
|
+
context={
|
|
380
|
+
"platform": platform,
|
|
381
|
+
"identifier": identifier,
|
|
382
|
+
"timestamp": timestamp,
|
|
383
|
+
"date": date_key,
|
|
384
|
+
"ext": ".json",
|
|
385
|
+
},
|
|
386
|
+
default_filename=f"{timestamp}-{platform}-{identifier}.json",
|
|
387
|
+
default_ext=".json",
|
|
388
|
+
)
|
|
389
|
+
file_path = target_root / file_name
|
|
390
|
+
file_path.write_text(json.dumps(envelope, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
391
|
+
return {"enabled": True, "ok": True, "status": status, "path": str(file_path)}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: creator-analysis
|
|
3
|
-
description: Use this skill for creator, account profile, and content-collection retrieval, benchmarking, breakdown, and analysis. Trigger when the user asks to analyze creator / analyze account / profile analysis / creator benchmark / creator breakdown, or 创作者分析 / 账号分析 / 主页分析 / 博主分析 / 博主对标 / 账号拆解 / 作者卡 / 主页作品汇总, and the target is a creator, account profile, channel, or content collection rather than one content item.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Creator Analysis
|
|
7
|
-
|
|
8
|
-
## When To Use
|
|
9
|
-
|
|
10
|
-
- Use this skill when the target is a creator, account, profile page, channel, or content collection rather than a single content item.
|
|
11
|
-
- Use this skill when the user wants a creator card, author sample cards, sampled explanations, or aggregated creator-level conclusions.
|
|
12
|
-
- Use this skill when multiple videos under one profile should go through batch ASR first.
|
|
13
|
-
- Use this skill when the user provides a profile URL, creator handle, account identifier, channel entry, or another creator-level entry point.
|
|
14
|
-
|
|
15
|
-
## What It Can Do
|
|
16
|
-
|
|
17
|
-
- Fetch and normalize creator-side fact fields.
|
|
18
|
-
- Fetch and normalize the full content collection under a profile.
|
|
19
|
-
- Produce author sample cards for the retrieved items.
|
|
20
|
-
- Run batch ASR for video items when needed.
|
|
21
|
-
- Complete bucketing, sampling, sampled explanations, and creator-level analysis.
|
|
22
|
-
- Return creator cards, author sample cards, sampled enhanced cards, and aggregated conclusions.
|
|
23
|
-
|
|
24
|
-
## Core Workflow Rules
|
|
25
|
-
|
|
26
|
-
- Keep the task scoped to a creator, account profile, or content collection.
|
|
27
|
-
- Prefer the platform guide first. Only go back to API discovery references when the guide is insufficient.
|
|
28
|
-
- Keep fact cards for all retrieved works, but do not run per-work deep LLM analysis.
|
|
29
|
-
- Prefer batch ASR for video items, with up to 100 links per batch.
|
|
30
|
-
- Let sampled-work explanation fields come from one batch LLM step only.
|
|
31
|
-
- Treat `author_analysis_v2` as the formal creator-level analysis object.
|
|
32
|
-
- If `analysis_eligibility=incomplete`, keep the fact card but exclude the item from sampling, sampled explanations, and creator-level analysis.
|
|
33
|
-
|
|
34
|
-
## Shared Layer Boundaries
|
|
35
|
-
|
|
36
|
-
- Shared layer owns orchestration order, status semantics, output contracts, sampled-work explanation constraints, and final card-writing rules.
|
|
37
|
-
- Platform layer owns route strategy, collector behavior, platform-field compatibility, adapter normalization, and platform-specific cleaning rules.
|
|
38
|
-
- Keep sampled explanations as a batch-stage artifact. Do not reintroduce per-work deep analysis in the creator path.
|
|
39
|
-
- Treat `author`, `author_sample_work`, and sampled enhanced cards as separate output roles with explicit routing semantics.
|
|
40
|
-
|
|
41
|
-
## Platform Navigation
|
|
42
|
-
|
|
43
|
-
- Start with the platform guide:
|
|
44
|
-
- Douyin: `references/platform-guides/douyin.md`
|
|
45
|
-
- Xiaohongshu: `references/platform-guides/xiaohongshu.md`
|
|
46
|
-
- Other platforms: `references/platform-guides/generic.md`
|
|
47
|
-
- Route strategy, collector behavior, and raw payload retrieval:
|
|
48
|
-
- First stop: `scripts/author_home/collectors/homepage_collectors.py`
|
|
49
|
-
- Platform-field compatibility and normalization:
|
|
50
|
-
- First stop: `scripts/author_home/adapters/platform_adapters.py`
|
|
51
|
-
- Orchestration order, stage status, degradation, persistence, and final result assembly:
|
|
52
|
-
- First stop: `scripts/author_home/orchestrator/run_author_analysis.py`
|
|
53
|
-
- Work-analysis artifacts, cache behavior, and structural labels:
|
|
54
|
-
- First stop: `scripts/author_home/orchestrator/work_analysis_artifacts.py`
|
|
55
|
-
- Sampled explanations and creator-level analysis logic:
|
|
56
|
-
- First stop: `scripts/author_home/analyzers/`
|
|
57
|
-
- Card writing and markdown rendering:
|
|
58
|
-
- First stop: `scripts/writers/write_author_homepage_samples.py`
|
|
59
|
-
- Supporting renderer: `scripts/writers/write_benchmark_card.py`
|
|
60
|
-
|
|
61
|
-
## Do Not
|
|
62
|
-
|
|
63
|
-
- Do not paste sampled explanations directly into every work-card body.
|
|
64
|
-
- Do not expose platform process fields directly in the final card body.
|
|
65
|
-
- Do not introduce per-work LLM explanations inside the creator path.
|
|
66
|
-
- Do not bypass the platform guide and jump straight into local helpers without understanding the route and contract expectations first.
|
|
67
|
-
|
|
68
|
-
## Workflow
|
|
69
|
-
|
|
70
|
-
1. Identify the platform and confirm that the target is a creator, account profile, channel, or content collection.
|
|
71
|
-
2. Read `references/contracts/creator-card-fields.md` to confirm required creator-card fields.
|
|
72
|
-
3. Read `references/contracts/work-card-fields.md` to confirm required work-card fields for the collected items.
|
|
73
|
-
4. Read the platform guide first and then the first-stop implementation file for the problem type you are solving.
|
|
74
|
-
5. If video items are involved, read `references/service-guides/asr-u2-u3-fallback.md` and then `references/asr-orchestration.md` to run batch ASR and fallback.
|
|
75
|
-
6. Read `references/api-capability-index.md`, `references/api-tags/`, and `references/api-contracts/` only when the platform guide does not provide enough route or field detail.
|
|
76
|
-
7. Read `references/workflow.md` to complete bucketing, sampling, sampled explanations, and `author_analysis_v2`.
|
|
77
|
-
8. Return the creator card, author sample cards, sampled enhanced cards, and aggregated conclusions.
|
|
78
|
-
|
|
79
|
-
## References
|
|
80
|
-
|
|
81
|
-
- API capability index: `references/api-capability-index.md`
|
|
82
|
-
- Tag-level route summaries: `references/api-tags/`
|
|
83
|
-
- Tag-level full contracts: `references/api-contracts/`
|
|
84
|
-
- U2/U3 ASR fallback: `references/service-guides/asr-u2-u3-fallback.md`
|
|
85
|
-
- Creator-card fields: `references/contracts/creator-card-fields.md`
|
|
86
|
-
- Work-card fields: `references/contracts/work-card-fields.md`
|
|
87
|
-
- ASR orchestration: `references/asr-orchestration.md`
|
|
88
|
-
- Creator workflow: `references/workflow.md`
|
|
89
|
-
- Author-analysis prompt contract: `references/prompt-contracts/author-analysis-v2.md`
|
|
90
|
-
- Sampled-explanations prompt contract: `references/prompt-contracts/sampled-work-batch-explanations.md`
|
|
91
|
-
- Author-analysis schema: `references/schemas/author-analysis-v2.schema.json`
|
|
92
|
-
- Sampled-explanations schema: `references/schemas/sampled-work-batch-explanations.schema.json`
|
|
93
|
-
- Generic platform guide: `references/platform-guides/generic.md`
|
|
94
|
-
- Douyin guide: `references/platform-guides/douyin.md`
|
|
95
|
-
- Xiaohongshu guide: `references/platform-guides/xiaohongshu.md`
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Creator Analysis"
|
|
3
|
-
short_description: "Creator, profile, and collection benchmark analysis"
|
|
4
|
-
default_prompt: "Use $creator-analysis to analyze a creator, account profile, or content collection and return the creator card, work cards, creator benchmark breakdown, and aggregated conclusions."
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# [ZH] 本文件是 creator-analysis 的环境变量示例。
|
|
2
|
-
# [EN] This file is the env example for creator-analysis.
|
|
3
|
-
#
|
|
4
|
-
# [ZH] 正常情况下,请先把仓库根 env.example 复制到 skills/.env。
|
|
5
|
-
# [EN] In normal use, copy the repo-root env.example to skills/.env first.
|
|
6
|
-
#
|
|
7
|
-
# [ZH] 只有当 creator-analysis 需要局部覆盖时,才把下面字段复制到本目录的 .env.local。
|
|
8
|
-
# [EN] Only copy selected keys into this folder's .env.local when creator-analysis needs local overrides.
|
|
9
|
-
|
|
10
|
-
# [ZH] 输出根目录。默认值:继承 skills/.env;如需局部覆盖,必须是绝对路径。
|
|
11
|
-
# [EN] Output root. Default: inherited from skills/.env; must be absolute when overridden locally.
|
|
12
|
-
# TIKOMNI_OUTPUT_ROOT="/absolute/path/to/tikomni-output"
|
|
13
|
-
|
|
14
|
-
# [ZH] 卡片根目录。默认值:继承 skills/.env;如需局部覆盖,必须是绝对路径。
|
|
15
|
-
# [EN] Card root. Default: inherited from skills/.env; must be absolute when overridden locally.
|
|
16
|
-
# TIKOMNI_CARD_ROOT="/absolute/path/to/tikomni-cards"
|
|
17
|
-
|
|
18
|
-
# [ZH] 路由语言预设。默认值:zh
|
|
19
|
-
# [EN] Route locale preset. Default: zh
|
|
20
|
-
TIKOMNI_PATH_LOCALE="zh"
|
|
21
|
-
|
|
22
|
-
# [ZH] 作者级 LLM 分析超时,单位秒。默认值:45
|
|
23
|
-
# [EN] Timeout for creator-level LLM analysis in seconds. Default: 45
|
|
24
|
-
TIKOMNI_AUTHOR_ANALYSIS_TIMEOUT_SEC="45"
|
|
25
|
-
|
|
26
|
-
# [ZH] sampled works 少于该阈值时跳过作者级 LLM 分析。默认值:5
|
|
27
|
-
# [EN] Skip creator-level LLM analysis when sampled works are below this threshold. Default: 5
|
|
28
|
-
TIKOMNI_AUTHOR_ANALYSIS_SMALL_SAMPLE_SKIP="5"
|
|
29
|
-
|
|
30
|
-
# [ZH] sampled works 批量解释超时,单位秒。默认值:45
|
|
31
|
-
# [EN] Timeout for sampled-work batch explanations in seconds. Default: 45
|
|
32
|
-
TIKOMNI_SAMPLED_EXPLANATION_TIMEOUT_SEC="45"
|
|
33
|
-
|
|
34
|
-
# [ZH] 显式配置文件路径。默认值:空;留空时自动使用本模块 defaults.yaml
|
|
35
|
-
# [EN] Explicit config file path. Default: empty; when empty the module uses its own defaults.yaml
|
|
36
|
-
# TIKOMNI_CONFIG_FILE=""
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# TikOmni API Capability Index
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
- This auto-generated lightweight entry point helps identify the right tag, capability area, and auth pattern first.
|
|
6
|
-
- Source mode: `remote`
|
|
7
|
-
- Source: `https://app.tikomni.com/openapi/tikomni-openapi.full.with-u2.public.latest.json`
|
|
8
|
-
- Fetched at: `2026-03-08T06:54:04+00:00`
|
|
9
|
-
- Start route selection here. Read `api-tags/` and `api-contracts/` only when you need field definitions, defaults, examples, or full response structures.
|
|
10
|
-
- If the task involves ASR timeout, non-public media URLs, or U3 media relay, also read `service-guides/asr-u2-u3-fallback.md`.
|
|
11
|
-
|
|
12
|
-
## Global Auth
|
|
13
|
-
|
|
14
|
-
- Default auth: Header `Authorization: Bearer {token}`; docs also allow Cookie `Authorization` as fallback (`HTTPBearer`)
|
|
15
|
-
- If a route overrides or disables the default auth requirement, trust the corresponding `api-tags/` and `api-contracts/` entries.
|
|
16
|
-
|
|
17
|
-
## Read Order
|
|
18
|
-
|
|
19
|
-
1. Choose a tag by platform and object type.
|
|
20
|
-
2. Open `api-tags/<tag>.md` for route summaries, auth requirements, and key fields.
|
|
21
|
-
3. Open `api-contracts/<tag>.md` only when you need exact field definitions, defaults, examples, or full success-response structures.
|
|
22
|
-
4. If the task involves transcription, the 90-second soft observation window, or the 120-second hard fallback, read the U2/U3 guide.
|
|
23
|
-
|
|
24
|
-
## Stats
|
|
25
|
-
|
|
26
|
-
- Tag groups: `53`
|
|
27
|
-
- Routes: `991`
|
|
28
|
-
- Generated targets: `3` skill reference sets
|
|
29
|
-
|
|
30
|
-
## Special Flows
|
|
31
|
-
|
|
32
|
-
- ASR and U3 fallback: [`service-guides/asr-u2-u3-fallback.md`](./service-guides/asr-u2-u3-fallback.md)
|
|
33
|
-
- ASR tag: [`api-tags/asr-api.md`](./api-tags/asr-api.md)
|
|
34
|
-
- U3 media relay tag: [`api-tags/media-ingest-api.md`](./api-tags/media-ingest-api.md)
|
|
35
|
-
|
|
36
|
-
## Tag Overview
|
|
37
|
-
|
|
38
|
-
| Tag | File | Contract | Ops | Auth | Common Capabilities | Common Inputs |
|
|
39
|
-
| --- | --- | --- | ---: | --- | --- | --- |
|
|
40
|
-
| `ASR-API` | [`api-tags/asr-api.md`](./api-tags/asr-api.md) | [`api-contracts/asr-api.md`](./api-contracts/asr-api.md) | 2 | Header `Authorization` Bearer | ASR / transcription / audio / media / general | `input`, `task_id` |
|
|
41
|
-
| `Bilibili-App-API` | [`api-tags/bilibili-app-api.md`](./api-tags/bilibili-app-api.md) | [`api-contracts/bilibili-app-api.md`](./api-contracts/bilibili-app-api.md) | 11 | Header `Authorization` Bearer | general / profiles / accounts / content details / search | `av_id`, `bv_id`, `page`, `idx`, `next_offset`, `ps`, `keyword`, `page_size`, `order`, `user_id` |
|
|
42
|
-
| `Bilibili-Web-API` | [`api-tags/bilibili-web-api.md`](./api-tags/bilibili-web-api.md) | [`api-contracts/bilibili-web-api.md`](./api-contracts/bilibili-web-api.md) | 30 | Header `Authorization` Bearer | content details / profiles / accounts / livestream / details | `bv_id`, `uid`, `pn`, `cid`, `dynamic_id`, `order`, `room_id`, `a_id`, `c_id`, `url` |
|
|
43
|
-
| `Demo-API` | [`api-tags/demo-api.md`](./api-tags/demo-api.md) | [`api-contracts/demo-api.md`](./api-contracts/demo-api.md) | 9 | Header `Authorization` Bearer | content details / profiles / accounts / general / search | None |
|
|
44
|
-
| `Douyin-App-V3-API` | [`api-tags/douyin-app-v3-api.md`](./api-tags/douyin-app-v3-api.md) | [`api-contracts/douyin-app-v3-api.md`](./api-contracts/douyin-app-v3-api.md) | 47 | Header `Authorization` Bearer | content details / search / profiles / accounts / details | `count`, `cursor`, `keyword`, `aweme_id`, `sec_user_id`, `offset`, `sort_type`, `publish_time`, `filter_duration`, `aweme_ids` |
|
|
45
|
-
| `Douyin-Billboard-API` | [`api-tags/douyin-billboard-api.md`](./api-tags/douyin-billboard-api.md) | [`api-contracts/douyin-billboard-api.md`](./api-contracts/douyin-billboard-api.md) | 31 | Header `Authorization` Bearer | trends / rankings / search / topics / details | `page_size`, `date_window`, `page`, `keyword`, `tags`, `sec_uid`, `option`, `page_num`, `end_date`, `start_date` |
|
|
46
|
-
| `Douyin-Creator-API` | [`api-tags/douyin-creator-api.md`](./api-tags/douyin-creator-api.md) | [`api-contracts/douyin-creator-api.md`](./api-contracts/douyin-creator-api.md) | 16 | Header `Authorization` Bearer | creators / trends / rankings / topics / details | `billboard_tag`, `order_key`, `time_filter`, `limit`, `offset`, `category_id`, `order`, `activity_id`, `start_time`, `end_time` |
|
|
47
|
-
| `Douyin-Creator-V2-API` | [`api-tags/douyin-creator-v2-api.md`](./api-tags/douyin-creator-v2-api.md) | [`api-contracts/douyin-creator-v2-api.md`](./api-contracts/douyin-creator-v2-api.md) | 14 | Header `Authorization` Bearer | creators / media / download / search / trends / rankings | `cookie`, `item_id`, `start_date`, `end_date`, `genres`, `primary_verticals`, `fields`, `need_long_article`, `metric_type`, `count` |
|
|
48
|
-
| `Douyin-Search-API` | [`api-tags/douyin-search-api.md`](./api-tags/douyin-search-api.md) | [`api-contracts/douyin-search-api.md`](./api-contracts/douyin-search-api.md) | 20 | Header `Authorization` Bearer | search / topics / profiles / accounts / content details | `keyword`, `cursor`, `search_id`, `sort_type`, `publish_time`, `filter_duration`, `content_type`, `backtrace`, `douyin_user_fans`, `douyin_user_type` |
|
|
49
|
-
| `Douyin-Web-API` | [`api-tags/douyin-web-api.md`](./api-tags/douyin-web-api.md) | [`api-contracts/douyin-web-api.md`](./api-contracts/douyin-web-api.md) | 76 | Header `Authorization` Bearer | profiles / accounts / content details / general / livestream | `count`, `cookie`, `refresh_index`, `keyword`, `sec_user_id`, `cursor`, `room_id`, `offset`, `aweme_id`, `max_cursor` |
|
|
50
|
-
| `Douyin-Xingtu-API` | [`api-tags/douyin-xingtu-api.md`](./api-tags/douyin-xingtu-api.md) | [`api-contracts/douyin-xingtu-api.md`](./api-contracts/douyin-xingtu-api.md) | 22 | Header `Authorization` Bearer | general / content details / comments / trends / rankings | `kolId`, `platformChannel`, `_range`, `page`, `onlyAssign`, `keyword`, `uri`, `durationTS`, `format`, `sec_user_id` |
|
|
51
|
-
| `Douyin-Xingtu-V2-API` | [`api-tags/douyin-xingtu-v2-api.md`](./api-tags/douyin-xingtu-v2-api.md) | [`api-contracts/douyin-xingtu-v2-api.md`](./api-contracts/douyin-xingtu-v2-api.md) | 21 | Header `Authorization` Bearer | creators / general / trends / rankings / comments | `o_author_id`, `platform_source`, `limit`, `platform_channel`, `author_id`, `only_assign`, `flow_type`, `page`, `qualifier`, `period` |
|
|
52
|
-
| `Health-Check` | [`api-tags/health-check.md`](./api-tags/health-check.md) | [`api-contracts/health-check.md`](./api-contracts/health-check.md) | 1 | Header `Authorization` Bearer | general | None |
|
|
53
|
-
| `Hybrid-Parsing` | [`api-tags/hybrid-parsing.md`](./api-tags/hybrid-parsing.md) | [`api-contracts/hybrid-parsing.md`](./api-contracts/hybrid-parsing.md) | 1 | Header `Authorization` Bearer | content details | `url`, `minimal`, `base64_url` |
|
|
54
|
-
| `Instagram-V1-API` | [`api-tags/instagram-v1-api.md`](./api-tags/instagram-v1-api.md) | [`api-contracts/instagram-v1-api.md`](./api-contracts/instagram-v1-api.md) | 29 | Header `Authorization` Bearer | profiles / accounts / content details / general / comments | `user_id`, `max_id`, `count`, `end_cursor`, `media_id`, `username`, `page`, `min_id`, `location_id`, `post_url` |
|
|
55
|
-
| `Instagram-V2-API` | [`api-tags/instagram-v2-api.md`](./api-tags/instagram-v2-api.md) | [`api-contracts/instagram-v2-api.md`](./api-contracts/instagram-v2-api.md) | 27 | Header `Authorization` Bearer | profiles / accounts / content details / search / comments | `pagination_token`, `user_id`, `username`, `keyword`, `code_or_url`, `comment_id`, `feed_type`, `highlight_id`, `location_id`, `audio_canonical_id` |
|
|
56
|
-
| `Instagram-V3-API` | [`api-tags/instagram-v3-api.md`](./api-tags/instagram-v3-api.md) | [`api-contracts/instagram-v3-api.md`](./api-contracts/instagram-v3-api.md) | 26 | Header `Authorization` Bearer | profiles / accounts / content details / comments / search | `user_id`, `username`, `url`, `first`, `after`, `query`, `media_id`, `code`, `max_id`, `comment_id` |
|
|
57
|
-
| `Kuaishou-App-API` | [`api-tags/kuaishou-app-api.md`](./api-tags/kuaishou-app-api.md) | [`api-contracts/kuaishou-app-api.md`](./api-contracts/kuaishou-app-api.md) | 20 | Header `Authorization` Bearer | content details / trends / rankings / profiles / accounts / search | `pcursor`, `user_id`, `subTabId`, `subTabName`, `keyword`, `magic_face_id`, `photo_id`, `page`, `boardType`, `boardId` |
|
|
58
|
-
| `Kuaishou-Web-API` | [`api-tags/kuaishou-web-api.md`](./api-tags/kuaishou-web-api.md) | [`api-contracts/kuaishou-web-api.md`](./api-contracts/kuaishou-web-api.md) | 13 | Header `Authorization` Bearer | content details / profiles / accounts / trends / rankings / comments | `pcursor`, `photo_id`, `user_id`, `share_link`, `board_type`, `share_text`, `url`, `root_comment_id` |
|
|
59
|
-
| `Lemon8-App-API` | [`api-tags/lemon8-app-api.md`](./api-tags/lemon8-app-api.md) | [`api-contracts/lemon8-app-api.md`](./api-contracts/lemon8-app-api.md) | 16 | Header `Authorization` Bearer | general / profiles / accounts / content details / search | `user_id`, `item_id`, `cursor`, `share_text`, `group_id`, `media_id`, `offset`, `query`, `max_cursor`, `filter_type` |
|
|
60
|
-
| `LinkedIn-Web-API` | [`api-tags/linkedin-web-api.md`](./api-tags/linkedin-web-api.md) | [`api-contracts/linkedin-web-api.md`](./api-contracts/linkedin-web-api.md) | 25 | Header `Authorization` Bearer | profiles / accounts / general / content details / search | `page`, `urn`, `company_id`, `pagination_token`, `sort_by`, `company`, `username`, `date_posted`, `experience_level`, `remote` |
|
|
61
|
-
| `Media-Ingest-API` | [`api-tags/media-ingest-api.md`](./api-tags/media-ingest-api.md) | [`api-contracts/media-ingest-api.md`](./api-contracts/media-ingest-api.md) | 2 | Header `Authorization` Bearer | media upload / public URL | `provider`, `file_name`, `content_type`, `size_bytes`, `upload_id` |
|
|
62
|
-
| `PiPiXia-App-API` | [`api-tags/pipixia-app-api.md`](./api-tags/pipixia-app-api.md) | [`api-contracts/pipixia-app-api.md`](./api-contracts/pipixia-app-api.md) | 17 | Header `Authorization` Bearer | content details / profiles / accounts / search / details | `cursor`, `cell_id`, `user_id`, `cell_type`, `hashtag_id`, `feed_count`, `offset`, `hashtag_request_type`, `hashtag_sort_type`, `page` |
|
|
63
|
-
| `Reddit-APP-API` | [`api-tags/reddit-app-api.md`](./api-tags/reddit-app-api.md) | [`api-contracts/reddit-app-api.md`](./api-contracts/reddit-app-api.md) | 24 | Header `Authorization` Bearer | general / profiles / accounts / content details / comments | `need_format`, `after`, `sort`, `username`, `subreddit_name`, `subreddit_id`, `post_id`, `filter_posts`, `include_comment_id`, `comment_id` |
|
|
64
|
-
| `Sora2-API` | [`api-tags/sora2-api.md`](./api-tags/sora2-api.md) | [`api-contracts/sora2-api.md`](./api-contracts/sora2-api.md) | 17 | Header `Authorization` Bearer | content details / profiles / accounts / general / comments | `cursor`, `user_id`, `post_id`, `post_url`, `task_id`, `prompt`, `orientation`, `media_id`, `comment_id`, `eager_views` |
|
|
65
|
-
| `Temp-Mail-API` | [`api-tags/temp-mail-api.md`](./api-tags/temp-mail-api.md) | [`api-contracts/temp-mail-api.md`](./api-contracts/temp-mail-api.md) | 3 | Header `Authorization` Bearer | general | `token`, `message_id` |
|
|
66
|
-
| `Threads-Web-API` | [`api-tags/threads-web-api.md`](./api-tags/threads-web-api.md) | [`api-contracts/threads-web-api.md`](./api-contracts/threads-web-api.md) | 11 | Header `Authorization` Bearer | profiles / accounts / content details / search / details | `end_cursor`, `user_id`, `post_id`, `query`, `url`, `username` |
|
|
67
|
-
| `TikHub-Downloader-API` | [`api-tags/tikhub-downloader-api.md`](./api-tags/tikhub-downloader-api.md) | [`api-contracts/tikhub-downloader-api.md`](./api-contracts/tikhub-downloader-api.md) | 2 | Header `Authorization` Bearer | media / download | None |
|
|
68
|
-
| `TikHub-User-API` | [`api-tags/tikhub-user-api.md`](./api-tags/tikhub-user-api.md) | [`api-contracts/tikhub-user-api.md`](./api-contracts/tikhub-user-api.md) | 6 | Header `Authorization` Bearer | profiles / accounts | `endpoint`, `request_per_day` |
|
|
69
|
-
| `TikTok-Ads-API` | [`api-tags/tiktok-ads-api.md`](./api-tags/tiktok-ads-api.md) | [`api-contracts/tiktok-ads-api.md`](./api-contracts/tiktok-ads-api.md) | 31 | Header `Authorization` Bearer | ads / search / details / creators | `limit`, `page`, `country_code`, `period`, `keyword`, `period_type`, `industry`, `order_by`, `rank_type`, `material_id` |
|
|
70
|
-
| `TikTok-Analytics-API` | [`api-tags/tiktok-analytics-api.md`](./api-tags/tiktok-analytics-api.md) | [`api-contracts/tiktok-analytics-api.md`](./api-contracts/tiktok-analytics-api.md) | 4 | Header `Authorization` Bearer | analytics / comments / creators / content details | `item_id`, `content_category`, `user_id` |
|
|
71
|
-
| `TikTok-App-V3-API` | [`api-tags/tiktok-app-v3-api.md`](./api-tags/tiktok-app-v3-api.md) | [`api-contracts/tiktok-app-v3-api.md`](./api-contracts/tiktok-app-v3-api.md) | 75 | Header `Authorization` Bearer | content details / commerce / profiles / accounts / search | `count`, `offset`, `keyword`, `sort_type`, `cursor`, `region`, `sec_user_id`, `user_id`, `room_id`, `seller_id` |
|
|
72
|
-
| `TikTok-Creator-API` | [`api-tags/tiktok-creator-api.md`](./api-tags/tiktok-creator-api.md) | [`api-contracts/tiktok-creator-api.md`](./api-contracts/tiktok-creator-api.md) | 14 | Header `Authorization` Bearer | creators / content details / analytics / commerce | `cookie`, `proxy`, `start_date`, `item_id`, `page`, `product_id`, `end_date`, `count`, `offset`, `item_ids` |
|
|
73
|
-
| `TikTok-Interaction-API` | [`api-tags/tiktok-interaction-api.md`](./api-tags/tiktok-interaction-api.md) | [`api-contracts/tiktok-interaction-api.md`](./api-contracts/tiktok-interaction-api.md) | 7 | Header `Authorization` Bearer | general / comments / content details / comment replies | `cookie`, `device_id`, `iid`, `proxy`, `aweme_id`, `text`, `api_key`, `invite_code`, `user_id`, `sec_user_id` |
|
|
74
|
-
| `TikTok-Shop-Web-API` | [`api-tags/tiktok-shop-web-api.md`](./api-tags/tiktok-shop-web-api.md) | [`api-contracts/tiktok-shop-web-api.md`](./api-contracts/tiktok-shop-web-api.md) | 15 | Header `Authorization` Bearer | commerce / search / details / trends / rankings | `region`, `product_id`, `offset`, `seller_id`, `search_word`, `page_token`, `lang`, `count`, `sort_type`, `filter_id` |
|
|
75
|
-
| `TikTok-Web-API` | [`api-tags/tiktok-web-api.md`](./api-tags/tiktok-web-api.md) | [`api-contracts/tiktok-web-api.md`](./api-contracts/tiktok-web-api.md) | 58 | Header `Authorization` Bearer | general / profiles / accounts / livestream / content details | `count`, `cursor`, `cookie`, `secUid`, `url`, `keyword`, `search_id`, `user_agent`, `offset`, `coverFormat` |
|
|
76
|
-
| `Toutiao-App-API` | [`api-tags/toutiao-app-api.md`](./api-tags/toutiao-app-api.md) | [`api-contracts/toutiao-app-api.md`](./api-contracts/toutiao-app-api.md) | 5 | Header `Authorization` Bearer | content details / profiles / accounts / comments | `group_id`, `offset`, `user_profile_url`, `user_id` |
|
|
77
|
-
| `Toutiao-Web-API` | [`api-tags/toutiao-web-api.md`](./api-tags/toutiao-web-api.md) | [`api-contracts/toutiao-web-api.md`](./api-contracts/toutiao-web-api.md) | 2 | Header `Authorization` Bearer | content details | `aweme_id` |
|
|
78
|
-
| `Twitter-Web-API` | [`api-tags/twitter-web-api.md`](./api-tags/twitter-web-api.md) | [`api-contracts/twitter-web-api.md`](./api-contracts/twitter-web-api.md) | 13 | Header `Authorization` Bearer | profiles / accounts / content details / comments / search | `cursor`, `screen_name`, `tweet_id`, `rest_id`, `keyword`, `search_type`, `country`, `userId`, `count` |
|
|
79
|
-
| `WeChat-Channels-API` | [`api-tags/wechat-channels-api.md`](./api-tags/wechat-channels-api.md) | [`api-contracts/wechat-channels-api.md`](./api-contracts/wechat-channels-api.md) | 9 | Header `Authorization` Bearer | profiles / accounts / search / comments / trends / rankings | `keywords`, `id`, `username`, `lastBuffer`, `comment_id`, `session_buffer`, `last_buffer`, `page`, `exportId` |
|
|
80
|
-
| `WeChat-Media-Platform-Web-API` | [`api-tags/wechat-media-platform-web-api.md`](./api-tags/wechat-media-platform-web-api.md) | [`api-contracts/wechat-media-platform-web-api.md`](./api-contracts/wechat-media-platform-web-api.md) | 10 | Header `Authorization` Bearer | content details / comments / details / comment replies | `url`, `comment_id`, `offset`, `buffer`, `content_id`, `ghid`, `sogou_url` |
|
|
81
|
-
| `Weibo-App-API` | [`api-tags/weibo-app-api.md`](./api-tags/weibo-app-api.md) | [`api-contracts/weibo-app-api.md`](./api-contracts/weibo-app-api.md) | 20 | Header `Authorization` Bearer | profiles / accounts / content details / search / details | `uid`, `page`, `since_id`, `status_id`, `query`, `count`, `max_id`, `category`, `search_type`, `sort_type` |
|
|
82
|
-
| `Weibo-Web-API` | [`api-tags/weibo-web-api.md`](./api-tags/weibo-web-api.md) | [`api-contracts/weibo-web-api.md`](./api-contracts/weibo-web-api.md) | 11 | Header `Authorization` Bearer | profiles / accounts / search / content details / comments | `page`, `max_id`, `post_id`, `uid`, `channel_name`, `cid`, `mid`, `max_id_type`, `keyword`, `search_type` |
|
|
83
|
-
| `Weibo-Web-V2-API` | [`api-tags/weibo-web-v2-api.md`](./api-tags/weibo-web-v2-api.md) | [`api-contracts/weibo-web-v2-api.md`](./api-contracts/weibo-web-v2-api.md) | 33 | Header `Authorization` Bearer | search / profiles / accounts / content details / general | `page`, `uid`, `query`, `id`, `max_id`, `count`, `since_id`, `q`, `keyword`, `cursor` |
|
|
84
|
-
| `Xiaohongshu-App-API` | [`api-tags/xiaohongshu-app-api.md`](./api-tags/xiaohongshu-app-api.md) | [`api-contracts/xiaohongshu-app-api.md`](./api-contracts/xiaohongshu-app-api.md) | 12 | Header `Authorization` Bearer | content details / profiles / accounts / comments / commerce | `note_id`, `session_id`, `share_link`, `start`, `share_text`, `sort`, `user_id`, `keyword`, `page`, `search_id` |
|
|
85
|
-
| `Xiaohongshu-App-V2-API` | [`api-tags/xiaohongshu-app-v2-api.md`](./api-tags/xiaohongshu-app-v2-api.md) | [`api-contracts/xiaohongshu-app-v2-api.md`](./api-contracts/xiaohongshu-app-v2-api.md) | 21 | Header `Authorization` Bearer | content details / commerce / search / details | `source`, `share_text`, `cursor`, `note_id`, `page`, `keyword`, `search_id`, `sku_id`, `user_id`, `tab` |
|
|
86
|
-
| `Xiaohongshu-Web-API` | [`api-tags/xiaohongshu-web-api.md`](./api-tags/xiaohongshu-web-api.md) | [`api-contracts/xiaohongshu-web-api.md`](./api-contracts/xiaohongshu-web-api.md) | 17 | Header `Authorization` Bearer | content details / profiles / accounts / search / comments | `note_id`, `share_text`, `cookie`, `proxy`, `lastCursor`, `user_id`, `keyword`, `page`, `xsec_token`, `sort` |
|
|
87
|
-
| `Xiaohongshu-Web-V2-API` | [`api-tags/xiaohongshu-web-v2-api.md`](./api-tags/xiaohongshu-web-v2-api.md) | [`api-contracts/xiaohongshu-web-v2-api.md`](./api-contracts/xiaohongshu-web-v2-api.md) | 18 | Header `Authorization` Bearer | content details / profiles / accounts / general / comments | `note_id`, `user_id`, `cursor`, `page`, `keywords`, `short_url`, `sort_type`, `note_type`, `comment_id` |
|
|
88
|
-
| `Xigua-App-V2-API` | [`api-tags/xigua-app-v2-api.md`](./api-tags/xigua-app-v2-api.md) | [`api-contracts/xigua-app-v2-api.md`](./api-contracts/xigua-app-v2-api.md) | 7 | Header `Authorization` Bearer | content details / profiles / accounts / comments / search | `item_id`, `user_id`, `offset`, `max_behot_time`, `count`, `keyword`, `order_type`, `min_duration`, `max_duration` |
|
|
89
|
-
| `YouTube-Web-API` | [`api-tags/youtube-web-api.md`](./api-tags/youtube-web-api.md) | [`api-contracts/youtube-web-api.md`](./api-contracts/youtube-web-api.md) | 21 | Header `Authorization` Bearer | content details / profiles / accounts / search / comments | `continuation_token`, `language_code`, `country_code`, `channel_id`, `video_id`, `need_format`, `search_query`, `sort_by`, `lang`, `time_zone` |
|
|
90
|
-
| `YouTube-Web-V2-API` | [`api-tags/youtube-web-v2-api.md`](./api-tags/youtube-web-v2-api.md) | [`api-contracts/youtube-web-v2-api.md`](./api-contracts/youtube-web-v2-api.md) | 16 | Header `Authorization` Bearer | content details / profiles / accounts / search / livestream | `continuation_token`, `need_format`, `language_code`, `country_code`, `video_id`, `channel_id`, `video_url`, `sort_by`, `channel_url`, `search_query` |
|
|
91
|
-
| `Zhihu-Web-API` | [`api-tags/zhihu-web-api.md`](./api-tags/zhihu-web-api.md) | [`api-contracts/zhihu-web-api.md`](./api-contracts/zhihu-web-api.md) | 32 | Header `Authorization` Bearer | search / profiles / accounts / content details / general | `offset`, `limit`, `keyword`, `user_url_token`, `search_hash_id`, `article_id`, `order_by`, `message_content`, `message_id`, `show_all_topics` |
|
|
92
|
-
| `iOS-Shortcut` | [`api-tags/ios-shortcut.md`](./api-tags/ios-shortcut.md) | [`api-contracts/ios-shortcut.md`](./api-contracts/ios-shortcut.md) | 1 | Header `Authorization` Bearer | general | None |
|