Estudio de Imágenes de Comida para Restaurantes
Convierte instantáneas reales mixtas de restaurantes en un pequeño conjunto de fotografías coherente para un sitio web. Utiliza la foto real como autoridad factual del plato. Usa el Sistema de Fotografía del restaurante como autoridad para el ángulo de cámara, composición, luz, fondo, color, recorte y presentación orientada al cliente.
No conserves un ángulo de fuente débil simplemente porque sea real. Cuando una instantánea desde arriba, desordenada o inconsistente no encaje en el sistema web, usa reference-restage para presentar el mismo plato desde la cámara fija orientada al cliente. Nunca permitas que el reajuste cambie los hechos del plato.
Lee references/food-image-playbook.md antes de recolectar, planificar, solicitar, generar o revisar. Copia las estructuras empaquetadas de Manifiesto V3 y Bloqueo de Estilo en lugar de inventar una orden de trabajo.
Elige el Modo
- Recolectar: Recupera candidatos reales de un solo restaurante y guarda la procedencia.
- Auditar: Verifica la identidad del restaurante, la visibilidad del plato, el ángulo de la fuente y el riesgo de reajuste. No generes.
- Crear: Bloquea un Sistema de Fotografía, enruta cada fuente, genera una foto diseñada por fuente real y conserva el tiempo.
- Reparar: Regenera desde la fuente real y el Sistema de Fotografía bloqueado después de diagnosticar una compuerta fallida.
- Revisar: Conserva el artefacto canónico de fuente/salida y las cinco decisiones de QA automáticamente.
Deja que $restaurant-demo-builder establezca la evidencia comercial, la audiencia, el diseño del sitio web y los espacios para imágenes de una Demo completa. Usa esta Habilidad para el sistema de fotografía de comida y los activos.
Mantén la Revisión de Evidencia No Bloqueante
Trata las hojas canónicas de candidatos, fuentes y fuente versus salida como registros de evidencia automáticos, no como solicitudes de aprobación. Una vez que existe una hoja de fuente canónica, registra cada fuente elegible con status: recorded, reviewer: workflow, valida la etapa generate y continúa con la generación de imágenes sin esperar al usuario. Después del QA de salida, registra la comparación canónica de la misma manera y continúa con la compuerta de la Demo privada.
Detente solo cuando la evidencia o la validación fallen, exista un registro actual de changes-requested, la fuente no pueda respaldar verazmente la imagen propuesta, o el usuario pida explícitamente que la ejecución actual se pause. La inspección humana sigue estando disponible más tarde y puede crear changes-requested; nunca es un requisito previo para la generación. Mantén la confirmación factual del propietario y los derechos de publicación como compuertas de lanzamiento separadas.
Aplica el Contrato del Manifiesto V3
Exige que cada imagen de comida de la Demo cumpla todas estas reglas:
- Vincular exactamente un
served-dish-photovisual principal único del mismo restaurante. - Guardar la fuente sin modificar localmente con la identidad de la plataforma, URL original y SHA-256.
- Suministrar esa fuente real a imagegen. Nunca uses generación de comida solo con indicaciones.
- Registrar
source_assessment.camera_view, ajuste orientado al cliente y riesgo de detalles ocultos. - Completar un
photography_systema nivel de restaurante antes de la generación. - Usar
constrained-editsolo cuando la fuente ya encaje en ese sistema. - Usar
reference-restagecuando la cámara, composición o presentación orientada al cliente deba cambiar. - Bloquear los reajustes que cambien el ángulo con alto riesgo de detalles ocultos hasta que haya otra vista real disponible.
- Aceptar una vista corroborante solo cuando sea otro
served-dish-photoauditado en vivo del mismo restaurante con un registro de coincidencia exacta del mismo plato. - Registrar un plan de transformación por plato y los ajustes de apetito permitidos.
- Registrar el inicio, finalización y duración de imagegen.
- Decodificar completamente la salida, registrar su ancho y alto reales, y verificar su relación de píxeles con el Sistema de Fotografía.
- Pasar las cinco compuertas separadas: fidelidad, consistencia de estilo, optimización del apetito, señales de IA y preparación para el sitio web.
- Guardar los artefactos canónicos de fuente real y fuente versus foto diseñada.
- Pasar la etapa de
demodel Manifiesto antes de copiar la salida a un sitio web.
Si no existe una foto real creíble de un plato, mantén el espacio liderado por texto, usa una imagen no alimenticia separadamente aprobada, elige otro plato fotografiado o solicita una foto del propietario.
Trata una foto del propietario como un candidato de adquisición futuro, no como un elemento visual principal, hasta que tenga un registro de recolección implementado, decodificación de píxeles completa, hoja de candidato canónica y auditoría de candidato equivalente a Apify/Masa. El Manifiesto V3 actualmente solo admite fotos auditadas de Apify Google Maps y Masa como elementos visuales principales.
Prepara la Orden de Trabajo
Crea output/food-image-studio/<restaurant-slug>/ con sources/, prompts/, drafts/, selected/ y review/. Usa:
- assets/image-manifest-template.json para
image-manifest.json. - assets/style-lock-template.md para
style-lock.md.
Usa nombres de archivo ASCII en minúsculas. Nunca pongas tokens de API, claves privadas o secretos de cuenta en estos archivos.
En los comandos, resuelve <food-image-skill> desde el localizador de habilidades disponibles de esta Habilidad.
Recolecta Referencias Reales de Platos
Ejecuta el recolector solo para el restaurante seleccionado:
APIFY_TOKEN=... python3 <food-image-skill>/scripts/collect_real_references.py apify \
--place-id <google-place-id> \
--max-images 20 \
--output-dir <work-order>
python3 <food-image-skill>/scripts/collect_real_references.py masa \
--store-id <masa-store-id> \
--item-name <exact-menu-item-name> \
--output-dir <work-order>
Para una URL de Maps, también proporciona el ID de lugar conocido de forma independiente; el registro devuelto debe coincidir:
APIFY_TOKEN=... python3 <food-image-skill>/scripts/collect_real_references.py apify \
--maps-url <exact-google-maps-place-url> \
--expected-place-id <google-place-id> \
--output-dir <work-order>
El recolector decodifica completamente los píxeles JPEG, PNG y WebP y rechaza fuentes por debajo de 300 px en el borde corto o 150,000 píxeles totales. Requiere que Apify devuelva el ID de lugar bloqueado y que Masa devuelva el StoreID solicitado en la respuesta o en el contexto del elemento del menú. Nunca trata el identificador solicitado solo como evidencia.
Las importaciones JSON sin conexión son solo material de auditoría reproducible. Conservan su hash de entrada y el nivel offline-audit-only, pero no pueden ser promovidas ni entrar en una Demo.
Registra la Auditoría Independiente de Candidatos
Renderiza la hoja canónica de candidatos no clasificados:
python3 <food-image-skill>/scripts/make_candidate_sheet.py \
--source-index <work-order>/source-index.json \
--out <work-order>/review/candidate-sources.svg
Inspecciona cada candidato local con view_image y la hoja conservada. Rechaza capturas de pantalla, menús, marcadores de posición, imágenes de archivo, imágenes sintéticas, comida oscurecida y listados incorrectos. Registra la clasificación como un paso de auditoría automática; no te detengas para la aprobación del usuario:
python3 <food-image-skill>/scripts/record_candidate_review.py \
--source-index <work-order>/source-index.json \
--candidate-sheet <work-order>/review/candidate-sources.svg \
--candidate-id <candidate-id> \
--out <work-order>/review/<candidate-id>.json \
--status recorded \
--reviewer workflow \
--classification served-dish-photo \
--restaurant-match verified \
--restaurant-match-notes <identity-evidence> \
--dish-visibility served-dish-visible \
--visual-notes <visible-served-dish-evidence> \
--notes <audit-summary>
El registro de auditoría bloquea el ID del candidato, el hash de la fuente sin modificar, el hash del índice de fuentes, el hash de la hoja canónica de candidatos, el revisor, la marca de tiempo, la clasificación y los hallazgos visuales. Registra los candidatos que no son comida bajo su clasificación real y no los promociones. Un registro posterior de changes-requested bloquea inmediatamente la promoción y la validación de la Demo.
Evalúa la Instantánea Antes de Elegir un Modo
Registra la vista de la cámara de la fuente como overhead, near-overhead, three-quarter, low-angle, straight-on o unknown. Luego registra:
fit: la fuente ya coincide con el Sistema de Fotografía; permiteconstrained-edit.restage-required: el plato es factual pero el ángulo o la composición no están orientados al cliente; requierereference-restage.unusable: la comida está demasiado oscurecida o es incierta; bloquea la generación.
No llames fit a una instantánea desde arriba cuando el sistema bloqueado orientado al cliente es de tres cuartos de mesa. El fallo de Sake Sushi es el antipatrón canónico: una fuente real desde arriba no puede pasar simplemente porque una edición mantenga la misma composición desde arriba.
El validador aplica la compatibilidad de la familia de cámara. Las fuentes overhead y near-overhead no pueden marcarse como fit para three-quarter-tabletop, low-tabletop o straight-on; las vistas incompatibles deben ser restage-required, establecer angle_change_required: true y usar reference-restage.
Promociona un candidato por salida propuesta:
python3 <food-image-skill>/scripts/promote_candidate.py \
--source-index <work-order>/source-index.json \
--candidate-review <work-order>/review/<candidate-id>.json \
--manifest <work-order>/image-manifest.json \
--candidate-id <candidate-id> \
--dish-id <dish-id> \
--dish-name <dish-name> \
--restaurant-name <restaurant-name> \
--restaurant-slug <restaurant-slug> \
--location <location> \
--google-place-id <place-id> \
--dish-match-status <exact-or-category-only> \
--dish-match-notes <name-or-category-evidence> \
--source-camera-view overhead \
--customer-facing-fit restage-required \
--hidden-detail-risk medium \
--composition-notes <why-the-snapshot-needs-restaging> \
--angle-change-required yes \
--generation-mode reference-restage
Usa --masa-store-id en lugar de --google-place-id para Masa.
La promoción solo acepta un recorded / audit-record actual clasificado como served-dish-photo de una colección live-verified. Copia la procedencia original completa y los metadatos de la fuente en el Manifiesto. Los archivos de índice de fuentes y revisión de candidatos permanecen vinculados por hash y se revalidan en cada etapa posterior.
Trata live-verified como evidencia atestiguada por el flujo de trabajo, no una firma criptográfica de Apify o Masa. Alguien con acceso de escritura a la orden de trabajo puede editar el JSON local y recalcular los hashes locales. Cuando se dispute la procedencia o antes de un lanzamiento público que dependa de ese activo, vuelve a ejecutar la recolección del proveedor en vivo, compara la identidad del restaurante devuelta y el hash de la imagen, o reemplázalo con un activo del propietario aprobado que haya pasado una futura auditoría de ingesta del propietario. Nunca describas la cadena local como a prueba de manipulaciones.
Bloquea un Sistema de Fotografía Diseñado
Completa tanto la photography_system estructurada como style-lock.md antes de la generación. Bloquea una familia de cámara principal para el conjunto del restaurante, normalmente un sistema three-quarter-tabletop repetible alrededor de 35–45 grados para fotografía de comida casual orientada al cliente. Registra una tolerancia de ángulo no mayor a 15 grados.
Bloquea todas estas variables:
- ángulo objetivo, altura de la cámara, sensación del lente y escala del sujeto;
- relación de aspecto, recorte y espacio negativo del sitio web;
- superficie, familia de fondo y restricción de accesorios;
- dirección de la luz, calidad de la luz y carácter de la sombra;
- exposición, balance de blancos, saturación y contraste;
- tratamiento del apetito e imperfecciones reales aceptables;
- las señales naturales requeridas para evitar un aspecto renderizado por IA.
Usa una familia de cámara principal en todo el conjunto. No alternes casualmente entre imágenes desde arriba, de frente y de tres cuartos.
Planifica la Optimización del Apetito Veraz
Registra los ajustes específicos del plato antes de las indicaciones. Permite solo mejoras respaldadas por la fuente:
- aumentar modestamente la exposición y corregir el balance de blancos;
- hacer que el pan o la corteza existentes sean naturalmente más cálidos y dorados;
- aclarar un sellado existente, borde crujiente, color de verdura o brillo de salsa;
- limpiar detalles de fondo distractores y mejorar la colocación del plato;
- preservar la variación de servicio ordinaria, cortes desiguales y asimetría de la fuente.
No inventes dorado, marcas de parrilla, guarnición, ingredientes, salsa, vapor, porción, recipiente o emplatado de lujo. "Más apetitoso" es un objetivo de presentación, no permiso para rediseñar la comida.
Registra el Artefacto de Fuente Automáticamente
Requiere que el Sistema de Fotografía estructurado, el Bloqueo de Estilo y cada plan de transformación estén completos antes de crear la hoja de fuente:
python3 <food-image-skill>/scripts/validate_manifest.py \
--manifest <image-manifest.json> \
--stage plan
Luego crea y conserva la hoja de fuente canónica y regístrala sin pausarte:
python3 <food-image-skill>/scripts/make_contact_sheet.py \
--manifest <image-manifest.json> \
--stage source \
--out <work-order>/review/source-review.svg
python3 <food-image-skill>/scripts/record_review.py \
--manifest <image-manifest.json> \
--dish-id <dish-id> \
--gate source \
--status recorded \
--reviewer workflow \
--notes <source-angle-route-and-evidence-notes>
No te detengas después de renderizar la hoja. Registra cada fuente elegible automáticamente, reemplaza todos los marcadores TODO de las indicaciones, ejecuta validate_manifest.py --stage generate y continúa directamente a imagegen cuando la validación pase.
Genera la Foto Diseñada
Usa $imagegen. Proporciona el elemento visual principal en cada llamada y agrega vistas corroborantes reales cuando el riesgo de detalles ocultos lo requiera. En cada indicación:
Para cada ID corroborante, registra source_assessment.supporting_source_matches.<source-id> con status: exact y notas específicas del mismo plato. Incluye solo esas vistas reales auditadas después del elemento visual principal en output.input_source_ids; los documentos del menú, fotos del lugar, imágenes de archivo e imágenes sintéticas no pueden satisfacer el riesgo de detalles ocultos.
- Nombra el ID de la fuente y
constrained-editoreference-restage. - Nombra la familia de cámara objetivo y el ángulo objetivo explícitamente.
- Trata la fuente real como verdad del plato y el Sistema de Fotografía como verdad de presentación.
- Repite los hechos verificados de la comida, cantidades, porción, guarniciones, salsa, punto de cocción y recipiente.
- Describe solo la composición planificada y las mejoras de apetito.
- Preserva las irregularidades reales y la presentación ordinaria de un restaurante independiente.
- Prohíbe el brillo plástico, textura cerosa, geometría repetida, simetría perfecta, bordes deformados, efectos falsos, texto y logotipos.
- Haz una sola imagen por fuente. Cada fuente real produce exactamente una imagen diseñada.
...
[truncado para traducción]