{"id":24342307,"url":"https://github.com/chainreactors/picker","last_synced_at":"2025-04-06T03:11:50.049Z","repository":{"id":63874008,"uuid":"568060190","full_name":"chainreactors/picker","owner":"chainreactors","description":"将repo变成RSS订阅,文章整理归档, 讨论的社区","archived":false,"fork":false,"pushed_at":"2024-10-24T06:15:36.000Z","size":14579,"stargazers_count":109,"open_issues_count":33,"forks_count":19,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-10-24T19:30:18.888Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chainreactors.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-19T10:24:12.000Z","updated_at":"2024-10-24T06:15:40.000Z","dependencies_parsed_at":"2024-05-01T03:30:13.302Z","dependency_job_id":"ef08177c-6d46-444b-b280-d71bb55212d6","html_url":"https://github.com/chainreactors/picker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainreactors%2Fpicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainreactors%2Fpicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainreactors%2Fpicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainreactors%2Fpicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chainreactors","download_url":"https://codeload.github.com/chainreactors/picker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247427012,"owners_count":20937214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-18T08:01:35.116Z","updated_at":"2025-04-06T03:11:50.032Z","avatar_url":"https://github.com/chainreactors.png","language":"Python","readme":"origin fork from https://github.com/VulnTotal-Team/yarb\n\n重构后脱离了github的fork, 原始仓库地址 https://github.com/chainreactors/picker , 需要后续更新请从该仓库获取\n# picker\n\n抓取, 推送, 讨论, 交流, 互动为一体, 将 github 的 repo 变为私人的讨论社区。\n\n支持导入 opml 文件，也可以订阅其他任何 RSS 源。\n\n## 使用\n\n基于 github action 实现的自动化推送系统\n\n目前有四个不同的推送信息类型\n\n- 每日信息流, 默认为每天早上 9 点 30 分推送昨天新增文章列表.\n- 每日精选, 默认为每天下午 1 点半推送昨日精选\n- 精选推送, 在每天生成的 issue 中, 点击 convert to issue 生成新的 issue 并推送到钉钉群\n- 精选文章的评论区推送, 当有人评论了改文章, 自动推送到钉钉\n\n### 信息流\n\n每日会在 issue 中生成昨日信息流\n\n![img.png](img/信息流.png)\n\n### 精选\n\n如果认为某篇文章质量较好, 值得其他人阅读可以点击 convert to issue 自动添加到精选文章列表.\n\n![img.png](img/精选.png)\n\n如果需要多人合作, 普通的 read 权限并没有 convert to issue 的功能, 需要 triage 权限\n\n![img.png](img/权限.png)\n\n或手动 new issue, 也会自动添加到 issue 中\n\n![img.png](img/手动添加.png)\n\n每天下午 13:30, 会将昨日的精选汇总进行一次推送.\n\n### 标签\n\n每日信息流会自动添加标签 daily, 每日精选会自动添加标签 dailypick. 精选文章会添加标签 pick.\n\n一些文章的细分领域可以通过手动添加不同的标签进行管理.\n\n![img.png](img/标签.png)\n\n已经给主要用户都添加了写权限, 可以自行创建标签.\n\n### 评论\n\n对精选文章的评论将会自动推送到钉钉群\n\n### 订阅源\n\n推荐订阅源：\n\n- [CustomRSS](rss/CustomRSS.opml)\n\n其他订阅源：\n\n- [CyberSecurityRSS](https://github.com/zer0yu/CyberSecurityRSS)\n- [Chinese-Security-RSS](https://github.com/zhengjim/Chinese-Security-RSS)\n- [awesome-security-feed](https://github.com/mrtouch93/awesome-security-feed)\n- [SecurityRSS](https://github.com/Han0nly/SecurityRSS)\n- [安全技术公众号](https://github.com/ttttmr/wechat2rss)\n- [SecWiki 安全聚合](https://www.sec-wiki.com/opml/index)\n- [Hacking8 安全信息流](https://i.hacking8.com/)\n\n非安全订阅源：\n\n- [中文独立博客列表](https://github.com/timqian/chinese-independent-blogs)\n\n**添加自定义订阅源**\n\n1. 在 `config.json` 中添加本地或远程仓库：\n\n```yaml\nrss:\n  CustomRSS:\n    enabled: true\n    filename: CustomRSS.opml\n  CyberSecurityRSS:\n    enabled: true\n    url: \u003e-\n      https://raw.githubusercontent.com/zer0yu/CyberSecurityRSS/master/CyberSecurityRSS.opml\n    filename: CyberSecurityRSS.opml\n  CyberSecurityRSS-tiny:\n    enabled: false\n    url: \"https://raw.githubusercontent.com/zer0yu/CyberSecurityRSS/master/tiny.opml\"\n    filename: CyberSecurityRSS-tiny.opml\n  Chinese-Security-RSS:\n    enabled: true\n    url: \u003e-\n      https://raw.githubusercontent.com/zhengjim/Chinese-Security-RSS/master/Chinese-Security-RSS.opml\n    filename: Chinese-Security-RSS.opml\n  awesome-security-feed:\n    enabled: true\n    url: \u003e-\n      https://raw.githubusercontent.com/mrtouch93/awesome-security-feed/main/security_feeds.opml\n    filename: awesome-security-feed.opml\n  SecurityRSS:\n    enabled: true\n    url: \"https://github.com/Han0nly/SecurityRSS/blob/master/SecureRss.opml\"\n    filename: SecureRss.opml\n  wechatRSS:\n    enabled: true\n    url: \"https://wechat2rss.xlab.app/opml/sec.opml\"\n    filename: wechatRSS.opml\n  chinese-independent-blogs:\n    enabled: false\n    url: \u003e-\n      https://raw.githubusercontent.com/timqian/chinese-independent-blogs/master/feed.opml\n    filename: chinese-independent-blogs.opml\n```\n\n2.\n\n自定义 rss 源位于`rss/CustomRSS.opml`中, 需要添加请提交 pr, 次日自动加入到推送列表\n\n非 rss 源可以使用 rsshub 转发\n\n## 部署\n\n推荐使用 github action 部署\n\n### github 部署\n\nstep1: fork 仓库\n\n因为 fork 可能自动关闭 issue, 并且导致 issue 指向原仓库, 所以建议脱离 fork 关系. 操作比较简单, clone 本仓库, 然后创建一个空项目, 将该仓库 push 即可.\n\nstep2: 手动添加 label\n\n**issue 需要通过标签管理, 所以需要先创建`pick`, `daily`与`dailypick`标签. 否则会报错**\n\nstep3: 创建 github token\n\n在 secret 中配置`MY_GITHUB_TOKEN`, 点击这里[生成](https://github.com/settings/tokens/new), 只需要给 repo 权限即可.\n\nstep4: 配置 bot 机器人\n\n当前只支持飞书,钉钉推送, 需要先[注册钉钉机器人](https://open.dingtalk.com/document/robots/custom-robot-access), 选择加签的方式.\n\n在 github secret 中配置\n\n- 钉钉机器人: `DINGTALK_KEY` , `DINGTALK_SECRET`, `PICKER_DINGTALK_KEY`, `PICKER_DINGTALK_SECRET`\n- 飞书机器人: `PICKER_FEISHU_KEY`, `FEISHU_KEY`\n\n可以配置两个不同的钉钉机器人, 也可以只配置一个, 如果只有一个所有消息均通过同一个机器人推送.\n\n其他的推送渠道请自行添加, 可以参考 yarb 与 picker 中的代码, 修改下 markdown 模板即可实现.\n\n### 本地搭建\n\n需要在本地安装 github-cli ,并登录. 不推荐使用, 仅在调试模式下测试用.\n\n```sh\n$ git clone https://github.com/chainreactors/picker\n$ cd picker \u0026\u0026 ./install.sh\n```\n\n编辑配置文件 `config.json`，启用所需的订阅源和机器人（key 也可以通过环境变量传入），最好启用代理。\n\n```sh\n$ ./picker.py --help\nusage: picker.py [-h] [--update] [--cron CRON] [--config CONFIG] [--test]\noptional arguments:\n  -h, --help       show this help message and exit\n  --update         Update RSS config file\n  --cron CRON      Execute scheduled tasks every day (eg:\"11:00\")\n  --config CONFIG  Use specified config file\n  --test           Test bot\n\n# 单次任务\n$ ./picker.py\n```\n","funding_links":[],"categories":["LLM分析过程"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainreactors%2Fpicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchainreactors%2Fpicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainreactors%2Fpicker/lists"}