use url_preview::{LLMExtractor, ClaudeCodeProvider, PreviewError};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct ArticleInfo {
title: String,
summary: String,
key_points: Vec<String>,
}
#[tokio::main]
async fn main() -> Result<(), PreviewError> {
let provider = ClaudeCodeProvider::new();
let extractor = LLMExtractor::with_provider(Box::new(provider));
let url = "https://blog.rust-lang.org/";
let result = extractor.extract::<ArticleInfo>(url).await?;
println!("Title: {}", result.data.title);
println!("Summary: {}", result.data.summary);
println!("Key Points:");
for point in &result.data.key_points {
println!(" • {}", point);
}
Ok(())
}