Submission Site Discovery: 一个用于发现产品提交通道与发布目录站点的轻量级探索工具 - V2EX
爱意满满的作品展示区。
Aleks

Submission Site Discovery: 一个用于发现产品提交通道与发布目录站点的轻量级探索工具

  •  
  •   Aleks
    AleksChen Apr 7 1034 views
    This topic created in 39 days ago, the information mentioned may be changed or developed.

    Submission Site Discovery

    一个用于发现产品提交通道与发布目录站点的轻量级探索工具。

    GitHub:https://github.com/SeeleAI/submission-site-discovery


    submission-site-discovery 主要面向 Product Hunt 、BetaList 、Uneed 这类“产品发布站 / 产品目录站”的发现工作。它的核心思路不是全网盲爬,而是从已知种子产品出发,沿着公开的 alternatives 页面向外扩展,提取真实外链站点,再把重复发现合并成一份更可信的候选提交站清单。

    这个仓库的定位非常明确:它是一个基于公开页面的轻量级发现实现,而不是一个“万能型站点图谱爬虫”。

    为什么要做这个仓库

    很多增长团队、独立开发者或产品营销团队,通常只知道少数几个头部平台,比如 Product Hunt 、BetaList ,但真正有价值的长尾提交站往往分散、零碎,而且很难系统化发现。

    这个仓库存在的意义,就是把“第一层发现工作”流程化、可复现化:

    • 从已知的种子产品或发布平台出发
    • 顺着公开的 alternatives 关系往外找
    • 提取真实的外部官网地址
    • 将多次重复发现合并,形成更可靠的候选名单

    需要强调的是,当前实现只覆盖“发现”阶段,不负责后续的提交路径验证,也不会自动帮你完成实际投稿。

    当前能力边界

    目前仓库已经实现的主路径,主要围绕 SaaSHub 风格的公开 alternatives 页面

    当前 crawler 的工作方式是:

    1. /<slug>-alternatives 页面开始抓取,例如 /product-hunt-alternatives
    2. 从产品卡片中提取真实外链,目标字段通常是 title="Visit Website"
    3. 通过递增 ?page=N 的方式继续翻页抓取
    4. 对 URL 做标准化处理,并合并来自不同种子的重复发现
    5. 输出结构化结果,例如 candidates.jsonlshortlist.csvreview_notes.md

    它不是什么

    这个仓库并不意味着“通用型拓扑爬取问题已经被解决”。

    AlternativeTo 这样的复杂来源,通常还需要更强的能力支持,例如:

    • 浏览器自动化或 Javascript 执行能力
    • 更复杂的分页和状态管理
    • 更强的反爬处理能力
    • 更完整的关系抽取与图谱遍历逻辑

    因此,这个项目更准确的理解方式应该是:

    一个围绕 SaaSHub 及相似公开 alternatives 页面构建的实用型发现工具, 而不是一个通用的 submission-site 谱引擎。

    运行依赖

    项目的直接依赖刻意保持在很轻的范围内:

    • Python 标准库:urllibsslrecsvjson
    • 可选依赖:certifi

    在部分 macOS 环境中,certifi 可以提升 SSL 兼容性。安装方式如下:

    pip install certifi 

    一个必须知道的运行前提

    除了显式依赖之外,这个项目还有一个很关键的“隐性运行前提”:它依赖 SaaSHub 当前公开页面的可访问行为。

    虽然 SaaSHub 走在 Cloudflare 后面,但目前它的公开 alternatives 页面看起来仍处于相对基础的防护模式:

    • 裸请求可能返回 403 Forbidden
    • 带标准 Chrome 风格 User-Agent 的普通 HTTP 请求,仍有机会返回 200 OK

    这意味着当前脚本之所以能工作,是因为这些页面的 HTML 还可以在当前防护级别下被直接获取。

    这并不等于“已经绕过 Cloudflare”,更不意味着这套方法对所有站点都成立。

    如果未来 SaaSHub 升级到更强的防护策略,例如:

    • JS Challenge
    • Turnstile
    • CAPTCHA

    那么当前实现就会失效,届时必须引入更强的兜底方案。

    需要明确的是,当前仓库 没有 依赖以下重型方案:

    • Playwright
    • Selenium
    • 代理池
    • 第三方解锁服务

    仓库结构

    submission-site-discovery/ ├─ README.md ├─ LICENSE ├─ .gitignore ├─ config/ │ └─ seeds.json ├─ demo/ │ └─ demo-products.txt └─ scripts/ └─ discover_submission_sites.py 

    快速开始

    单个产品

    python3 scripts/discover_submission_sites.py discover \ --config config/seeds.json \ --product "Product Hunt" \ --output-root outputs 

    批量产品列表

    python3 scripts/discover_submission_sites.py discover \ --config config/seeds.json \ --products-file demo/demo-products.txt \ --output-root outputs 

    其他常用命令

    # 校验配置文件 python3 scripts/discover_submission_sites.py validate --config config/seeds.json # 查看执行计划 python3 scripts/discover_submission_sites.py plan --config config/seeds.json --product "BetaList" # 仅初始化运行骨架 python3 scripts/discover_submission_sites.py init-run --config config/seeds.json --product "BetaList" 

    输出结果说明

    每次运行的产物都会写入:

    outputs/runs/<timestamp>/ 

    主要文件如下:

    文件 用途
    manifest.json 记录本次运行的元信息与整体状态
    seed_inputs.jsonl 标准化后的种子输入
    frontier.jsonl 各来源任务的执行记录
    candidates.jsonl 带证据链的完整候选站点数据
    shortlist.csv 简化后的候选短名单,便于人工筛选
    review_notes.md 本次运行总结、注意事项与抓取备注

    配置说明

    默认配置文件位于 config/seeds.json

    几个关键字段如下:

    • graph_sources 定义来源站点,目前包含 SaaSHub ,也预留了 AlternativeTo 等 scaffold 项
    • anchor_sites 定义已知的种子平台或基准样本
    • query_seeds 用于描述和限定发现方向的关键词短语
    • limits 定义抓取过程中的边界与保护阈值

    当种子名称默认生成的 slug 与 SaaSHub 实际路径不一致时,可以额外补充 saashub_slug 字段。

    例如:

    { "name": "Uneed", "saashub_slug": "uneed-best" } 

    已知限制

    当前版本有几条边界需要提前知道:

    • 目前实现主要针对公开可访问的 SaaSHub alternatives 页面
    • AlternativeTo 目前仍属于图谱来源脚手架,不是完整适配器
    • 实时请求是否成功,仍会受到 Cloudflare 策略变化影响
    • 仓库当前只能发现候选站点,不能验证真实投稿入口,也不会自动投稿

    路线图

    短期计划

    • 当 SaaSHub 防护收紧时,提供更早失败、更易诊断的错误提示
    • 补强对边缘卡片布局的解析覆盖
    • 优化评分与证据聚合逻辑

    中期计划

    • 在静态 HTML 仍可访问的前提下,增加更多来源适配器
    • 将“来源可靠性评分”和“候选站点评分”拆开
    • 强化输出摘要,降低人工复核成本

    长期计划

    • 通过浏览器辅助或混合式抓取,支持更复杂的拓扑发现
    • 将投稿路径验证拆成独立下游工作流
    • 把 discovery 结果进一步沉淀为可复用的 submission 操作能力

    关于 Seele

    该仓库由 SeeleAI 发布,是其开源产品增长工具链的一部分。

    Seele 正在构建 Seele01 Game Model,目前产品能力主要聚焦于通过自然语言生成 Three.js 与 Unity 游戏,相关 API 与工作流能力也会逐步对外开放。

    开源协议

    MIT

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     906 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 22:26 PVG 06:26 LAX 15:26 JFK 18:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86