import React, { useState, useEffect } from ‚react‘;
import { RefreshCw, Newspaper, ExternalLink, Calendar, Loader2, AlertCircle, Wheat } from ‚lucide-react‘;
const API_KEY = „AIzaSyCv18tI_hJgKhyB6AyWstJdHE0ROhb6Eqo“;
const API_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent?key=${API_KEY}`;
const App = () => {
const [news, setNews] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const [lastUpdated, setLastUpdated] = useState(null);
const fetchNews = async () => {
setLoading(true);
setError(null);
const systemPrompt = `Du bist ein spezialisierter Nachrichten-Analyst für den Sektor Landwirtschaft und AgriFood in Deutschland.
Deine Aufgabe ist es, die wichtigsten Ereignisse der LETZTEN 12 STUNDEN zusammenzufassen.
Gib die Antwort als valides JSON-Array zurück. Jedes Objekt im Array muss folgende Felder haben:
„title“ (kurzer, prägnanter Titel),
„summary“ (2-3 Sätze Zusammenfassung),
„relevance“ (warum das für die Branche wichtig ist),
„sources“ (ein Array mit URLs der gefundenen Quellen).
Konzentriere dich auf Themen wie Agrarpolitik, Marktpreise, technologische Innovationen (AgTech) und Ernährungsindustrie in Deutschland.`;
const userQuery = „Was sind die wichtigsten Nachrichten aus Landwirtschaft und AgriFood in Deutschland von heute? Suche gezielt nach Meldungen der letzten 12 Stunden.“;
const payload = {
contents: [{ parts: [{ text: userQuery }] }],
tools: [{ „google_search“: {} }],
systemInstruction: {
parts: [{ text: systemPrompt }]
},
generationConfig: {
responseMimeType: „application/json“,
}
};
try {
const response = await fetch(apiUrlWithRetry(API_URL), {
method: ‚POST‘,
headers: { ‚Content-Type‘: ‚application/json‘ },
body: JSON.stringify(payload)
});
if (!response.ok) throw new Error(‚API-Anfrage fehlgeschlagen. Bitte prüfen Sie den Schlüssel oder versuchen Sie es später erneut.‘);
const result = await response.json();
const rawText = result.candidates?.[0]?.content?.parts?.[0]?.text;
if (rawText) {
const parsedNews = JSON.parse(rawText);
setNews(parsedNews);
setLastUpdated(new Date().toLocaleTimeString(‚de-DE‘, { hour: ‚2-digit‘, minute: ‚2-digit‘ }));
}
} catch (err) {
console.error(err);
setError(„Fehler beim Laden der Nachrichten. Stellen Sie sicher, dass der API-Key gültig ist und das Modell ‚gemini-3-flash-preview‘ verfügbar ist.“);
} finally {
setLoading(false);
}
};
// Helper for basic retry logic
const apiUrlWithRetry = (url) => url;
useEffect(() => {
fetchNews();
}, []);
return (
AgriFood Radar
Die wichtigsten Updates aus der deutschen Landwirtschaft und Lebensmittelwirtschaft der letzten 12 Stunden – kuratiert durch KI.
Letztes Update
{lastUpdated} Uhr
)}
{}
{error && (
{error}
)}
{loading && news.length === 0 ? (
Analysiere aktuelle Nachrichtenquellen…
) : (
DEUTSCHLAND
{item.title}
{item.summary}
Bedeutung
{item.relevance}
Quellen
{new URL(url).hostname.replace(‚www.‘, “)}
))}
))}
)}
{!loading && news.length === 0 && !error && (
Keine aktuellen Nachrichten gefunden
Versuchen Sie es in ein paar Minuten erneut oder klicken Sie auf Aktualisieren.
)}
);
};
export default App;