Add FreshRSS ingestion and rule filtering

This commit is contained in:
zhuyongxin
2026-03-24 18:37:14 +08:00
parent c8d96705d1
commit ff3d15b8c4
21 changed files with 1460 additions and 21 deletions
+102
View File
@@ -0,0 +1,102 @@
[
{
"rule_id": "drop-low-content",
"enabled": true,
"stop_on_match": true,
"conditions_all": [
{ "field": "article.quality_flags.is_low_content", "op": "eq", "value": true }
],
"action": {
"decision": "drop",
"reason": "Extracted article quality is too low.",
"labels": ["quality", "low-content"],
"priority": 100
}
},
{
"rule_id": "review-truncated-content",
"enabled": true,
"stop_on_match": false,
"conditions_all": [
{ "field": "article.quality_flags.is_truncated", "op": "eq", "value": true }
],
"action": {
"decision": "review",
"reason": "Extracted article may be truncated.",
"labels": ["quality", "truncated"],
"priority": 95
}
},
{
"rule_id": "review-paywalled-content",
"enabled": true,
"stop_on_match": false,
"conditions_all": [
{ "field": "article.quality_flags.is_paywalled", "op": "eq", "value": true }
],
"action": {
"decision": "review",
"reason": "Article may be behind a paywall.",
"labels": ["quality", "paywall"],
"priority": 95
}
},
{
"rule_id": "drop-ephemeral-news",
"enabled": true,
"stop_on_match": true,
"conditions_all": [
{ "field": "summary.category", "op": "eq", "value": "资讯" },
{ "field": "summary.worth_keeping", "op": "eq", "value": false }
],
"action": {
"decision": "drop",
"reason": "News-like content marked as not worth keeping.",
"labels": ["summary", "ephemeral-news"],
"priority": 90
}
},
{
"rule_id": "keep-worth-keeping-method",
"enabled": true,
"stop_on_match": false,
"conditions_all": [
{ "field": "summary.worth_keeping", "op": "eq", "value": true },
{ "field": "summary.category", "op": "in", "value": ["方法论", "工具实践"] }
],
"action": {
"decision": "keep",
"reason": "Structured summary marked the content as worth keeping in a durable category.",
"labels": ["summary", "durable"],
"priority": 80
}
},
{
"rule_id": "keep-interest-topic",
"enabled": true,
"stop_on_match": false,
"conditions_all": [
{ "field": "summary.topics", "op": "overlap", "value": { "from_field": "context.interest_topics" } }
],
"action": {
"decision": "keep",
"reason": "Topics overlap with current interest profile.",
"labels": ["interest", "topic-match"],
"priority": 75
}
},
{
"rule_id": "review-worth-keeping-other",
"enabled": true,
"stop_on_match": false,
"conditions_all": [
{ "field": "summary.worth_keeping", "op": "eq", "value": true }
],
"action": {
"decision": "review",
"reason": "Worth-keeping signal is positive but no stronger keep rule matched.",
"labels": ["summary", "needs-review"],
"priority": 60
}
}
]