| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- # Pipeline default configuration
- #
- # Priority: CLI flags > this file > .env (for secrets/endpoints)
- branding:
- channelName: "知势·科技洞察"
- llm:
- # baseURL: set via OPENAI_BASE_URL in .env
- # apiKey: set via OPENAI_API_KEY in .env
- model: "model-stable"
- tts:
- provider: "openai-tts"
- speed: 1.0
- format: "mp3"
- # alignment:
- # provider: "whisper"
- # whisperModel: "base"
- # language: "zh"
- openai-tts:
- # apiKey: set via OPENAI_TTS_API_KEY in .env
- # baseURL: set via OPENAI_TTS_BASE_URL in .env
- model: "seed-tts-1.1"
- defaultVoice: "zh_female_vv_uranus_bigtts"
- fish-audio:
- # apiKey: set via FISH_AUDIO_API_KEY in .env
- model: "s2-pro"
- defaultVoice: ""
- minimax:
- # apiKey: set via MINIMAX_API_KEY in .env
- # groupId: set via MINIMAX_GROUP_ID in .env
- model: "speech-02-hd"
- defaultVoice: ""
- elevenlabs:
- # apiKey: set via ELEVENLABS_API_KEY in .env
- model: "eleven_multilingual_v2"
- defaultVoice: "21m00Tcm4TlvDq8ikWAM"
- render:
- fps: 30
- codec: "h264"
- output:
- dir: "./output"
- format: "mp4"
- # Auto-clean cached outputs older than this many days (0 disables). Default 30.
- # Override with the OUTPUT_RETENTION_DAYS env var.
- retentionDays: 30
- # 每日推荐的"已讲历史"去重状态(covered store,@pipeline/shared/node)。
- # coveredWindowDays — 滚动去重窗口(天):窗口内讲过的项目不再讲,过期释放。
- # 文件位置由 PIPELINE_COVERED_DIR 指定(默认系统临时目录,重启即丢——部署时
- # 必须指向持久卷,推荐 jobs 卷的 covered/ 子目录,见 docs/DEPLOYMENT.md)。
- state:
- coveredWindowDays: 90
- # Alibaba Cloud OSS — rendered videos are uploaded here and a resource URL is
- # returned. Non-sensitive values may live in this file; secrets (access keys)
- # belong in .env. Every field can be overridden by an OSS_* env var.
- oss:
- region: "oss-cn-hangzhou" # OSS_REGION
- bucket: "" # OSS_BUCKET
- accessKeyId: "" # OSS_ACCESS_KEY_ID (use .env)
- accessKeySecret: "" # OSS_ACCESS_KEY_SECRET (use .env)
- # endpoint: "" # custom endpoint, e.g. https://oss-cn-hangzhou.aliyuncs.com — OSS_ENDPOINT
- # path: "videos/" # object key prefix — OSS_PATH
- # publicDomain: "" # base URL for resource links (e.g. a CDN) — OSS_PUBLIC_DOMAIN
- # secure: true # use HTTPS — OSS_SECURE
- # Feishu (Lark) custom-bot webhook — push results / failures after each job.
- feishu:
- webhook: "" # FEISHU_WEBHOOK_URL (use .env)
- # secret: "" # signing secret — FEISHU_WEBHOOK_SECRET
- # Publish manifest — written as {video}.yaml next to each rendered MP4 with the
- # title/description/tags (LLM-produced for github-trending) plus the
- # platform-specific 分区/category defined here. Lookup: publishMeta[platform][template].
- # Only fill the combos you publish; missing combos just omit those keys.
- publishMeta:
- bilibili:
- github-trending:
- tid: 122 # 分区 id (122 = 科技→科普). Adjust to your target board.
- tags: ["GitHub", "开源", "热榜"]
- github-weekly:
- tid: 122
- tags: ["GitHub", "开源", "周榜"]
- github-daily-pick:
- tid: 122
- tags: ["GitHub", "开源", "推荐"]
- github-weekly-recap:
- tid: 122
- tags: ["GitHub", "开源", "周报"]
- douyin-long:
- github-trending:
- category: "科技"
- tags: ["GitHub", "开源"]
- github-weekly:
- category: "科技"
- tags: ["GitHub", "开源", "周榜"]
- github-daily-pick:
- category: "科技"
- tags: ["GitHub", "开源", "推荐"]
- github-weekly-recap:
- category: "科技"
- tags: ["GitHub", "开源", "周报"]
- douyin-short:
- github-trending:
- category: "科技"
- tags: ["GitHub", "开源"]
- github-weekly:
- category: "科技"
- tags: ["GitHub", "开源", "周榜"]
- github-daily-pick:
- category: "科技"
- tags: ["GitHub", "开源", "推荐"]
- github-weekly-recap:
- category: "科技"
- tags: ["GitHub", "开源", "周报"]
- templates:
- news:
- primaryColor: "#1a56db"
- accentColor: "#dc2626"
- knowledge:
- primaryColor: "#0d9488"
- accentColor: "#6b7280"
- opinion:
- primaryColor: "#ea580c"
- accentColor: "#374151"
- marketing:
- primaryColor: "#9333ea"
- accentColor: "#ec4899"
- github-trending:
- primaryColor: "#22c55e"
- accentColor: "#3b82f6"
- github-weekly:
- primaryColor: "#d97706"
- accentColor: "#1e3a5f"
- github-daily-pick:
- primaryColor: "#8b5cf6"
- accentColor: "#22d3ee"
- github-weekly-recap:
- primaryColor: "#0284c7"
- accentColor: "#b45309"
- collect:
- github-trending:
- url: "https://github.crawler.corp.shuidi.tech/api/trending"
- # Repo-detail endpoint used to fetch each top repo's README (per-repo
- # description grounding). Optional — without it, only trending metadata is used.
- repoUrl: "https://github.crawler.corp.shuidi.tech/api/repos/:owner/:repo"
- # Weekly board — same endpoints; the collector appends ?since=weekly.
- github-weekly:
- url: "https://github.crawler.corp.shuidi.tech/api/trending"
- repoUrl: "https://github.crawler.corp.shuidi.tech/api/repos/:owner/:repo"
- github-repo:
- url: "https://github.crawler.corp.shuidi.tech/api/repos/:owner/:repo"
- github-daily:
- trendingUrl: "https://github.crawler.corp.shuidi.tech/api/trending"
- repoUrl: "https://github.crawler.corp.shuidi.tech/api/repos/:owner/:repo"
- maxRepos: 5
- # 每日推荐选题:日/周/月三榜并集,筛掉窗口内已讲项目后按综合热度取第一
- # 周榜。windowDays 与 state.coveredWindowDays 保持一致;readmeLimit 是深度
- # 版的 README 截断(比榜单类的 2000/3000 更长)。
- github-daily-pick:
- url: "https://github.crawler.corp.shuidi.tech/api/trending"
- repoUrl: "https://github.crawler.corp.shuidi.tech/api/repos/:owner/:repo"
- windowDays: 90
- readmeLimit: 4000
- # 每周推荐回顾:纯读 covered store,无网络依赖(留空对象占位注册)。
- github-weekly-recap: {}
- # 定时生成(容器内进程内调度)。Next.js 服务启动时(instrumentation 钩子)注册
- # 一个进程内调度器,到点 spawn CLI 渲染——复用与 WebUI/HTTP 完全相同的链路,
- # 任务同样进 jobs 列表、走 OSS/飞书发布。改配置后需重启容器生效。
- # cron — 5 字段 cron(分 时 日 月 周),按 TZ(默认 Asia/Shanghai=北京时间)
- # template — 渲染模板(news|knowledge|opinion|marketing|github-trending|github-weekly)
- # platform — 平台规格(bilibili|douyin-long|douyin-short|...),默认 bilibili
- # source — 采集源(如 github-trending);定时场景一般用 source 自动取数
- # sourceArgs — 采集器附加参数(如 github-repo 的 owner/repo),可选
- # publish — 是否上传 OSS + 推送飞书,默认 true
- # enabled — 是否启用该条,默认 true
- # 环境变量 SCHEDULES(JSON 数组,同结构)可整体覆盖(部署期改无需重建镜像);
- # SCHEDULER_ENABLED=false 关闭整个调度器。
- schedules:
- - cron: "50 7 * * *" # 北京时间每天 07:50
- template: "github-trending"
- platform: "bilibili"
- source: "github-trending" # 先采集当日 trending,再解析→渲染→发布
- publish: true
- enabled: true
- - cron: "50 8 * * 6" # 北京时间每周六 08:50
- template: "github-weekly"
- platform: "bilibili"
- source: "github-weekly" # 采集本周 trending(since=weekly),再解析→渲染→发布
- publish: true
- enabled: true
- - cron: "20 9 * * *" # 北京时间每天 09:20(错开 07:50 榜单与周六 08:50 周榜)
- template: "github-daily-pick"
- platform: "bilibili"
- source: "github-daily-pick" # 三榜并集选题,六幕叙事推荐一个开源项目
- publish: true
- enabled: false # 已取消每日推荐
- - cron: "20 18 * * 0" # 北京时间每周日 18:20(覆盖当天上午的推荐,回顾完整一周)
- template: "github-weekly-recap"
- platform: "bilibili"
- source: "github-weekly-recap" # 读本周已讲记录生成回顾,不重新爬榜
- publish: true
- enabled: false # 已取消每周推荐回顾
|