使用 API

以下接口公开、免费、无需认证,用于获取本站的公开工具清单、下载文件、读取教程。适合 AI、脚本或其他程序调用。私密内容不在此列。

基础地址
所有接口只返回标记为「公开」的内容,返回格式为 JSON(教程正文为 Markdown 纯文本)。

1. 一键获取完整清单(推荐 AI 使用)

GET

返回所有公开工具和教程,工具带可直接下载的绝对地址,教程带正文地址。一次请求拿全部,无需翻页。

# 拉取清单
curl 

响应结构:

{
  "site": "tools.5ji.com.cn",
  "generated_at": "2026-08-30T07:12:31Z",
  "tool_count": 2,
  "tutorial_count": 1,
  "tools": [
    {
      "id": "batch-compress",
      "name": "batch-compress",
      "description": "批量图片压缩 CLI...",
      "lang": "Go",
      "tags": ["图片", "CLI"],
      "status": "已完成",
      "size": 20480,
      "size_human": "20 KB",
      "downloads": 4,
      "created_at": "2026-08-30",
      "download": "http://站点/dl/batch-compress.zip"
    }
  ],
  "tutorials": [
    {
      "id": "go-cli-intro",
      "title": "用 Go 写一个 CLI 工具",
      "summary": "...",
      "category": "Go",
      "tags": ["go", "cli"],
      "created_at": "2026-08-30",
      "content_url": "http://站点/t/go-cli-intro"
    }
  ]
}

2. 获取工具列表

GET

返回公开工具数组。字段说明:

字段说明
id工具唯一标识
name / icon名称 / emoji 图标
description一句话说明
lang语言/技术栈
tags标签数组
status状态(如「已完成」)
size / size_human文件大小(字节 / 可读)
downloads累计下载次数
file文件名,拼接 /dl/{file} 即可下载

3. 下载工具文件

GET

直接返回文件流(Content-Disposition: attachment)。文件名从工具列表的 file 字段获取,或从清单的 download 字段拿到完整地址。每次下载会自动计数。

# 下载(文件名以接口返回为准)
curl -L -o tool.zip 

4. 获取教程列表

GET

返回公开教程数组(不含正文),含 idtitlesummarycategorytagsviewscreated_at

5. 读取教程正文

GET

返回该教程的 Markdown 原文Content-Type: text/markdown),可直接保存为 .md 文件或自行渲染。

# 拉取某篇教程的 Markdown
curl  -o tutorial.md

调用示例(Python)

import requests, json

BASE = 

# 1. 拿清单
data = requests.get(BASE + "/api/public/manifest").json()

# 2. 遍历工具并下载
for tool in data["tools"]:
    print("工具:", tool["name"], tool["size_human"])
    r = requests.get(tool["download"])
    with open(tool["file"] if "file" in tool else "tool.bin", "wb") as f:
        f.write(r.content)

# 3. 读取教程正文
for tut in data["tutorials"]:
    md = requests.get(tut["content_url"]).text
    print("教程:", tut["title"], "长度", len(md))
说明:这些接口只读、公开、无需 Token。若你是上传工具/教程(写入),请参阅 上传 API 文档,那需要单独的 API Token。