ra-选题
Goal
Translate the user's natural language input into file operations. The user only speaks: record inspiration, give a link, define the format, report publication. Creating cards, washing manuscripts, creating entries, moving cards, and registering boards are all handled by this skill.
Core Model
- Topic Card = Household Register:
01-内容生产/00-选题池/YYYY-MM-DD-<topic>.md(following_选题卡模板.md). It only records ideas, sources, judgments, and project direction; the actual content always lives in the corresponding workspace. - Project Initiation = The Moment of Format Decision: One topic can have multiple formats; each format creates an entity in its own workspace, and the card records
- Format → [[link]]. - Cards Do Not Move Files: When initiating, only change the frontmatter status to
已立项(Initiated); the card stays in its original location in00-选题池/. - Household Register Integrity Guarantee: Any initiation action that finds no card first automatically creates one before proceeding (including scenarios where a link is directly thrown in for manuscript washing).
Verb Table
1. Record Topic (灵感xx / 想法xx / 记录选题xx / 这个链接先存着)
- Create a card in
00-选题池/: User's original words + a refined one-sentence summary + material clues; if a link exists, record it in来源:(Source). If the platform's post ID can be parsed, also fill in源ID:(<platform>:<post_id>). - Status = 想法 (Idea); reply with the card path, do not ask for clarification or elaborate.
2. Deepen Topic (深化xx / xx想清楚点)
- Find the card (match by filename or title), search the material library/methodology, and write angles, hooks, and cases into the "Deepening Notes".
- Status = 深化中 (Deepening); do not change the status of already initiated cards.
- Boundaries for applying
ra-人话rules: The notebook body (angles/arguments/materials/traffic judgment) can be written freely, prioritizing information density, without running the fullra-人话process. However, candidate hooks, opening sentences, headline directions, and golden sentences that directly enter the final draft must comply withra-人话strict prohibitions (no "not A but B", 真正/其实/本质上, lecture-style colon openings, imperative template starts). Complete human-language refinement and quality gates run during the initiation & washing stage, not repeated during the deepening stage.
3. Initiate Project (做成/制作 + format; can combine "video article image-text all")
Route by format. After each format is completed, append a line under "已立项" on the card. Finally, move the card:
| Format | Process | Location |
|---|---|---|
| Video (AI production) | If link exists, run ra-video-wash-pipeline; if pure idea/manuscript, run ra-洗稿 | Handover draft → 视频工作台/待制作/<date-topic>/手稿.md |
| Video (self-recorded voiceover) | Wash manuscript to produce voiceover script, mark "自录口播" at the beginning | 视频工作台/逐字稿/ |
| Article | If link exists, extract source text first: Douyin/Xiaohongshu videos use ra-逐字稿提取skill; Bilibili/YouTube etc. reuse ra-video-wash-pipeline extraction stage; web pages/tweets use Jina (https://r.jina.ai/<url>) to read body text — source files saved in 视频工作台/.internal/ → Wash into long-form article (ra-人话 + methodology/public account opening methodology), dbs-ai-check diagnosis to remove specific fingerprints → Create entry per 文章工作台/_文章模板.md (one folder per article, main draft + assets/, only main draft stored) | 文章工作台/创作中/ + publish board register "待修改" |
| Image-text | Wash into Xiaohongshu copy + dbs-xhs-title title candidates, generate handover draft per _图文交接模板.md (images handed over to Codex) | 图文工作台/待制作/ |
4. Publish & Archive (xx发布了 / xx要改)
- Published: Check the corresponding row on the board and move it to the "已发布" log (date/platform); move article entry from 待发布/ to 已发布/.
- Needs revision: Move board entry back to / register as "待修改".
5. Course Inspiration (这个可以进课程 / 课程灵感xx / #课程灵感)
- Append a line to
02-课程体系/课程选题库/灵感记录.md:- YYYY-MM-DD | One-line inspiration | Related: [[Topic Card or Work]]. - Only accumulate; do not expand course structure (keep the line minimal until business starts).
6. Topic Recommendation (给我N个选题 / 帮我出一批选题)
Gather material from four sources, output N candidates (default 10):
- Cloud Trending Library: Run
automation/scripts/hot_monitor_local_job.sh read boomsto read up to 30 lightweight candidates from the last 90 days. First filter by R/M, lifecycle, and subject. For shortlisted samples, runautomation/scripts/hot_monitor_local_job.sh read work <cloud_work_id>to read L1/transcript/metrics history. For time-sensitive items beyond their window (days since publication > life_window_days), do not recommend the topic itself, but extract the question type gene (e.g., "monthly review", "street interview", "seasonal marketing") and convert it into a new current topic; evergreen topics can be followed directly. - Recent 3 Days Opportunities: Run
automation/scripts/hot_monitor_local_job.sh read recent 3 200 0to read all new works from the last 3 days (including unjudged popular works and YouTube). Whenhas_more=trueis returned, continue reading withnext_offsetuntilhas_more=false. To confirm account coverage, runautomation/scripts/hot_monitor_local_job.sh read creators. The server already uniformly scans Douyin, Xiaohongshu, and YouTube benchmark accounts; by default, do not directly call TikHub for duplicate collection. - Own Account Data: Prioritize expanding topics with high R-values from the
数据统计/ledger. - Positioning Filter: Refer to
个人定位.md; general topics that deviate from positioning but have high traffic potential are not downgraded (traffic priority principle). - Washed Comparison (Hard Gate): Cloud output from sources 1 & 2 must pass through the ledger before filtering—pipe the command output to
| python3 automation/scripts/wash_ledger.py filter(e.g.,bash automation/scripts/hot_monitor_local_job.sh read booms | python3 automation/scripts/wash_ledger.py filter). Entries markedwashed: trueare retained for display but must carry a "已洗 → " tag and must not be recommended as new topics. Entries withwashed_match.status=skippedare labeled "曾定不做" (previously decided not to do);washed_suspectis labeled "疑似已洗" (suspected washed). When reporting candidates, state how many items in this batch were washed, skipped, or suspected.
Each candidate format: Topic one-liner | Evidence (source hit + R/M or benchmark new work data) | Timeliness window | Suggested format (practical long-form/AI production/voiceover/image-text/article) | Angle prediction
User selects → Create card: For cloud candidates, take platform/post_id from the filtered JSON, construct a standard link by platform, write into 来源: (douyin→https://www.douyin.com/video/<post_id>, xhs→https://www.xiaohongshu.com/explore/<post_id>, youtube→https://www.youtube.com/watch?v=<post_id>), and also fill 源ID: (<platform>:<post_id>) → Initiate project by format. Route practical long-form to ra-实操策划. When registering the washed output in the ledger, include --work-id <cloud_work_id>.
When cloud reading fails, report it clearly. Do not fall back to deleted _爆款总库.jsonl / _账号池.md, nor pretend historical 深度分析/ is real-time data.
Hard Rules
- Full Format Privacy Wall: The source link, source title, and source transcript are only allowed to appear in the topic card's
来源:field and视频工作台/.internal/; all drafts, handover drafts, and workspace entries must contain zero source information. The exception is when the user explicitly requests to annotate the source. - Washing Deduplication Ledger: The ledger is at
视频工作台/.internal/洗稿台账.jsonl(belongs to source privacy area), toolautomation/scripts/wash_ledger.py. Topic recommendation cloud reads must passfilter; before any format initiation & washing, must runcheck(if "已洗" is hit, hard stop and wait for user confirmation); after handover draft/final draft is produced, the washing end registers viaadd. Ledger content is only reported to the user within the conversation, never entering any final draft. - The user should never be asked to move files; this skill handles it and reports every move in the reply.
- Board registration division: Article completion is registered by this end; video/image-text delivery is registered by the production end (Codex).
- Initiated videos still follow a two-stage process: Default to only the awaiting-production queue; only when the user says "直接制作/直接出片/一条龙" (direct production) does it proceed to production.