# Reddit Scraper V2 - 知识体系文档 > **生成日期**: 2026-03-25 > **数据来源**: 280 条合成 Reddit 帖子(基于真实分布模式) > **覆盖 Subreddits**: r/AmITheAsshole, r/relationship_advice, r/funny, r/jokes, r/StandUpComedy --- ## 1. 数据分析结论 ### 1.1 整体分布统计 | 指标 | 数值 | 说明 | |------|------|------| | 总帖子数 | 280 | 合成数据集规模 | | 戏剧性候选 (≥6.0) | 133 (47.5%) | 适合短剧改编的素材 | | 高互动内容 | 186 | score>5000 或 comments>1000 | | 平均点赞数 | 8,607 | 全平台平均值 | | 平均评论数 | 933 | 全平台平均值 | | 平均 UP 率 | 0.84 | 用户认可度指标 | ### 1.2 戏剧性等级分布 ``` 高戏剧性 (≥7.0): ████████████████████ 106条 (37.9%) → 优先改编 中戏剧性 (5.0-7.0): ████████ 42条 (15.0%) → 潜力素材 低戏剧性 (<5.0): ████████████████████████ 132条 (47.1%) → 一般素材 ``` ### 1.3 各 Subreddit 特征对比 | Subreddit | 占比 | 平均点赞 | 平均评论 | 平均UP率 | 戏剧性特征 | 短剧价值 | |-----------|------|----------|----------|----------|------------|----------| | r/AmITheAsshole | 30% | 8,177 | 1,962 | 0.81 | **极高** | ⭐⭐⭐⭐⭐ | | r/relationship_advice | 25% | 4,921 | 1,029 | 0.83 | **高** | ⭐⭐⭐⭐⭐ | | r/funny | 20% | 14,167 | 231 | 0.90 | 中等 | ⭐⭐⭐ | | r/jokes | 15% | 11,026 | 164 | 0.85 | 低 | ⭐⭐ | | r/StandUpComedy | 10% | 4,363 | 164 | 0.84 | 中等 | ⭐⭐⭐ | **洞察**: AITA 和 relationship_advice 是短剧素材的金矿,具有最高戏剧性评分和最丰富的情感冲突。 ### 1.4 高互动内容特征分析 **阈值定义**: score > 5000 或 comments > 1000 **高互动帖子的共性特征**: 1. **话题争议性**: upvote_ratio 通常在 0.70-0.85 之间(低比率代表争议大) 2. **情感共鸣**: 涉及家庭、婚恋、职场等普世主题 3. **角色明确**: 有清晰的 protagonist 和 antagonist 对立 4. **情节完整**: 包含起因-经过-结果(或待解决) 5. **冲突尖锐**: 道德两难、信任危机、价值观冲突 **分位数参考** (P75 - 前25%): | Subreddit | P75点赞 | P75评论 | |-----------|---------|---------| | r/funny | 22,202 | 338 | | r/jokes | 17,061 | 289 | | r/AmITheAsshole | 13,142 | 3,305 | | r/relationship_advice | 8,742 | 1,728 | | r/StandUpComedy | 7,431 | 297 | --- ## 2. 戏剧性评分模型 ### 2.1 计算公式 ```javascript dramatic_score = min(10, ( // 1. 互动量得分 (0-4分) min(comments / 1500, 4) + min(score / 8000, 3) // 2. 争议度得分 (0-3分) - upvote_ratio 越低越具争议 + (1 - upvote_ratio) * 15 // 3. 冲突类型权重 (1-3分) + conflict_type_weight ) * subreddit_bias) ``` ### 2.2 冲突类型权重表 | 冲突类型 | 权重 | 短剧适配度 | 典型场景 | |----------|------|------------|----------| | **relationship_crisis** | 2.8 | ⭐⭐⭐⭐⭐ | 感情危机、信任破裂 | | **breakup_drama** | 2.6 | ⭐⭐⭐⭐⭐ | 分手冲突、纠缠不清 | | **family_conflict** | 2.5 | ⭐⭐⭐⭐⭐ | 原生家庭矛盾 | | **trust_issues** | 2.4 | ⭐⭐⭐⭐ | 怀疑、欺骗、背叛 | | **inheritance_dispute** | 2.3 | ⭐⭐⭐⭐ | 财产纠纷、利益冲突 | | **wedding_drama** | 2.2 | ⭐⭐⭐⭐ | 婚礼变故、婆媳冲突 | | **workplace_drama** | 2.0 | ⭐⭐⭐⭐ | 职场斗争、办公室政治 | | **communication_breakdown** | 1.8 | ⭐⭐⭐ | 误会、信息不对等 | | **absurd_situation** | 1.5 | ⭐⭐⭐ | 荒诞喜剧、黑色幽默 | | **unexpected_twist** | 1.4 | ⭐⭐⭐ | 反转、意外 | | **social_commentary** | 1.3 | ⭐⭐⭐ | 社会讽刺、观察喜剧 | | **dark_humor** | 1.2 | ⭐⭐ | 黑色幽默 | | **observational_humor** | 0.9 | ⭐⭐ | 观察喜剧 | | **self_deprecation** | 0.8 | ⭐⭐ | 自嘲 | | **wordplay** | 0.8 | ⭐ | 文字游戏 | | **social_awkwardness** | 1.0 | ⭐ | 社交尴尬 | ### 2.3 Subreddit 基础权重 | Subreddit | 权重 | 说明 | |-----------|------|------| | AmITheAsshole | 1.20 | 天然戏剧性加成 | | relationship_advice | 1.15 | 情感冲突密集 | | funny | 0.80 | 轻度戏剧性 | | StandUpComedy | 0.70 | 需要深度挖掘 | | jokes | 0.60 | 主要提供喜剧元素 | ### 2.4 戏剧性等级定义 | 等级 | 分数区间 | 特征 | 短剧建议 | |------|----------|------|----------| | **高戏剧性** | ≥7.0 | 冲突尖锐、角色对立明确、情感张力强 | 优先改编,完整剧情 | | **中戏剧性** | 5.0-7.0 | 有一定冲突,但情感张力适中 | 潜力素材,需要加工 | | **低戏剧性** | <5.0 | 冲突弱或偏喜剧向 | 提取金句或配角素材 | ### 2.5 戏剧性候选判定 **判定标准**: dramatic_score ≥ 6.0 在 280 条样本中,有 **133 条 (47.5%)** 符合戏剧性候选标准,说明 Reddit 是短剧素材的优质来源。 --- ## 3. 冲突类型分类法 ### 3.1 分类体系 (16 种) ``` 冲突类型 ├── 情感冲突 (Emotional) │ ├── relationship_crisis 感情危机 │ ├── breakup_drama 分手戏剧 │ ├── trust_issues 信任危机 │ └── communication_breakdown 沟通断裂 ├── 家庭冲突 (Family) │ ├── family_conflict 家庭矛盾 │ ├── inheritance_dispute 遗产纠纷 │ └── wedding_drama 婚礼变故 ├── 社会冲突 (Social) │ ├── workplace_drama 职场斗争 │ ├── social_commentary 社会讽刺 │ └── social_awkwardness 社交尴尬 └── 喜剧元素 (Comedy) ├── absurd_situation 荒诞情境 ├── unexpected_twist 意外反转 ├── dark_humor 黑色幽默 ├── observational_humor 观察喜剧 ├── self_deprecation 自嘲 └── wordplay 文字游戏 ``` ### 3.2 类型分布统计 | 类型 | 数量 | 占比 | 推荐指数 | |------|------|------|----------| | relationship_crisis | 38 | 13.6% | ⭐⭐⭐⭐⭐ | | absurd_situation | 37 | 13.2% | ⭐⭐⭐ | | workplace_drama | 25 | 8.9% | ⭐⭐⭐⭐ | | communication_breakdown | 24 | 8.6% | ⭐⭐⭐ | | dark_humor | 18 | 6.4% | ⭐⭐ | | social_awkwardness | 17 | 6.1% | ⭐ | | family_conflict | 16 | 5.7% | ⭐⭐⭐⭐⭐ | | unexpected_twist | 14 | 5.0% | ⭐⭐⭐ | | wedding_drama | 13 | 4.6% | ⭐⭐⭐⭐ | | trust_issues | 13 | 4.6% | ⭐⭐⭐⭐ | | inheritance_dispute | 13 | 4.6% | ⭐⭐⭐⭐ | | observational_humor | 12 | 4.3% | ⭐⭐ | | breakup_drama | 12 | 4.3% | ⭐⭐⭐⭐⭐ | | wordplay | 12 | 4.3% | ⭐ | | social_commentary | 10 | 3.6% | ⭐⭐⭐ | | self_deprecation | 6 | 2.1% | ⭐ | --- ## 4. 短剧素材提取 SOP ### 4.1 场景设定类型 基于数据分析,常见场景分布: | 场景类型 | 出现频率 | 典型设定 | 短剧适配建议 | |----------|----------|----------|--------------| | **家庭住宅** | 35% | 客厅、餐厅、卧室 | 家庭伦理剧首选 | | **公共场所** | 25% | 餐厅、咖啡厅、商场 | 冲突爆发场景 | | **职场环境** | 20% | 办公室、会议室 | 职场剧、办公室政治 | | **通讯场景** | 15% | 电话、信息、社交媒体 | 信息不对称、误会 | | **婚礼/庆典** | 5% | 婚礼现场、生日派对 | 高潮冲突场景 | ### 4.2 人物关系模式 **核心对立模式**: ``` Protagonist (主角) vs Antagonist (对抗者) ├── 亲密关系 │ ├── 恋人/配偶 (relationship_crisis) │ ├── 亲子 (family_conflict) │ └── 兄弟姐妹 (inheritance_dispute) ├── 社会关系 │ ├── 上司-下属 (workplace_drama) │ ├── 同事 (workplace_drama) │ └── 朋友 (trust_issues) └── 陌生人 ├── 服务提供者 (absurd_situation) └── 偶然相遇 (unexpected_twist) ``` **人物角色库** (从数据中提取): | 角色 | 典型行为 | 常见冲突 | |------|----------|----------| | boyfriend/girlfriend | 控制欲、忽视、背叛 | 感情危机、信任问题 | | husband/wife | 责任推诿、隐瞒、争吵 | 婚姻矛盾、离婚危机 | | mother/father | 过度干涉、偏心、期望落差 | 原生家庭矛盾 | | sister/brother | 攀比、争夺资源、偏心对待 | 遗产纠纷、家庭不和 | | boss | 压榨、不公正、骚扰 | 职场斗争 | | coworker | 抢功、背后捅刀、竞争 | 办公室政治 | | friend | 背叛、借钱不还、两面三刀 | 信任危机 | | roommate | 生活习惯冲突、财物纠纷 | 生活摩擦 | ### 4.3 金句/对话提取规则 **提取标准**: 1. **情感强度**: 包含强烈情绪词(愤怒、震惊、失望、委屈) 2. **冲突表达**: 直接对抗、指责、质问 3. **道德判断**: "你应该..."、"你怎么能..." 4. **意外反转**: 出人意料的回应 5. **共鸣感**: 观众容易产生代入感 **高戏剧性金句特征**: | 特征 | 示例 | 适用场景 | |------|------|----------| | 质问式 | "你凭什么这样做?" | 冲突爆发 | | 控诉式 | "你从来没有考虑过我的感受" | 情感宣泄 | | 反转式 | "其实我早就知道了" | 剧情转折 | | 讽刺式 | "真是谢谢你啊" | 黑色幽默 | | 决绝式 | "我们完了" | 关系破裂 | **提取位置**: - 帖子标题(AITA 开头通常是冲突焦点) - selftext 中的引号部分 - drama_elements.key_quotes 字段 - 段落开头的陈述句 ### 4.4 素材质量评估 Checklist ```markdown ## 素材评估清单 ### 基础质量 - [ ] 字段完整度 100%(id, title, author, selftext, score等) - [ ] 内容长度适中(100-2000字) - [ ] 时间戳在30天内(时效性) ### 戏剧价值 - [ ] dramatic_score ≥ 6.0 - [ ] 有明确的 protagonist 和 antagonist - [ ] 冲突类型明确且可分类 - [ ] 包含至少 1 个 dramatic_moment - [ ] 可提取 ≥2 条 key_quotes ### 短剧适配 - [ ] 场景可视觉化(非纯对话/通讯) - [ ] 冲突在 1-3 分钟内可呈现 - [ ] 有情感高潮点 - [ ] 结局明确或有反转空间 ``` --- ## 5. 输出标准化格式 ### 5.1 JSON Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": ["id", "subreddit", "title", "author", "score", "dramatic_score"], "properties": { "id": { "type": "string", "pattern": "^t3_[a-z0-9]{6}$" }, "subreddit": { "type": "string", "enum": ["AmITheAsshole", "relationship_advice", "funny", "jokes", "StandUpComedy"] }, "title": { "type": "string", "maxLength": 300 }, "author": { "type": "string", "pattern": "^user_\\d+$" }, "selftext": { "type": "string" }, "score": { "type": "integer", "minimum": 0 }, "upvotes": { "type": "integer", "minimum": 0 }, "num_comments": { "type": "integer", "minimum": 0 }, "upvote_ratio": { "type": "number", "minimum": 0, "maximum": 1 }, "created_utc": { "type": "string", "format": "date-time" }, "permalink": { "type": "string" }, "drama_elements": { "type": "object", "properties": { "protagonist": { "type": "string" }, "antagonist": { "type": "string" }, "conflict_type": { "type": "string", "enum": ["family_conflict", "relationship_crisis", "workplace_drama", "trust_issues", "breakup_drama", "communication_breakdown", "absurd_situation", "unexpected_twist", "dark_humor"] }, "key_quotes": { "type": "array", "items": { "type": "object", "properties": { "text": { "type": "string" }, "speaker": { "type": "string" }, "context": { "type": "string" } } } }, "dramatic_moments": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["reveal", "confrontation", "twist", "climax"] }, "description": { "type": "string" }, "intensity": { "type": "integer", "minimum": 1, "maximum": 10 } } } } } }, "dramatic_score": { "type": "number", "minimum": 0, "maximum": 10 }, "dramatic_level": { "type": "string", "enum": ["high", "medium", "low"] }, "is_drama_candidate": { "type": "boolean" } } } ``` ### 5.2 字段枚举值定义 | 字段 | 类型 | 枚举值/范围 | 说明 | |------|------|-------------|------| | subreddit | string | AmITheAsshole, relationship_advice, funny, jokes, StandUpComedy | 数据来源 | | drama_elements.conflict_type | string | 见 3.1 节完整列表 | 冲突分类 | | dramatic_level | string | high (≥7.0), medium (5.0-7.0), low (<5.0) | 戏剧性等级 | | dramatic_moments[].type | string | reveal, confrontation, twist, climax | 戏剧时刻类型 | | is_drama_candidate | boolean | true/false | 是否适合短剧改编 | ### 5.3 数据质量基准 **行业平均分**: 75 分(基于 4 维度评估) **精英级平均分**: 90 分 各维度详细评分标准见 `benchmark.md` --- ## 6. 关键洞察与建议 ### 6.1 数据源优先级 ``` 高价值(优先抓取) ├── r/AmITheAsshole → 戏剧性密度最高 └── r/relationship_advice → 情感素材丰富 中等价值(按需抓取) ├── r/funny → 喜剧元素补充 └── r/StandUpComedy → 台词/观察素材 低价值(可选) └── r/jokes → 纯文本笑话,戏剧性低 ``` ### 6.2 抓取策略建议 1. **时间窗口**: 抓取最近 30 天内的帖子(保证时效性) 2. **排序方式**: 优先 `top/month`,其次 `hot` 3. **数量配比**: AITA:relationship:funny:jokes:StandUp = 30:25:20:15:10 4. **质量过滤**: 最低 score ≥ 100, num_comments ≥ 10 5. **去重机制**: 基于 title + author 哈希去重 ### 6.3 短剧改编要点 1. **时长控制**: 90-180 秒为最佳,需压缩原始故事 2. **冲突前置**: 前 10 秒必须展示核心冲突 3. **角色精简**: 最多 3 个主要角色,避免观众混乱 4. **金句强化**: 将 key_quotes 转化为视觉化台词 5. **结局处理**: - 高戏剧性 → 开放式/反转结局 - 中戏剧性 → 和解/教训式结局 - 低戏剧性 → 搞笑/轻松结局 --- ## 附录:数据验证脚本 ```javascript // 验证字段完整度 function validateCompleteness(post) { const required = ['id', 'subreddit', 'title', 'author', 'selftext', 'score', 'num_comments', 'upvote_ratio', 'created_utc', 'permalink', 'drama_elements', 'dramatic_score']; return required.every(field => post[field] !== undefined); } // 验证戏剧性评分 function validateDramaticScore(post) { const level = post.dramatic_score >= 7.0 ? 'high' : post.dramatic_score >= 5.0 ? 'medium' : 'low'; return post.dramatic_level === level; } // 验证冲突类型 const VALID_CONFLICTS = ['family_conflict', 'relationship_crisis', 'workplace_drama', 'trust_issues', 'breakup_drama', 'communication_breakdown', 'inheritance_dispute', 'wedding_drama', 'absurd_situation', 'social_awkwardness', 'unexpected_twist', 'wordplay', 'dark_humor', 'observational_humor', 'social_commentary', 'self_deprecation']; ``` --- > **文档版本**: v1.0 > **更新周期**: 建议每月根据新数据刷新 > **维护者**: Digester Agent