FIT2CLOUD
AstraHub 星链 的图标

AstraHub 星链

3,333
1,464

将 Halo 站点接入AstraHub 星链网络,把站点加入面向独立博客生态的协作图谱,与全网博主形成可联动、可检索、可探索、可交换的关系网络。

AstraHub 星链插件

License: AGPL v3

将 Halo 站点接入AstraHub 星链网络,把站点加入面向独立博客生态的协作图谱,与全网博主形成可联动、可检索、可探索的关系网络,目前typecho、WordPress生态已可接入。

注意

用心看完:https://www.aobp.cn/archives/AstraHub
AstraHub地址:https://astra.aobp.cn/
群聊:

介绍

AstraHub 是一个面向独立博客生态的星链协作系统。它不是单纯的友链展示页,而是把博客之间原本分散、孤立的友链关系、节点身份和公开动态组织成一个可联动、可检索、可探索的博客关系网络。

在这个系统里,每一个接入的博客都不只是"挂一个名字"。系统会基于站点信息、友链数据、公开动态和图谱关系,把博客之间的连接结构组织起来,形成全博客的关系图谱。加入的人越多,这个生态的价值就越高。你可以看到谁和谁互相关联,谁拥有你感兴趣的友链资源,哪些博客处在同一个圈层,哪些节点之间存在高频连接。

它的价值不只在"换友链"。当接入节点逐渐增多之后,系统会持续放大博客之间的发现效率:你不仅能找到更多合适的友链对象,还能沿着节点关系、标签与星团结构,快速定位与你兴趣接近的博客与创作者圈层。

特色

  • 连接价值
    把原本分散的独立博客连接起来,形成真实可见的博客关系网络。你不再是一个孤岛,每一条友链都成为图谱中的一条边,被全网共同读取、共同放大。

  • 发现价值
    不再一个个博客手动寻找友链或圈层,而是直接从图谱、标签和节点关系中发现你想要的博客与创作者。沿着"朋友的朋友"快速触达更多与你气质相近的人。

  • 曝光价值
    当加入生态的人越来越多,每个博客都会获得更高的可见度,出现在更多关系链、动态流和检索结果中。

  • 交换友链新范式
    告别一个个跑到对方网站找入口、填表单、等回信的旧流程。在 AstraHub 里看到心仪的博客,直接发起友链申请,对方在自己后台一键审核通过,双向友链同步生效,整个换链过程不超过 1 分钟。

  • 关系图谱
    内置交互式星链图谱,把站点之间的友链与圈层关系可视化展现。一眼看清谁在你的圈层里、谁处在网络枢纽位置、哪些节点之间存在高频连接。

  • 圈层归属
    系统会根据站点信息、内容主题与标签,把博客自动归入对应星团(圈层)。同圈层的博主可以彼此可见、相互发现,比逛友链页一个个翻效率高出几个数量级。

  • 迁移无忧
    换服务器、换域名后,插件支持重新登舱恢复站点身份,原有的友链关系与圈层归属全部保留,博客搬家不会让你与圈友失联。

  • 主题嵌入
    附带前端组件 galaxy-link-widget,Halo 主题加一行引用即可在侧边栏或页脚展示圈友列表,不需要改动主题代码。

系统要求

  • Halo >= 2.23.0
  • Node.js >= 18(构建时)
  • Java >= 21(构建时)

安装

方式一:Halo 应用市场(推荐)

打开 Halo 控制台 → 插件 → 应用市场,搜索 AstraHub 星链 一键安装。

方式二:手动安装

  1. Releases 下载最新的 .jar 文件
  2. 在 Halo 控制台 → 插件 → 上传插件,选择刚下载的 jar 文件
  3. 启用插件

配置

启用插件后,在 设置 → 星链接入配置 中填写:

  • 尚未注册:点击接入星链,进行注册
  • 如已注册:站点搬家或换域名后,使用「重新登舱」恢复在网络中的身份
  • 站点名称 / 站点简介 / RSS 地址:登舱时会自动从 Halo 系统设置中拉取,也可手动覆盖

主题适配

AstraHub 星图库采用 REST API + WebSocket 的方式对外提供数据。 适配样式展示

插件状态探测

主题页面建议先请求状态接口,用于判断 AstraHub 插件是否已启用、星图库数据是否可用。

const statusRes = await fetch('/apis/anonymous.astrahub.halo.run/v1alpha1/star-gallery/-/status', {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

if (!statusRes.ok) {
  // 插件未安装、未启用,或接口不可用
}

const status = await statusRes.json();

if (!status.available) {
  // 插件已启用,但星图库数据尚不可用
}

返回示例:

{
  "available": true,
  "generatedAt": "2026-06-28T00:00:00Z",
  "relationCount": 64
}

获取星图库快照

状态可用后,请求完整快照接口。

const snapshotRes = await fetch('/apis/anonymous.astrahub.halo.run/v1alpha1/star-gallery/-/snapshot', {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

const snapshot = await snapshotRes.json();

快照主要字段:

  • snapshot.profile // 本站 / 本星系信息
  • snapshot.sectors // 星系联盟卡片
  • snapshot.posts // 星际资讯

星系成员分页

每个星系卡片会提供 planetsUrl,主题可以直接请求该地址获取星系成员。

const planetsRes = await fetch(`${sector.planetsUrl}?page=1&pageSize=24`, {
  method: 'GET',
  credentials: 'same-origin',
  headers: {
    Accept: 'application/json',
  },
});

const planets = await planetsRes.json();

返回示例:

{
  "items": [],
  "page": 1,
  "pageSize": 24,
  "total": 98,
  "hasMore": true
}

实时更新

主题可选接入 WebSocket。当 AstraHub 同步到新数据时,前台可以自动刷新星图库。

const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';

const ws = new WebSocket(
  `${protocol}//${location.host}/apis/anonymous.astrahub.halo.run/v1alpha1/astrahub/ws/star-gallery`
);

ws.addEventListener('message', (event) => {
  const snapshot = JSON.parse(event.data);
  // 使用新的 snapshot 重新渲染页面
});

星际资讯按钮建议

posts 中推荐按以下字段处理:

  • post.url // 文章类资讯的原文地址
  • post.siteUrl // 星球 / 站点地址
  • post.type // 资讯类型

推荐逻辑:

const isArticle = ['rss', 'article', 'post'].includes(
  String(post.type || '').toLowerCase()
);

if (isArticle && post.url) {
  // 显示:打开原文
  // 跳转:post.url
}

if (!isArticle && post.siteUrl) {
  // 显示:定位星球
  // 跳转:post.siteUrl
}

插件未启用提示

如果状态接口请求失败,主题可提示:

需要安装或启动 AstraHub 星链插件
请在 Halo 后台启用 AstraHub 星链插件,并同步星图库数据。

适配主题样式展示

星系资讯展示
泡泡模式展示
流川模式展示
画廊模式展示
星系联盟星系详情

开发

本地开发

# 拉取代码
git clone https://github.com/atangccc/Astrahub.git
cd Astrahub

# 安装前端依赖
./gradlew pnpmInstall

# 启动 Halo 开发环境(带插件热加载)
./gradlew haloServer

构建 JAR

./gradlew clean build -x test

构建产物位于 build/libs/PluginAstraHub-<version>.jar

许可

本项目采用 AGPL-3.0 许可证。

AGPL-3.0 是一个 copyleft 许可,使用本项目(包括通过网络服务对外提供功能)必须保持开源并使用相同协议。

联系与支持


讨论(0)

这是一个开源应用,我们推荐优先在开源仓库中提交 issue,以便开发者更好地接收和跟进问题。

去提交 issue