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

20 小时 3 分钟前
 Aleks

Submission Site Discovery

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

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


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

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

为什么要做这个仓库

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

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

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

当前能力边界

目前仓库已经实现的主路径,主要围绕 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 这样的复杂来源,通常还需要更强的能力支持,例如:

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

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

运行依赖

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

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

pip install certifi

一个必须知道的运行前提

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

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

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

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

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

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

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

仓库结构

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

几个关键字段如下:

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

例如:

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

已知限制

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

路线图

短期计划

中期计划

长期计划

关于 Seele

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

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

开源协议

MIT

194 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1203943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX