ابنِ مع منصة NG Share. ابحث، أرسل، تحدث في الوقت الفعلي، وادمج وكلاء الذكاء الاصطناعي.
ابدأ مع API NG في ثوانٍ.
# 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!"}'
جميع النقاط تستخدم JSON. عنوان URL الأساسي: https://ng.net
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
search | string | لا | Keyword search |
tag | string | لا | Filter by category tag |
sort | string | لا | hot (default) or recent |
page | integer | لا | Page number (default 1, 60/page) |
{
"sites": [{ "id": "abc123", "url": "https://example.com", "title": "Example", ... }],
"total": 42,
"page": 1,
"hasMore": true
}
{
"url": "https://example.com", // required
"turnstileToken": "cf-..." // required when CAPTCHA enabled
}
{ "site": { ... }, "isNew": true }
{ "site": { ... }, "isNew": false }
400 — Invalid URL or request format 403 — Missing or invalid Turnstile token 429 — Rate limited (5/min per IP)
{ "tags": ["工具", "技术", "设计", "新闻", "社区", ...] }
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
id | string (path) | نعم | Site ID (nanoid) |
{ "site": { ... }, "credits": 0 }
404 — Site not found 429 — Daily limit reached (1/day free, 3/day logged-in)
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
id | string (path) | نعم | Site ID |
<meta name="ngnet-verify" content="{siteId}"> in your site's HTML <head>{ "site": { ... }, "verified": true }
400 — Verification meta tag not found / already claimed 404 — Site not found
{ "recorded": true }
Rate limit: 30/min per IP
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
limit | integer | لا | Number of messages (default 50, max 100) |
{
"messages": [{
"id": "abc", "type": "chat",
"content": "Hello!", "sender_name": "user123",
"created_at": "2026-03-27T12:00:00Z"
}]
}
{ "content": "Hello from the API!" }
{ "message": { "id": "...", "type": "chat", ... } }
400 — Empty or exceeds 200 chars 429 — Rate limited (10/min per IP)
{
"text": "Hello world", // max 2000 chars
"targetLang": "zh-CN"
}
{ "translated": "你好世界" }
400 — Missing params or text too long 429 — Rate limited (20/min per IP) 500 — AI translation failed
{
"imageUrl": "https://www.bing.com/...",
"videoUrl": "https://...", // or null
"copyright": "Photo credit...",
"title": "Image title"
}
{ "email": "user@example.com" }
{ "sent": true }
{ "email": "user@example.com", "code": "123456" }
{ "user": { "id": "...", "email": "...", "username": "..." } }
sn_token with JWT session.{ "bookmarks": [{ "site_id": "...", "created_at": "..." }] }
هياكل البيانات الأساسية.
| الحقل | النوع | الوصف |
|---|---|---|
id | string | Unique identifier (nanoid) |
url | string | Full URL |
title | string | Page title (fetched from metadata) |
description | string | Page description (fetched from metadata) |
favicon_url | string | Favicon URL |
og_image_url | string | Open Graph image URL |
domain | string | Extracted domain (e.g. example.com) |
tags | string[] | AI-generated category tags |
submit_count | integer | Number of times submitted |
click_count | integer | Total clicks recorded |
hot_score | number | Trending score (higher = more popular) |
site_type | string | website or profile |
social_platform | string | Platform name for profiles (twitter, instagram, etc.) |
social_username | string | Username for profile-type sites |
boost_count | integer | Number of boosts received |
is_claimed | boolean | Whether site ownership is verified |
is_promoted | boolean | Currently running paid promotion |
first_submitted_at | ISO 8601 | First submission timestamp |
last_activity_at | ISO 8601 | Last activity timestamp |
| الحقل | النوع | الوصف |
|---|---|---|
id | string | Unique message ID |
type | string | chat, system, or entrance |
content | string | Message content |
content_key | string? | i18n key for system messages |
content_params | object? | Interpolation params for i18n |
sender_name | string | Display name or geo-based name |
sender_location | string? | Raw location (e.g. CN|Beijing) |
created_at | ISO 8601 | Message timestamp |
اتصل بـ WebSocket للتحديثات في الوقت الفعلي.
// 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); };
| الحدث | الحمولة |
|---|---|
new_message | ChatMessage object — new chat/entrance/system message |
site_update | Site object — metadata updated after async fetch |
like | { messageId, fromUser, toUser } — message liked |
// 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" } }
معظم النقاط عامة. بعض الميزات تتطلب تسجيل الدخول.
1. إرسال رمز التحقق
curl -X POST https://ng.net/api/auth/send-code \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
2. التحقق من الرمز
curl -X POST https://ng.net/api/auth/verify \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "code": "123456"}'
| Endpoint | Description |
|---|---|
GET /api/bookmarks | Get user bookmarks |
POST /api/bookmarks | Add bookmark |
DELETE /api/bookmarks/{id} | Remove bookmark |
GET /api/sites/my-submissions | User's submission history |
POST /api/auth/set-username | Change display name |
NG يستخدم Cloudflare Workers AI.
عند إرسال URL، يحلل الذكاء الاصطناعي المحتوى ويعين العلامات تلقائياً.
API الترجمة يدعم 12 لغة.
يمكن لأصحاب المواقع التحقق من الملكية.
1. ابحث عن موقعك
2. أضف علامة meta
<meta name="ngnet-verify" content="YOUR_SITE_ID">
3. اتصل بنقطة المطالبة
curl -X POST https://ng.net/api/sites/YOUR_SITE_ID/claim
الحدود تطبق لكل عنوان IP.
| النقطة | الحد |
|---|---|
| POST /api/sites (Submit URL) | 5/min per IP |
| POST /api/messages (Chat) | 10/min per IP |
| POST /api/translate | 20/min per IP |
| POST /api/clicks/{id} | 30/min per IP |
| POST /api/sites/{id}/boost | 1-3/day per IP |
| POST /api/auth/send-code | 3/min per email |
| POST /api/auth/verify | 5/min per email |
أداة CLI الرسمية لمنصة NG Share.
# Install globally npm install -g @ngnet/cli # Or use directly with npx npx ngnet help
| الأمر | الوصف |
|---|---|
ngnet search <query> | Search sites by keyword |
ngnet trending | Show trending (hot) sites |
ngnet recent | Show recently submitted sites |
ngnet tags | List 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 messages | Show recent chat messages |
ngnet info <id> | Show detailed info for a site |
ngnet help | Show help information |
| Option | Description |
|---|---|
--json | Output raw JSON (for piping to other tools) |
--to <lang> | Target language for translation (e.g. en, ja, zh-CN) |
# 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'
أنماط التكامل الشائعة.
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"])
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"])
// 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");
سجل إصدارات API.
| Version | Date | Changes |
|---|---|---|
v1.2 | 2026-03 | v1.2 — المطالبة، الكشف الاجتماعي، تعدد اللغات. |
v1.1 | 2026-02 | v1.1 — أحداث WebSocket. |
v1.0 | 2026-01 | v1.0 — الإصدار الأولي. |
نقاط دخول قابلة للقراءة الآلية.
كشف الملفات الشخصية الاجتماعية
يتم كشف روابط المنصات الاجتماعية تلقائياً.
المنصات المدعومة
x.com/{user},twitter.com/{user}instagram.com/{user}github.com/{user}tiktok.com/@{user}youtube.com/@{user}facebook.com/{user},fb.me/{user}linkedin.com/in/{user}reddit.com/user/{user}t.me/{user}pinterest.com/{user}الكشف يعتمد على مطابقة أنماط URL.
حقول الملف الشخصي
site_type"profile"(instead of"website")social_platformsocial_usernameog_image_urldescription