{ "_meta": { "version": "1.0.0", "created_at": "2026-03-25", "agent": "hunter", "task_id": "T-mn5uz39y", "description": "Reddit内容抓取配置 - 短剧素材采集" }, "api": { "type": "json_endpoint", "base_url": "https://www.reddit.com", "rate_limit": { "requests_per_minute": 30, "burst_allowance": 5, "retry_after": 2 }, "headers": { "User-Agent": "DramaScraper/1.0 (Research Purpose)" }, "timeout": 30, "max_retries": 3 }, "target_subreddits": [ { "name": "AmITheAsshole", "alias": "aita", "priority": 1, "category": "drama", "description": "道德困境与人际冲突,最佳短剧素材来源", "scraping": { "sorts": ["top", "controversial", "hot"], "time_periods": ["all", "year", "month"], "posts_per_run": 500, "min_score": 1000, "min_comments": 200 } }, { "name": "relationship_advice", "alias": "ra", "priority": 2, "category": "drama", "description": "恋爱关系与情感问题", "scraping": { "sorts": ["top", "hot"], "time_periods": ["month", "year", "all"], "posts_per_run": 300, "min_score": 500, "min_comments": 150 } }, { "name": "funny", "alias": "funny", "priority": 3, "category": "comedy", "description": "轻松幽默内容,用于喜剧短剧", "scraping": { "sorts": ["top", "hot"], "time_periods": ["month", "year"], "posts_per_run": 200, "min_score": 2000, "min_comments": 50 } } ], "url_templates": { "json_posts": "https://www.reddit.com/r/{subreddit}/{sort}.json", "json_posts_with_time": "https://www.reddit.com/r/{subreddit}/{sort}.json?t={time}&limit={limit}", "json_comments": "https://www.reddit.com/r/{subreddit}/comments/{post_id}.json", "json_comments_limited": "https://www.reddit.com/r/{subreddit}/comments/{post_id}.json?limit={limit}&depth={depth}", "old_reddit_post": "https://old.reddit.com{permalink}", "old_reddit_comments": "https://old.reddit.com/r/{subreddit}/comments/{post_id}/?limit=500", "web_post": "https://www.reddit.com{permalink}", "top_all_time": "https://www.reddit.com/r/{subreddit}/top.json?t=all&limit=100", "top_year": "https://www.reddit.com/r/{subreddit}/top.json?t=year&limit=100", "top_month": "https://www.reddit.com/r/{subreddit}/top.json?t=month&limit=100", "top_week": "https://www.reddit.com/r/{subreddit}/top.json?t=week&limit=100", "controversial_all": "https://www.reddit.com/r/{subreddit}/controversial.json?t=all&limit=100", "controversial_month": "https://www.reddit.com/r/{subreddit}/controversial.json?t=month&limit=100", "rising": "https://www.reddit.com/r/{subreddit}/rising.json?limit=100", "hot": "https://www.reddit.com/r/{subreddit}/hot.json?limit=100" }, "field_mapping": { "post": { "id": { "source": "id", "type": "string", "required": true, "transform": "prefix_t3" }, "title": { "source": "title", "type": "string", "required": true, "max_length": 300 }, "author": { "source": "author", "type": "string", "required": true, "filter": "remove_deleted" }, "created_utc": { "source": "created_utc", "type": "integer", "required": true, "transform": "to_iso8601" }, "url": { "source": "url", "type": "string", "required": false }, "permalink": { "source": "permalink", "type": "string", "required": true, "transform": "make_absolute" }, "selftext": { "source": "selftext", "type": "string", "required": false, "default": "", "transform": "normalize_whitespace" }, "score": { "source": "score", "type": "integer", "required": true }, "ups": { "source": "ups", "type": "integer", "required": false }, "downs": { "source": "downs", "type": "integer", "required": false }, "upvote_ratio": { "source": "upvote_ratio", "type": "float", "required": true, "range": [0, 1] }, "num_comments": { "source": "num_comments", "type": "integer", "required": true, "alias": "comment_count" }, "is_original_content": { "source": "is_original_content", "type": "boolean", "required": false, "default": false }, "link_flair_text": { "source": "link_flair_text", "type": "string", "required": false, "alias": "flair" }, "edited": { "source": "edited", "type": "boolean_or_int", "required": false, "transform": "to_boolean" }, "total_awards_received": { "source": "total_awards_received", "type": "integer", "required": false, "default": 0, "alias": "awards" }, "num_crossposts": { "source": "num_crossposts", "type": "integer", "required": false, "default": 0, "alias": "crosspost_count" }, "over_18": { "source": "over_18", "type": "boolean", "required": false, "default": false, "filter": "exclude_if_true" } }, "comment": { "id": { "source": "id", "type": "string", "required": true }, "author": { "source": "author", "type": "string", "required": true }, "body": { "source": "body", "type": "string", "required": true }, "created_utc": { "source": "created_utc", "type": "integer", "required": true }, "score": { "source": "score", "type": "integer", "required": true }, "is_submitter": { "source": "is_submitter", "type": "boolean", "required": false }, "parent_id": { "source": "parent_id", "type": "string", "required": true }, "depth": { "source": "depth", "type": "integer", "required": false } } }, "filter_rules": { "engagement_tiers": { "elite": { "min_score": 10000, "min_comments": 2000, "min_upvote_ratio": 0.70 }, "high": { "min_score": 5000, "min_comments": 1000, "min_upvote_ratio": 0.70 }, "good": { "min_score": 1000, "min_comments": 500, "min_upvote_ratio": 0.65 }, "rising": { "min_score": 100, "min_comments": 50, "growth_rate": 2.0 } }, "content_quality": { "min_word_count": 100, "max_word_count": 5000, "remove_deleted": true, "remove_removed": true, "remove_auto_moderator": true, "require_selftext": true }, "controversy": { "ratio_range": [0.30, 0.70], "comment_engagement_threshold": 500 }, "exclusion": { "flair_blacklist": ["Shitpost", "Meta", "Not AITA"], "title_patterns": [ "^\\[META\\]", "^Update:.*\\[removed\\]", "^AITA for breathing" ], "author_blacklist": ["AutoModerator", "[deleted]"] } }, "drama_keywords": { "conflict_triggers": [ "aita", "asshole", "wrong", "fault", "blame", "cheated", "betrayed", "lied", "secret", "divorce", "breakup", "dumped", "ghosted", "kicked out", "cut off", "disowned", "inheritance", "will", "money", "debt", "wedding", "bridezilla", "groomzilla", "pregnant", "baby", "abortion", "custody", "fired", "quit", "boss", "coworker" ], "emotional_intensity": [ "furious", "devastated", "heartbroken", "livid", "panic", "anxiety", "depression", "trauma", "suicidal", "therapy", "counseling", "cried", "screaming", "yelling", "fight", "shaking", "nauseous", "couldn't sleep", "worst day", "ruined", "destroyed" ], "relationship_types": [ "boyfriend", "girlfriend", "husband", "wife", "fiancé", "fiancée", "ex", "ex-boyfriend", "ex-girlfriend", "mother-in-law", "father-in-law", "mil", "fil", "stepmom", "stepdad", "stepmother", "stepfather", "sibling", "sister", "brother", "twin", "best friend", "roommate", "coworker", "colleague", "boss", "manager", "landlord", "neighbor" ], "drama_markers": [ "update", "plot twist", "turns out", "found out", "caught", "evidence", "proof", "messages", "texts", "dna test", "paternity", "surprise", "unexpected", "called the police", "lawyer", "sue", "legal" ], "aita_judgments": [ "nta", "yta", "esh", "nah", "info", "not the asshole", "you're the asshole", "everyone sucks here", "no assholes here" ], "scene_settings": [ "wedding", "funeral", "christmas", "thanksgiving", "birthday", "party", "dinner", "restaurant", "hospital", "doctor", "emergency room", "work", "office", "meeting", "home", "apartment", "house", "room", "car", "driving", "parking" ] }, "scoring": { "drama_score": { "weights": { "controversy": 0.25, "engagement": 0.20, "keyword_matches": 0.30, "update_bonus": 0.15, "length_optimal": 0.10 }, "thresholds": { "excellent": 80, "good": 60, "average": 40, "poor": 20 } }, "controversy": { "ideal_ratio": 0.50, "tolerance": 0.20 }, "engagement": { "max_comments_reference": 2000, "comment_weight": 1.5 } }, "output_schema": { "metadata": { "required_fields": [ "source", "subreddit", "scraped_at", "scraper_version" ] }, "post": { "required_fields": [ "id", "title", "author", "created_utc", "permalink", "score", "upvote_ratio", "num_comments" ], "optional_fields": [ "selftext", "url", "link_flair_text", "is_original_content", "edited", "awards" ] }, "analytics": { "calculated_fields": [ "drama_score", "controversy_score", "engagement_tier", "keyword_matches", "sentiment" ] }, "drama_elements": { "extracted_fields": [ "scene_setting", "characters", "conflict", "dialogue", "emotional_arc", "aita_specific" ] }, "adaptation_notes": { "generated_fields": [ "logline", "target_duration", "genre_tags", "production_difficulty", "similar_works" ] } }, "scheduling": { "runs": [ { "name": "elite_harvest", "description": "抓取历史高赞内容", "subreddits": ["AmITheAsshole", "relationship_advice"], "sort": "top", "time": "all", "frequency": "once", "target_posts": 1000 }, { "name": "trending_daily", "description": "每日趋势监控", "subreddits": ["AmITheAsshole", "relationship_advice", "funny"], "sort": "hot", "frequency": "0 9 * * *", "target_posts": 100 }, { "name": "controversy_weekly", "description": "每周争议内容", "subreddits": ["AmITheAsshole"], "sort": "controversial", "time": "week", "frequency": "0 10 * * 1", "target_posts": 50 } ] }, "storage": { "format": "jsonl", "compression": "gzip", "partitioning": { "by": "subreddit", "date_format": "%Y/%m/%d" }, "retention": { "raw_data_days": 30, "processed_data_days": 365 } }, "monitoring": { "metrics": [ "requests_made", "posts_collected", "errors_encountered", "rate_limit_hits", "avg_drama_score", "top_keywords" ], "alerting": { "error_rate_threshold": 0.1, "rate_limit_threshold": 5, "data_quality_threshold": 0.95 } } }