Langkau ke kandungan
Alat Asas1 credit

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

POST/api/v1/tools/extract_metadata
Auth Required
1 req/s pada pelan Free
1 credit

Parameters

NameTypeRequiredDefaultDescription
url
stringOptional-
Halaman untuk diambil metadatanya. Sama ada `url` atau `html` diperlukan.
Example: https://example.com/article
html
stringOptional-
HTML mentah untuk dihurai dan bukannya diambil.
Example: <html>...</html>
include_social
booleanOptionaltrue
Sertakan Open Graph, kad Twitter, id apl Facebook dan tag pengesahan laman.
Example: true
include_seo
booleanOptionaltrue
Sertakan description, keywords, author, robots, canonical, tajuk dan viewport.
Example: true
include_technical
booleanOptionaltrue
Sertakan generator, favicon, helaian gaya dan skrip.
Example: true
include_structured_data
booleanOptionaltrue
Sertakan blok data berstruktur JSON-LD yang ditemui pada halaman.
Example: true
respect_robots
booleanOptionaltrue
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
numberOptional40000
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

terminalBash
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

extractMetadata.tsTypescript
// 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

extract_metadata.pyPython
# 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

200 OK195ms
{
"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
}
Field Descriptions
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