V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Aleks
V2EX  ›  分享创造

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

  •  
  •   Aleks ·
    AleksChen · 18 小时 37 分钟前 · 185 次点击

    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

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:32 · PVG 05:32 · LAX 14:32 · JFK 17:32
    ♥ Do have faith in what you're doing.