extract_ metadata
Ekstrak metadata halaman yang menyeluruh termasuk tajuk, perihalan, tag OpenGraph, data Twitter Card dan maklumat SEO.
Kes Penggunaan
Analisis SEO
Analisis tajuk halaman, perihalan dan kata kunci untuk pengoptimuman
Data Pratonton Media Sosial
Dapatkan data OpenGraph dan Twitter Card untuk pratonton sosial yang kaya
Pengkategorian Kandungan
Gunakan metadata untuk mengklasifikasikan dan menyusun kandungan web
Penjanaan Pratonton Pautan
Bina pratonton pautan yang kaya dengan tajuk, imej dan perihalan
Endpoint
/api/v1/tools/extract_metadataParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Optional | - | Halaman untuk diambil metadatanya. Sama ada `url` atau `html` diperlukan. Example: https://example.com/article |
html | string | Optional | - | HTML mentah untuk dihurai dan bukannya diambil. Example: <html>...</html> |
include_social | boolean | Optional | true | Sertakan Open Graph, kad Twitter, id apl Facebook dan tag pengesahan laman. Example: true |
include_seo | boolean | Optional | true | Sertakan description, keywords, author, robots, canonical, tajuk dan viewport. Example: true |
include_technical | boolean | Optional | true | Sertakan generator, favicon, helaian gaya dan skrip. Example: true |
include_structured_data | boolean | Optional | true | Sertakan blok data berstruktur JSON-LD yang ditemui pada halaman. Example: true |
respect_robots | boolean | Optional | true | Hormati robots.txt tapak sasaran. Dibiarkan pada `true`, laluan yang dilarang untuk `CrawlForge` ditolak dengan 403 sebelum apa-apa diambil dan tiada credits dicaj. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda. Example: true |
max_inline_chars | number | Optional | 40000 | Hasil terbesar yang dikembalikan sebaris, dalam aksara JSON-nya (1,000-10,000,000). Melebihinya, respons membawa `preview` (`max_inline_chars` aksara pertama JSON yang diformat), `result_handle`, `total_chars`, `truncated: true` dan `expires_at`, dan [read_result](/docs/api-reference/tools/read-result) membaca selebihnya dengan 1 credit setiap panggilan. Hasil tersimpan disimpan selama 1 jam. Example: 40000 |
Contoh Permintaan
cURL
curl -X POST https://crawlforge.dev/api/v1/tools/extract_metadata \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article"}'TypeScript
// npm install crawlforge-sdk
import { CrawlForge } from 'crawlforge-sdk';
const client = new CrawlForge({ apiKey: process.env.CRAWLFORGE_API_KEY });
const result = await client.extractMetadata({
url: 'https://example.com/article',
});
// result.data is untyped in crawlforge-sdk 0.1 — its shape is the Response Example below.
const { metadata } = result.data as {
metadata: {
basic: { title: string };
seo: { description: string };
social: { open_graph: { image?: string } | null; twitter: { card?: string } | null };
};
};
console.log('Title:', metadata.basic.title);
console.log('Description:', metadata.seo.description);
// open_graph and twitter are null when the page declares no such tags.
console.log('OG Image:', metadata.social.open_graph?.image);
console.log('Twitter Card:', metadata.social.twitter?.card);Python
# pip install crawlforge
from crawlforge import CrawlForge
client = CrawlForge() # reads CRAWLFORGE_API_KEY
result = client.extract_metadata(
url='https://example.com/article',
)
# result.data is a plain dict — its shape is the Response Example below.
metadata = result.data['metadata']
print(f"Title: {metadata['basic']['title']}")
print(f"Description: {metadata['seo']['description']}")
# open_graph and twitter are None when the page declares no such tags.
open_graph = metadata['social']['open_graph'] or {}
twitter = metadata['social']['twitter'] or {}
print(f"OG Image: {open_graph.get('image')}")
print(f"Twitter Card: {twitter.get('card')}")Contoh Respons
{ "success": true, "data": { "metadata": { "basic": { "title": "Example Article - Best Practices Guide", "url": "https://example.com/article", "lang": "en", "charset": "utf-8" }, "seo": { "description": "Learn the best practices for web development", "keywords": "web development, best practices, tutorial", "author": "Jane Doe", "robots": "index, follow", "canonical": "https://example.com/article", "headings": { "h1": [ "Best Practices Guide" ], "h2": [ "Getting Started", "Common Pitfalls" ], "h3": [] }, "meta_refresh": null, "viewport": "width=device-width, initial-scale=1" }, "social": { "open_graph": { "title": "Example Article - Best Practices Guide", "image": "https://example.com/og-image.jpg", "type": "article", "site_name": "Example Site" }, "twitter": { "card": "summary_large_image", "site": "@examplesite" }, "facebook_app_id": null, "google_site_verification": null }, "technical": { "generator": "Next.js", "favicons": [ { "rel": "icon", "href": "/favicon.ico", "type": "image/x-icon" } ] }, "structured_data": [] }, "summary": { "has_title": true, "has_description": true, "has_open_graph": true, "has_twitter_cards": true, "has_structured_data": false, "total_headings": 3 }, "extracted_from": "https://example.com/article", "redirected": false, "extraction_time": "2026-08-26T14:30:00.000Z" }, "credits_used": 1, "credits_remaining": 999, "processing_time": 195}data.metadata.basicSentiasa hadir: tajuk, url yang diselesaikan, lang html dan charset.data.metadata.seoHadir apabila `include_seo` true. Merangkumi struktur tajuk h1/h2/h3 sepenuhnya.data.metadata.social.open_graphSetiap sifat `og:` yang diisytiharkan halaman, kata demi kata — null apabila halaman tiada satu pun.data.metadata.social.twitterSetiap sifat `twitter:` yang diisytiharkan halaman. Null apabila tiada.data.metadata.technicalHadir apabila `include_technical` true: generator, favicon, helaian gaya dan skrip.data.metadata.structured_dataBlok JSON-LD yang ditemui pada halaman. Tatasusunan kosong apabila tiada.data.summaryBoolean untuk semakan kelengkapan pantas tanpa menyusuri keseluruhan objek metadata.data.extracted_fromURL sumber — URL akhir selepas sebarang ubah hala — atau rentetan literal 'provided HTML' apabila anda menghantar `html`.data.redirectedSentiasa ada. `true` apabila pengambilan berakhir pada URL yang berbeza daripada yang anda hantar, dibandingkan selepas dihuraikan, jadi `https://example.com` dan `https://example.com/` ialah halaman yang sama. Metadata itu kemudian menerangkan halaman destinasi ubah hala, dan `data.requested_url` membawa URL yang anda hantar. Sentiasa `false` untuk `html`.data.extraction_timeCap masa ISO 8601 bagi pengekstrakan.Pengendalian Ralat
Disekat oleh robots.txt (403 Forbidden)
robots.txt tapak sasaran melarang laluan ini untuk CrawlForge. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.
Alat Berkaitan
Bersedia untuk mengekstrak metadata? Daftar secara percuma dan dapatkan 1,000 credits.