Construisez avec Share Notes. Recherchez, soumettez, chattez en temps réel, intégrez des agents AI.
Commencez avec l'API NG en quelques secondes. Tous les endpoints publics ne nécessitent aucune authentification.
# Search sites curl https://Share.Mini-Apps.net/api/sites?search=AI+tools # Get trending curl https://Share.Mini-Apps.net/api/sites?sort=hot # Submit a URL curl -X POST https://Share.Mini-Apps.net/api/sites \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' # Get chat messages curl https://Share.Mini-Apps.net/api/messages?limit=10 # Send a message curl -X POST https://Share.Mini-Apps.net/api/messages \ -H "Content-Type: application/json" \ -d '{"content": "Hello from the API!"}'
Tous les endpoints utilisent JSON. URL de base : https://Share.Mini-Apps.net
| Nom | Type | Requis | Description |
|---|---|---|---|
search | string | Non | Keyword search |
tag | string | Non | Filter by category tag |
sort | string | Non | hot (default) or recent |
page | integer | Non | 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": ["工具", "技术", "设计", "新闻", "社区", ...] }
| Nom | Type | Requis | Description |
|---|---|---|---|
id | string (path) | Oui | Site ID (nanoid) |
{ "site": { ... }, "credits": 0 }
404 — Site not found 429 — Daily limit reached (1/day free, 3/day logged-in)
| Nom | Type | Requis | Description |
|---|---|---|---|
id | string (path) | Oui | Site ID |
<meta name="sharenotes-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
| Nom | Type | Requis | Description |
|---|---|---|---|
limit | integer | Non | 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": "..." }] }
Structures de données principales.
| Champ | Type | Description |
|---|---|---|
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 |
| Champ | Type | Description |
|---|---|---|
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 |
Connectez-vous au WebSocket pour des mises à jour en temps réel.
// Browser const ws = new WebSocket("wss://Share.Mini-Apps.net/api/ws"); ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log(data.event, data.payload); };
| Événement | Charge utile |
|---|---|
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" } }
La plupart des endpoints sont publics. Certaines fonctions nécessitent une connexion par email.
1. Envoyer le code de vérification par email
curl -X POST https://Share.Mini-Apps.net/api/auth/send-code \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
2. Vérifier le code et obtenir la session
curl -X POST https://Share.Mini-Apps.net/api/auth/verify \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "code": "123456"}'
sn_token).| 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 utilise Cloudflare Workers AI pour des fonctions intelligentes.
Lors de la soumission d'une URL, l'IA analyse le contenu et attribue automatiquement des étiquettes.
L'API de traduction prend en charge 12 langues avec détection automatique de la langue source.
Les propriétaires de sites peuvent vérifier leur propriété pour débloquer des fonctions supplémentaires.
1. Trouvez votre site sur Share.Mini-Apps.net
2. Ajoutez une balise meta au HTML
<meta name="sharenotes-verify" content="YOUR_SITE_ID">
3. Appelez l'endpoint de réclamation
curl -X POST https://Share.Mini-Apps.net/api/sites/YOUR_SITE_ID/claim
Les limites s'appliquent par adresse IP.
| Endpoint | Limite |
|---|---|
| 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 |
Outil CLI officiel pour Share Notes.
# Install globally npm install -g @sharenotes/cli # Or use directly with npx npx sharenotes help
| Commande | Description |
|---|---|
sharenotes search <query> | Search sites by keyword |
sharenotes trending | Show trending (hot) sites |
sharenotes recent | Show recently submitted sites |
sharenotes tags | List all category tags |
sharenotes tag <name> | Browse sites by specific tag |
sharenotes submit <url> | Submit a URL to the platform |
sharenotes boost <id> | Boost a site's visibility |
sharenotes translate <text> --to <lang> | Translate text between languages |
sharenotes send <message> | Send a chat message |
sharenotes messages | Show recent chat messages |
sharenotes info <id> | Show detailed info for a site |
sharenotes 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 sharenotes search "AI tools" # Get trending sites as JSON sharenotes trending --json # Filter by tag sharenotes tag 技术 # Submit a site sharenotes submit https://example.com # Boost a site sharenotes boost abc123 # Translate text sharenotes translate "Hello world" --to ja # Send chat message sharenotes send "Hello from CLI!" # Pipe JSON output to jq sharenotes search "design" --json | jq '.sites[].title'
Modèles d'intégration courants.
curl -s "https://Share.Mini-Apps.net/api/sites?search=AI+tools&sort=hot" | jq .
const res = await fetch('https://Share.Mini-Apps.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://Share.Mini-Apps.net/api/sites", params={"search": "AI tools"}) data = r.json() for site in data["sites"]: print(site["title"], site["url"])
curl -X POST https://Share.Mini-Apps.net/api/sites \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
const res = await fetch('https://Share.Mini-Apps.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://Share.Mini-Apps.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://Share.Mini-Apps.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");
Historique des versions de l'API.
| Version | Date | Changes |
|---|---|---|
v1.2 | 2026-03 | v1.2 — Réclamation, détection sociale, multilingue. |
v1.1 | 2026-02 | v1.1 — Événements WebSocket temps réel. |
v1.0 | 2026-01 | v1.0 — Version initiale. |
Points d'entrée lisibles par machine pour les agents AI.
Détection de profils sociaux
Les URLs de plateformes sociales sont automatiquement détectées et affichées comme cartes de profil.
Plateformes prises en charge
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}Détection basée sur la correspondance de motifs d'URL.
Champs spécifiques au profil
site_type"profile"(instead of"website")social_platformsocial_usernameog_image_urldescription