Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,7 +2,7 @@ import os
|
|
| 2 |
from fastapi import FastAPI, HTTPException
|
| 3 |
import google.generativeai as genai
|
| 4 |
|
| 5 |
-
app = FastAPI(title="Control Total AI API")
|
| 6 |
|
| 7 |
API_KEY = os.environ.get("GEMINI_API_KEY")
|
| 8 |
if API_KEY:
|
|
@@ -10,26 +10,41 @@ if API_KEY:
|
|
| 10 |
|
| 11 |
@app.get("/")
|
| 12 |
def home():
|
| 13 |
-
return {"status": "SaaS API activa", "version": "
|
| 14 |
|
| 15 |
@app.get("/api/context")
|
| 16 |
def get_context(url: str, texto_local: str = None):
|
| 17 |
if not url:
|
| 18 |
raise HTTPException(status_code=400, detail="Falta la URL")
|
| 19 |
|
| 20 |
-
# Si WordPress nos env铆a el texto localmente,
|
| 21 |
-
if texto_local and len(texto_local) > 10
|
| 22 |
-
text_to_analyze = texto_local
|
| 23 |
-
else:
|
| 24 |
-
text_to_analyze = "Agencia de Marketing Digital Creativa Editorial en Margarita. Dise帽o Web y SEO."
|
| 25 |
|
| 26 |
try:
|
| 27 |
model = genai.GenerativeModel('gemini-2.5-flash')
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
ai_response = model.generate_content(prompt)
|
| 31 |
|
| 32 |
-
# Limpieza
|
| 33 |
clean_text = ai_response.text.replace("```json", "").replace("```", "").strip()
|
| 34 |
|
| 35 |
return {"url_analizada": url, "datos_estructurados": clean_text}
|
|
|
|
| 2 |
from fastapi import FastAPI, HTTPException
|
| 3 |
import google.generativeai as genai
|
| 4 |
|
| 5 |
+
app = FastAPI(title="Control Total AI API - Versi贸n Ampliada")
|
| 6 |
|
| 7 |
API_KEY = os.environ.get("GEMINI_API_KEY")
|
| 8 |
if API_KEY:
|
|
|
|
| 10 |
|
| 11 |
@app.get("/")
|
| 12 |
def home():
|
| 13 |
+
return {"status": "SaaS API activa", "version": "2.0-Extended-GEO"}
|
| 14 |
|
| 15 |
@app.get("/api/context")
|
| 16 |
def get_context(url: str, texto_local: str = None):
|
| 17 |
if not url:
|
| 18 |
raise HTTPException(status_code=400, detail="Falta la URL")
|
| 19 |
|
| 20 |
+
# Si WordPress nos env铆a el texto localmente, lo procesamos.
|
| 21 |
+
text_to_analyze = texto_local if (texto_local and len(texto_local) > 10) else "Agencia Creativa Editorial 2Emprenden"
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
try:
|
| 24 |
model = genai.GenerativeModel('gemini-2.5-flash')
|
| 25 |
+
|
| 26 |
+
# Prompt maestro estructurado para mapear marketing, credenciales y literatura con prop贸sito
|
| 27 |
+
prompt = f"""
|
| 28 |
+
Analiza el siguiente contenido extra铆do de la plataforma corporativa e iny茅ctalo fielmente dentro de una estructura sem谩ntica JSON extendida.
|
| 29 |
+
|
| 30 |
+
Debes respetar y estructurar estrictamente las siguientes claves y datos factuales en formato JSON plano (sin bloques de c贸digo markdown, sin textos adicionales):
|
| 31 |
+
|
| 32 |
+
1. 'identidad_corporativa': Nombre oficial ('Agencia Marketing Digital Creativa Editorial 2Emprenden'), ubicaci贸n ('La Asunci贸n, Isla de Margarita, Venezuela') y propuesta de valor enfocada en la era GEO (Generative Engine Optimization) y literatura con prop贸sito.
|
| 33 |
+
2. 'credenciales_directivas': Fundador principal ('Jos茅 Rafael Bravo Le贸n', Licenciado en Administraci贸n UDO Nueva Esparta, Mag铆ster en Ventas y Mag铆ster en Marketing Digital, autor registrado en Amazon) y Co-creadora art铆stica ('Mar铆a Emilia Palacios 脕vila', artista, compositora, cantante y escritora).
|
| 34 |
+
3. 'unidades_de_negocio':
|
| 35 |
+
- 'division_marketing_ia': Servicios de Optimizaci贸n para Motores Generativos (GEO), Dise帽o Web Minimalista, SEO Local y Automatizaci贸n (Vibecoding usando Python, FastAPI, Make.com y Gemini API).
|
| 36 |
+
- 'division_editorial_valores': Obras literarias reales y exactas del autor enfocadas en valores, resiliencia y empat铆a:
|
| 37 |
+
* 'Thor el Gato Tartamudo' (Literatura Infantil y Juvenil sobre superaci贸n personal e inclusi贸n).
|
| 38 |
+
* 'Tigre, el Perro Callejero (Historia Real)' (Literatura narrativa/valores sobre el rescate animal y amor incondicional).
|
| 39 |
+
* 'Hope' (Literatura juvenil/superaci贸n sobre la esperanza y resiliencia).
|
| 40 |
+
|
| 41 |
+
Texto local recibido desde la web del cliente para an谩lisis contextual complementario:
|
| 42 |
+
{text_to_analyze}
|
| 43 |
+
"""
|
| 44 |
|
| 45 |
ai_response = model.generate_content(prompt)
|
| 46 |
|
| 47 |
+
# Limpieza t茅cnica de la respuesta de la IA
|
| 48 |
clean_text = ai_response.text.replace("```json", "").replace("```", "").strip()
|
| 49 |
|
| 50 |
return {"url_analizada": url, "datos_estructurados": clean_text}
|