@tikomni/skills 0.1.2 → 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 -3
- 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/{creator-analysis/scripts/pipeline/asr → social-media-crawl/scripts/core}/asr_pipeline.py +252 -9
- package/skills/social-media-crawl/scripts/core/completeness.py +83 -0
- package/skills/{single-work-analysis → social-media-crawl}/scripts/core/config_loader.py +108 -167
- 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/{creator-analysis/scripts/pipeline/asr → social-media-crawl/scripts/core}/poll_u2_task.py +6 -2
- package/skills/{single-work-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/{creator-analysis → social-media-crawl}/scripts/core/tikomni_common.py +13 -3
- 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} +282 -174
- 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} +290 -141
- 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/progress_report.py +0 -111
- package/skills/creator-analysis/scripts/core/storage_router.py +0 -256
- 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/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 -58
- 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/asr-clean.md +0 -28
- package/skills/single-work-analysis/references/prompt-contracts/cta.md +0 -24
- package/skills/single-work-analysis/references/prompt-contracts/hook.md +0 -25
- package/skills/single-work-analysis/references/prompt-contracts/insight.md +0 -47
- package/skills/single-work-analysis/references/prompt-contracts/structure.md +0 -25
- package/skills/single-work-analysis/references/prompt-contracts/style.md +0 -27
- package/skills/single-work-analysis/references/prompt-contracts/summary.md +0 -29
- package/skills/single-work-analysis/references/prompt-contracts/topic.md +0 -29
- 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_pipeline.py +0 -133
- 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/storage_router.py +0 -253
- package/skills/single-work-analysis/scripts/core/tikomni_common.py +0 -588
- 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/pipeline/asr/asr_pipeline.py +0 -1189
- package/skills/single-work-analysis/scripts/pipeline/asr/poll_u2_task.py +0 -95
- 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 -1402
- /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/{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,35 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Xiaohongshu creator-home helper entrypoints."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from typing import Any, Dict, List, Tuple
|
|
7
|
+
|
|
8
|
+
from scripts.pipelines.homepage_collectors import collect_xhs_author_home_raw
|
|
9
|
+
from scripts.pipelines.platform_adapters import adapt_xhs_author_home
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def collect_and_adapt(
|
|
13
|
+
*,
|
|
14
|
+
input_value: str,
|
|
15
|
+
base_url: str,
|
|
16
|
+
token: str,
|
|
17
|
+
timeout_ms: int,
|
|
18
|
+
page_size: int,
|
|
19
|
+
pages_max: int,
|
|
20
|
+
max_items: int,
|
|
21
|
+
progress: Any = None,
|
|
22
|
+
) -> Tuple[Dict[str, Any], Dict[str, Any], List[Dict[str, Any]], List[Dict[str, str]]]:
|
|
23
|
+
raw = collect_xhs_author_home_raw(
|
|
24
|
+
input_value=input_value,
|
|
25
|
+
base_url=base_url,
|
|
26
|
+
token=token,
|
|
27
|
+
timeout_ms=timeout_ms,
|
|
28
|
+
page_size=page_size,
|
|
29
|
+
pages_max=pages_max,
|
|
30
|
+
max_items=max_items,
|
|
31
|
+
progress=progress,
|
|
32
|
+
)
|
|
33
|
+
profile, works, missing = adapt_xhs_author_home(raw)
|
|
34
|
+
return raw, profile, works, missing
|
|
35
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Writers for social-media-crawl."""
|
|
@@ -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=""
|