简体中文繁體中文(港)繁體中文(台)EnglishEspañolالعربيةहिन्दीPortuguês日本語한국어FrançaisDeutsch
NG

NG Entwickler

Bauen Sie mit der NG Share Platform. Suchen, einreichen, Echtzeit-Chat und AI-Agent-Integration.

OpenAPI Spec llms.txt AI Plugin MCP Tools
Schnellstart API-Referenz Datenmodelle WebSocket Authentifizierung KI Social-Erkennung Site beanspruchen Limits CLI Beispiele Discovery

Schnellstart

Starten Sie in Sekunden mit der NG API. Alle öffentlichen Endpunkte erfordern keine Authentifizierung.

# Search sites
curl https://ng.net/api/sites?search=AI+tools

# Get trending
curl https://ng.net/api/sites?sort=hot

# Submit a URL
curl -X POST https://ng.net/api/sites \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# Get chat messages
curl https://ng.net/api/messages?limit=10

# Send a message
curl -X POST https://ng.net/api/messages \
  -H "Content-Type: application/json" \
  -d '{"content": "Hello from the API!"}'

API-Referenz

Alle Endpunkte verwenden JSON. Basis-URL: https://ng.net

GET/api/sites
Search and browse shared sites
Parameter & Antwort
NameTypErforderlichBeschreibung
searchstringNeinKeyword search
tagstringNeinFilter by category tag
sortstringNeinhot (default) or recent
pageintegerNeinPage number (default 1, 60/page)

Antwort 200

{
  "sites": [{ "id": "abc123", "url": "https://example.com", "title": "Example", ... }],
  "total": 42,
  "page": 1,
  "hasMore": true
}
POST/api/sites
Submit a new URL to the platform
Anfragekörper & Antwort

Anfragekörper

{
  "url": "https://example.com",        // required
  "turnstileToken": "cf-..."    // required when CAPTCHA enabled
}

Antwort 201 (new)

{ "site": { ... }, "isNew": true }

Antwort 200 (existing, submit count incremented)

{ "site": { ... }, "isNew": false }

Fehler

400 — Invalid URL or request format
403 — Missing or invalid Turnstile token
429 — Rate limited (5/min per IP)
Social profile URLs (Twitter, Instagram, GitHub, etc.) are auto-detected. AI generates tags asynchronously after submission. Metadata (title, description, favicon, OG image) is fetched server-side.
GET/api/sites/tags
Get all available category tags
Antwort
{ "tags": ["工具", "技术", "设计", "新闻", "社区", ...] }
POST/api/sites/{id}/boost
Boost a site's visibility in hot rankings
Parameter & Antwort
NameTypErforderlichBeschreibung
idstring (path)JaSite ID (nanoid)

Antwort 200

{ "site": { ... }, "credits": 0 }

Fehler

404 — Site not found
429 — Daily limit reached (1/day free, 3/day logged-in)
POST/api/sites/{id}/claim
Verify site ownership
Parameter & Antwort
NameTypErforderlichBeschreibung
idstring (path)JaSite ID
Requires: <meta name="ngnet-verify" content="{siteId}"> in your site's HTML <head>

Antwort 200

{ "site": { ... }, "verified": true }

Fehler

400 — Verification meta tag not found / already claimed
404 — Site not found
POST/api/clicks/{id}
Record a click for analytics
Antwort
{ "recorded": true }

Rate limit: 30/min per IP

GET/api/messages
Get recent chat messages
Parameter & Antwort
NameTypErforderlichBeschreibung
limitintegerNeinNumber of messages (default 50, max 100)

Antwort 200

{
  "messages": [{
    "id": "abc", "type": "chat",
    "content": "Hello!", "sender_name": "user123",
    "created_at": "2026-03-27T12:00:00Z"
  }]
}
POST/api/messages
Send a chat message (max 200 chars, rate: 10/min)
Anfragekörper & Antwort

Anfragekörper

{ "content": "Hello from the API!" }

Antwort 201

{ "message": { "id": "...", "type": "chat", ... } }

Fehler

400 — Empty or exceeds 200 chars
429 — Rate limited (10/min per IP)
POST/api/translate
AI-powered translation (12 languages)
Anfragekörper & Antwort

Anfragekörper

{
  "text": "Hello world",       // max 2000 chars
  "targetLang": "zh-CN"
}

Antwort 200

{ "translated": "你好世界" }

Fehler

400 — Missing params or text too long
429 — Rate limited (20/min per IP)
500 — AI translation failed
Uses Cloudflare Workers AI (M2M100-1.2B). Source language is auto-detected.
GET/api/bing-bg
Daily background image from Bing
Antwort
{
  "imageUrl": "https://www.bing.com/...",
  "videoUrl": "https://...",  // or null
  "copyright": "Photo credit...",
  "title": "Image title"
}
Cached for 6 hours. Proxies Bing's daily image API.
POST/api/auth/send-code
Send login verification code to email
Anfragekörper & Antwort

Anfragekörper

{ "email": "user@example.com" }

Antwort 200

{ "sent": true }
POST/api/auth/verify
Verify code and create session
Anfragekörper & Antwort

Anfragekörper

{ "email": "user@example.com", "code": "123456" }

Antwort 200

{ "user": { "id": "...", "email": "...", "username": "..." } }
Sets HttpOnly cookie sn_token with JWT session.
GET/api/bookmarks
Get user's bookmarked sites (requires auth)
Antwort
{ "bookmarks": [{ "site_id": "...", "created_at": "..." }] }

Datenmodelle

Kerndatenstrukturen der API.

Site

FeldTypBeschreibung
idstringUnique identifier (nanoid)
urlstringFull URL
titlestringPage title (fetched from metadata)
descriptionstringPage description (fetched from metadata)
favicon_urlstringFavicon URL
og_image_urlstringOpen Graph image URL
domainstringExtracted domain (e.g. example.com)
tagsstring[]AI-generated category tags
submit_countintegerNumber of times submitted
click_countintegerTotal clicks recorded
hot_scorenumberTrending score (higher = more popular)
site_typestringwebsite or profile
social_platformstringPlatform name for profiles (twitter, instagram, etc.)
social_usernamestringUsername for profile-type sites
boost_countintegerNumber of boosts received
is_claimedbooleanWhether site ownership is verified
is_promotedbooleanCurrently running paid promotion
first_submitted_atISO 8601First submission timestamp
last_activity_atISO 8601Last activity timestamp

ChatMessage

FeldTypBeschreibung
idstringUnique message ID
typestringchat, system, or entrance
contentstringMessage content
content_keystring?i18n key for system messages
content_paramsobject?Interpolation params for i18n
sender_namestringDisplay name or geo-based name
sender_locationstring?Raw location (e.g. CN|Beijing)
created_atISO 8601Message timestamp

WebSocket-API

Verbinden Sie sich mit dem WebSocket für Echtzeit-Updates.

Verbindung

// Browser
const ws = new WebSocket("wss://ng.net/api/ws");

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log(data.event, data.payload);
};

Ereignistypen

EreignisNutzlast
new_messageChatMessage object — new chat/entrance/system message
site_updateSite object — metadata updated after async fetch
like{ messageId, fromUser, toUser } — message liked

Beispiel

// new_message event payload
{
  "event": "new_message",
  "payload": {
    "id": "abc123",
    "type": "entrance",
    "content": "entered",
    "content_key": "chat.entered",
    "sender_name": "United States Dallas",
    "sender_location": "US|Dallas",
    "created_at": "2026-03-27T12:00:00Z"
  }
}

// site_update event payload
{
  "event": "site_update",
  "payload": {
    "id": "xyz789",
    "title": "Example Site",
    "description": "A great website",
    "tags": ["工具", "技术"]
  }
}

// like event payload
{
  "event": "like",
  "payload": {
    "messageId": "msg123",
    "fromUser": "United States Dallas",
    "toUser": "Japan Tokyo"
  }
}

Authentifizierung

Die meisten Endpunkte sind öffentlich. Einige Funktionen erfordern E-Mail-Login.

Login-Ablauf

1. Bestätigungscode per E-Mail senden

curl -X POST https://ng.net/api/auth/send-code \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'

2. Code verifizieren und Sitzung erhalten

curl -X POST https://ng.net/api/auth/verify \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "code": "123456"}'
Die Sitzung wird in einem HttpOnly-Cookie (sn_token) gespeichert.

Geschützte Endpunkte

EndpointDescription
GET /api/bookmarksGet user bookmarks
POST /api/bookmarksAdd bookmark
DELETE /api/bookmarks/{id}Remove bookmark
GET /api/sites/my-submissionsUser's submission history
POST /api/auth/set-usernameChange display name

KI-Funktionen

NG nutzt Cloudflare Workers AI für intelligente Funktionen.

Auto-Tagging

Bei URL-Einreichung analysiert die KI den Inhalt und vergibt automatisch Kategorie-Tags.

Verfügbare Tags

工具 (Tools)技术 (Tech)设计 (Design)新闻 (News) 社区 (Community)学习 (Learning)娱乐 (Entertainment)资源 (Resources) 商业 (Business)生活 (Lifestyle)社交 (Social)
Tags are assigned asynchronously after URL submission. The AI analyzes the fetched page content and selects 1-3 tags from the above list. Tags are stored as Chinese strings in the database but displayed in the user's language via i18n mapping.

Übersetzung

Die Übersetzungs-API unterstützt 12 Sprachen mit automatischer Quellspracherkennung.

Unterstützte Sprachen

zh-CNzh-HKzh-TWenesar hiptjakofrde

Social-Profil-Erkennung

URLs von sozialen Plattformen werden automatisch erkannt und als Profilkarten angezeigt.

Unterstützte Plattformen

PlatformURL PatternExample
Twitter / Xx.com/{user}, twitter.com/{user}x.com/elonmusk
Instagraminstagram.com/{user}instagram.com/cristiano
GitHubgithub.com/{user}github.com/torvalds
TikToktiktok.com/@{user}tiktok.com/@khaby.lame
YouTubeyoutube.com/@{user}youtube.com/@MrBeast
Facebookfacebook.com/{user}, fb.me/{user}facebook.com/zuck
LinkedInlinkedin.com/in/{user}linkedin.com/in/satyanadella
Redditreddit.com/user/{user}reddit.com/user/spez
Telegramt.me/{user}t.me/durov
Pinterestpinterest.com/{user}pinterest.com/pinterest

Erkennung basiert auf URL-Musterabgleich.

Profilspezifische Felder

FeldBeschreibung
site_type"profile" (instead of "website")
social_platformPlatform identifier (twitter, instagram, github, etc.)
social_usernameExtracted username handle
og_image_urlProfile avatar (from Open Graph)
descriptionBio / profile description (from Open Graph)

Site-Eigentum beanspruchen

Website-Besitzer können das Eigentum verifizieren.

Verifizierungsschritte

1. Finden Sie Ihre Site auf ng.net

2. Fügen Sie ein Meta-Tag zum HTML hinzu

<meta name="ngnet-verify" content="YOUR_SITE_ID">

3. Rufen Sie den Claim-Endpunkt auf

curl -X POST https://ng.net/api/sites/YOUR_SITE_ID/claim

Vorteile

Rate-Limits

Rate-Limits gelten pro IP-Adresse.

EndpunktLimit
POST /api/sites (Submit URL)5/min per IP
POST /api/messages (Chat)10/min per IP
POST /api/translate20/min per IP
POST /api/clicks/{id}30/min per IP
POST /api/sites/{id}/boost1-3/day per IP
POST /api/auth/send-code3/min per email
POST /api/auth/verify5/min per email
Bei Überschreitung wird HTTP 429 zurückgegeben.

CLI-Tool

Offizielles CLI-Tool für die NG Share Platform.

Installation

# Install globally
npm install -g @ngnet/cli

# Or use directly with npx
npx ngnet help

Befehle

BefehlBeschreibung
ngnet search <query>Search sites by keyword
ngnet trendingShow trending (hot) sites
ngnet recentShow recently submitted sites
ngnet tagsList all category tags
ngnet tag <name>Browse sites by specific tag
ngnet submit <url>Submit a URL to the platform
ngnet boost <id>Boost a site's visibility
ngnet translate <text> --to <lang>Translate text between languages
ngnet send <message>Send a chat message
ngnet messagesShow recent chat messages
ngnet info <id>Show detailed info for a site
ngnet helpShow help information

Globale Optionen

OptionDescription
--jsonOutput raw JSON (for piping to other tools)
--to <lang>Target language for translation (e.g. en, ja, zh-CN)

Beispiele

# Search for AI tools
ngnet search "AI tools"

# Get trending sites as JSON
ngnet trending --json

# Filter by tag
ngnet tag 技术

# Submit a site
ngnet submit https://example.com

# Boost a site
ngnet boost abc123

# Translate text
ngnet translate "Hello world" --to ja

# Send chat message
ngnet send "Hello from CLI!"

# Pipe JSON output to jq
ngnet search "design" --json | jq '.sites[].title'

Codebeispiele

Gängige Integrationsmuster.

Sites suchen

curl -s "https://ng.net/api/sites?search=AI+tools&sort=hot" | jq .
const res = await fetch('https://ng.net/api/sites?search=AI+tools');
const { sites, total } = await res.json();
console.log(`Found ${total} sites`);
sites.forEach(s => console.log(s.title, s.url));
import requests

r = requests.get("https://ng.net/api/sites", params={"search": "AI tools"})
data = r.json()
for site in data["sites"]:
    print(site["title"], site["url"])

URL einreichen

curl -X POST https://ng.net/api/sites \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'
const res = await fetch('https://ng.net/api/sites', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ url: 'https://example.com' })
});
const { site, isNew } = await res.json();
console.log(isNew ? 'New!' : 'Already exists', site.title);
import requests

r = requests.post("https://ng.net/api/sites", json={"url": "https://example.com"})
data = r.json()
print("New!" if data["isNew"] else "Exists", data["site"]["title"])

WebSocket Echtzeit

// Browser WebSocket client
const ws = new WebSocket("wss://ng.net/api/ws");

ws.onopen = () => console.log("Connected!");

ws.onmessage = (event) => {
  const { event: type, payload } = JSON.parse(event.data);
  switch (type) {
    case "new_message":
      console.log(`[${payload.sender_name}] ${payload.content}`);
      break;
    case "site_update":
      console.log(`Site updated: ${payload.title}`);
      break;
    case "like":
      console.log(`${payload.fromUser} liked a message`);
      break;
  }
};

ws.onclose = () => console.log("Disconnected");

Änderungsprotokoll

API-Versionshistorie.

VersionDateChanges
v1.22026-03v1.2 — Site-Verifizierung, Social-Erkennung, Mehrsprachigkeit.
v1.12026-02v1.1 — WebSocket-Echtzeitereignisse.
v1.02026-01v1.0 — Erstveröffentlichung.

Discovery-Endpunkte

Maschinenlesbare Endpunkte für AI-Agenten.

OpenAPI 3.1

Machine-readable API specification with schemas and examples

/openapi.json

LLM Context (short)

Quick summary for LLM context windows

/llms.txt

LLM Full Reference

Complete API docs for LLM consumption

/llms-full.txt

AI Plugin (ChatGPT)

OpenAI plugin manifest for GPT-based agents

/.well-known/ai-plugin.json

MCP Tools (Claude)

Model Context Protocol tool definitions

/.well-known/mcp.json

Sitemap

XML sitemap with i18n alternates

/sitemap.xml