设置
- 先在你的 Firecrawl 控制台获取 Firecrawl API 密钥。
- 将你的 SourceSync.ai 命名空间配置为使用 Firecrawl 作为网页抓取提供方:
curl -X PATCH https://api.sourcesync.ai/v1/namespaces/YOUR_NAMESPACE_ID \
-H "Authorization: Bearer YOUR_SOURCE_SYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webScraperConfig": {
"provider": "FIRECRAWL",
"apiKey": "YOUR_FIRECRAWL_API_KEY"
}
}'
const response = await fetch(
'https://api.sourcesync.ai/v1/namespaces/YOUR_NAMESPACE_ID',
{
method: 'PATCH',
headers: {
Authorization: `Bearer ${SOURCE_SYNC_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
webScraperConfig: {
provider: 'FIRECRAWL',
apiKey: 'YOUR_FIRECRAWL_API_KEY',
},
}),
}
)
import requests
response = requests.patch(
'https://api.sourcesync.ai/v1/namespaces/YOUR_NAMESPACE_ID',
headers={
'Authorization': f'Bearer {SOURCE_SYNC_API_KEY}',
'Content-Type': 'application/json',
},
json={
'webScraperConfig': {
'provider': 'FIRECRAWL',
'apiKey': 'YOUR_FIRECRAWL_API_KEY',
},
},
)
用法
URL 列表导入
curl -X POST https://api.sourcesync.ai/v1/ingest/urls \
-H "Authorization: Bearer YOUR_SOURCE_SYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"namespaceId": "YOUR_NAMESPACE_ID",
"ingestConfig": {
"source": "URLS_LIST",
"config": {
"urls": [
"https://example.com/page1",
"https://example.com/page2"
],
"scrapeOptions": {
"includeSelectors": ["article", "main"],
"excludeSelectors": [".navigation", ".footer"]
}
}
}
}'
const response = await fetch('https://api.sourcesync.ai/v1/ingest/urls', {
method: 'POST',
headers: {
Authorization: `Bearer ${SOURCE_SYNC_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
namespaceId: 'YOUR_NAMESPACE_ID',
ingestConfig: {
source: 'URLS_LIST',
config: {
urls: ['https://example.com/page1', 'https://example.com/page2'],
scrapeOptions: {
includeSelectors: ['article', 'main'],
excludeSelectors: ['.navigation', '.footer'],
},
},
},
}),
})
response = requests.post(
'https://api.sourcesync.ai/v1/ingest/urls',
headers={
'Authorization': f'Bearer {SOURCE_SYNC_API_KEY}',
'Content-Type': 'application/json',
},
json={
'namespaceId': 'YOUR_NAMESPACE_ID',
'ingestConfig': {
'source': 'URLS_LIST',
'config': {
'urls': ['https://example.com/page1', 'https://example.com/page2'],
'scrapeOptions': {
'includeSelectors': ['article', 'main'],
'excludeSelectors': ['.navigation', '.footer'],
},
},
},
},
)
网站爬取
curl -X POST https://api.sourcesync.ai/v1/ingest/website \
-H "Authorization: Bearer YOUR_SOURCE_SYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"namespaceId": "YOUR_NAMESPACE_ID",
"ingestConfig": {
"source": "WEBSITE",
"config": {
"url": "https://example.com",
"maxDepth": 3,
"maxLinks": 100,
"includePaths": ["/docs", "/blog"],
"excludePaths": ["/admin"],
"scrapeOptions": {
"includeSelectors": ["article", "main"],
"excludeSelectors": [".navigation", ".footer"]
}
}
}
}'
const response = await fetch('https://api.sourcesync.ai/v1/ingest/website', {
method: 'POST',
headers: {
Authorization: `Bearer ${SOURCE_SYNC_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
namespaceId: 'YOUR_NAMESPACE_ID',
ingestConfig: {
source: 'WEBSITE',
config: {
url: 'https://example.com',
maxDepth: 3,
maxLinks: 100,
includePaths: ['/docs', '/blog'],
excludePaths: ['/admin'],
scrapeOptions: {
includeSelectors: ['article', 'main'],
excludeSelectors: ['.navigation', '.footer'],
},
},
},
}),
})
response = requests.post(
'https://api.sourcesync.ai/v1/ingest/website',
headers={
'Authorization': f'Bearer {SOURCE_SYNC_API_KEY}',
'Content-Type': 'application/json',
},
json={
'namespaceId': 'YOUR_NAMESPACE_ID',
'ingestConfig': {
'source': 'WEBSITE',
'config': {
'url': 'https://example.com',
'maxDepth': 3,
'maxLinks': 100,
'includePaths': ['/docs', '/blog'],
'excludePaths': ['/admin'],
'scrapeOptions': {
'includeSelectors': ['article', 'main'],
'excludeSelectors': ['.navigation', '.footer'],
},
},
},
},
)
站点地图处理
curl -X POST https://api.sourcesync.ai/v1/ingest/sitemap \
-H "Authorization: Bearer YOUR_SOURCE_SYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"namespaceId": "YOUR_NAMESPACE_ID",
"ingestConfig": {
"source": "SITEMAP",
"config": {
"url": "https://example.com/sitemap.xml",
"scrapeOptions": {
"includeSelectors": ["article", "main"],
"excludeSelectors": [".navigation", ".footer"]
}
}
}
}'
const response = await fetch('https://api.sourcesync.ai/v1/ingest/sitemap', {
method: 'POST',
headers: {
Authorization: `Bearer ${SOURCE_SYNC_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
namespaceId: 'YOUR_NAMESPACE_ID',
ingestConfig: {
source: 'SITEMAP',
config: {
url: 'https://example.com/sitemap.xml',
scrapeOptions: {
includeSelectors: ['article', 'main'],
excludeSelectors: ['.navigation', '.footer'],
},
},
},
}),
})
response = requests.post(
'https://api.sourcesync.ai/v1/ingest/sitemap',
headers={
'Authorization': f'Bearer {SOURCE_SYNC_API_KEY}',
'Content-Type': 'application/json',
},
json={
'namespaceId': 'YOUR_NAMESPACE_ID',
'ingestConfig': {
'source': 'SITEMAP',
'config': {
'url': 'https://example.com/sitemap.xml',
'scrapeOptions': {
'includeSelectors': ['article', 'main'],
'excludeSelectors': ['.navigation', '.footer'],
},
},
},
},
)
功能
- 支持 JavaScript 渲染
- 自动速率限制
- 基于 CSS 选择器的内容提取
- 递归抓取并可控制深度
- 站点地图处理
资源
- 邮件: support@sourcesync.ai
- Discord: 加入社区

