“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
你需要一个Webring:复古网络社区的现代复兴指南
通过构建环形链接列表,让个人网站之间形成有机互联,重拾早期互联网的社区精神。
什么是Webring?
Webring(网络环)本质上是一个循环链表结构的网站集合。每个参与站点都包含指向环中前一个和后一个站点的链接,形成一个闭环。这个概念起源于1990年代互联网早期,当时搜索引擎还不完善,人们通过这种方式发现志同道合的网站。
核心特征
- 主题驱动:环内站点通常围绕特定主题(爱好、专业、兴趣等)
- 社区自治:无需中心化平台,完全由参与者自行维护
- 有机增长:新成员通过现有成员的链接加入,形成自然传播
为什么现在需要Webring?
在2026年的今天,互联网已被少数几个超级平台垄断。个人网站虽然越来越多,但往往成为信息孤岛。Webring能带来:
- 发现机制:绕过算法推荐,通过人工选择的链接发现优质内容
- 社区归属:与志同道合的人建立直接连接,而非通过平台中介
- 技术趣味:实现和维护Webring本身就是一种有趣的编程练习
- 反脆弱性:不依赖单一服务器或平台,每个站点都是环的节点
实现方案
方案一:手动环(零代码)
最简单的方式:让环内成员互相在网站上放置链接。假设有A、B、C三个站点:
- A站链接到B站
- B站链接到C站
- C站链接回A站
优点:无需任何后端,纯静态即可
缺点:成员变更时需要手动通知所有人更新链接
方案二:自动化环(Cloudflare Worker实现)
使用一个中心化的Web服务管理成员列表,提供导航接口。作者推荐使用Cloudflare Worker(免费层足够)。
技术架构
typescript
import ring from './ring.json';
const { members } = ring;
export default {
async fetch(request, env, ctx): Promise {
const pathname = new URL(request.url).pathname;
// 获取来源站点
const referrer = new URL(request.url).searchParams.get('from')
|| request.headers.get('referer')
|| request.headers.get('referrer')
|| '';
const currentMember = members.find(member => member.url === referrer);
if (!currentMember) {
return new Response('Member not found', { status: 404 });
}
switch (pathname) {
case '/':
return new Response('Zadu');
case '/next':
const nextMember = members[
(members.indexOf(currentMember) + 1) % members.length
];
return Response.redirect(nextMember.url, 302);
case '/prev':
const prevMember = members[
(members.indexOf(currentMember) - 1 + members.length) % members.length
];
return Response.redirect(prevMember.url, 302);
case '/random':
const randomMember = members[
Math.floor(Math.random() * members.length)
];
return Response.redirect(randomMember.url, 302);
default:
return new Response('Not Found', { status: 404 });
}
},
} satisfies ExportedHandler;
关键设计要点
- 成员识别:通过HTTP Referer头识别来源站点,因此访问者必须从环内某个站点的链接跳转过来
- 循环导航:使用取模运算实现环形结构,最后一个成员的下一个是第一个
- 随机跳转:增加
/random路由,提供发现新站点的乐趣 - JSON数据源:成员信息存储在
ring.json中,结构示例:
{
"members": [
{"url": "https://site-a.com", "name": "Site A"},
{"url": "https://site-b.com", "name": "Site B"}
]
}
部署步骤
- 在Cloudflare Dashboard创建Worker
- 将上述代码粘贴到
worker.ts(或使用wrangler CLI) - 创建
ring.json并上传(可通过Wrangler的--compatibility-date参数配置) - 每个环内站点在页面中放置指向Worker的导航链接:
<a href="https://your-worker.workers.dev/prev?from=YOUR_SITE_URL">Previous</a><a href="https://your-worker.workers.dev/next?from=YOUR_SITE_URL">Next</a><a href="https://your-worker.workers.dev/random">Random</a>
进阶玩法
1. 主题分类
可以为每个成员添加tags字段,实现按主题筛选:
{
"members": [
{"url": "...", "tags": ["programming", "linux"]}
]
}
然后添加/tag/programming路由返回该标签下的成员列表。
2. 统计功能
记录每个成员的点击次数,生成热力图:
typescript
// 使用Cloudflare KV存储
const count = await env.KV.get(click:${currentMember.url});
await env.KV.put(click:${currentMember.url}, (parseInt(count) + 1).toString());
3. 动态加入
实现一个加入表单,自动验证新站点是否已包含环内链接,通过后自动加入JSON列表。
历史背景
Webring的黄金时代是1995-2000年,当时有WebRing.com等托管服务。随着Google崛起和社交网络兴起,Webring逐渐消亡。但近年来,随着个人网站运动(IndieWeb)复兴,Webring重新获得关注。
与RSS的关系
Webring和RSS是互补的:RSS解决内容订阅问题,Webring解决站点发现问题。两者结合可以构建完整的个人网站生态。
实践建议
- 从小开始:先找3-5个朋友建立小环
- 明确主题:环的主题越具体越好(如“用Rust写编译器的个人博客”)
- 保持活跃:定期检查成员链接是否有效
- 装饰UI:在网站上添加一个复古风格的Webring小部件,增加视觉效果
完整源码
作者的完整实现可在GitHub找到(原文链接包含),包含:
- Worker完整代码
- 前端组件示例
- 管理API
结语
Webring不仅是一种技术实现,更是一种互联网精神的回归。在算法推荐和信息茧房日益严重的今天,通过Webring建立的人际连接网络,让我们重新找回早期互联网的探索乐趣。正如作者所说:"It's just fun."
原文链接:https://shub.club/writings/2026/july/you-need-a-webring/