Skill detail

real-estate-workflows

Useful for listing-content video production, but requires a specific technical pipeline.

MatchPossibleReviewed for real estate agents
Sourcebobby44-max/boston-luxury-re-producerExternal source
Reported installs8Popularity signal only

Inspect before use

Automated review checks relevance, not safety or endorsement. Read the source instructions before using this skill.

Saved source preview

SKILL.md

The saved excerpt is a snapshot from review. The external source remains the complete and most current version.

---
name: real-estate-workflows
description: End-to-end workflows for real estate content production. Use when orchestrating multi-step processes like URL-to-video generation, batch processing, or social media distribution. Coordinates Firecrawl, AI generation, and Remotion rendering.
allowed-tools: Read, Grep, Glob, Bash, Edit, Write
---

# Real Estate Workflows

## Core Pipeline

### URL → Video Workflow
```
[Listing URL Input]
       ↓
[Firecrawl Extraction]
       ↓
[Data Validation]
       ↓
[AI Script Generation]
       ↓
[TTS Voiceover (Optional)]
       ↓
[Remotion Render]
       ↓
[Upload to Storage]
       ↓
[Notify User]
```

## Workflow API

### Single Video Generation
```typescript
POST /api/workflow/generate-video
{
  listingUrl: "https://zillow.com/...",
  videoType: "property-showcase",
  options: {
    voiceover: true,
    music: "upbeat",
    branding: {
      agentName: "Jane Smith",
      logoUrl: "https://..."
    }
  }
}
```

### Batch Processing
```typescript
POST /api/workflow/batch
{
  urls: ["url1", "url2", "url3"],
  videoType: "social-short",
  options: { ... }
}
```

### Status Tracking
```typescript
GET /api/workflow/status/:jobId

{
  jobId: "job_abc123",
  status: "rendering",
  progress: 65,
  steps: [
    { name: "scrape", status: "complete", duration: 2.3 },
    { name: "script", status: "complete", duration: 4.1 },
    { name: "voiceover", status: "complete", duration: 8.2 },
    { name: "render", status: "in_progress", progress: 45 }
  ],
  estimatedCompletion: "2024-01-15T10:30:00Z"
}
```

## Detailed Rules

- **URL to Video**: See [rules/url-to-video.md](rules/url-to-video.md)
- **Batch Processing**: See [rules/batch-processing.md](rules/batch-processing.md)
- **Social Distribution**: See [rules/social-distribution.md](rules/social-distribution.md)

## Database Schema

### Video Jobs (Convex)
```typescript
defineTable({
  userId: v.string(),
  listingUrl: v.string(),
  videoType: v.string(),
  status: v.string(), // pending, scraping, generating, rendering, complete, failed
  progress: v.number(),
  propertyData: v.optional(v.any()),
  script: v.optional(v.string()),
  voiceoverUrl: v.optional(v.string()),
  videoUrl: v.optional(v.string()),
  thumbnailUrl: v.optional(v.string()),
  error: v.optional(v.string()),
  createdAt: v.number(),
  completedAt: v.optional(v.number()),
})
```

## Error Handling

| Error | Recovery |
|-------|----------|
| Scrape failed | Retry with fallback parser |
| AI timeout | Retry with shorter prompt |
| Render OOM | Reduce resolution, retry |
| Storage failed | Queue for later upload |

## Webhook Notifications

```typescript
// Configure in user settings
POST /webhooks/video-complete
{
  event: "video.complete",
  jobId: "job_abc123",
  videoUrl: "https://storage.../video.mp4",
  propertyAddress: "123 Main St",
  timestamp: "2024-01-15T10:30:00Z"
}
```

## Integrations

- **Firecrawl**: Property data extraction
- **Gemini AI**: Script generation
- **OpenAI TTS**: Voiceover synthesis
- **Remotion Lambda**: Video rendering
- **Supabase Storage**: Asset hosting
- **Convex**: Real-time job tracking
- **Clerk**: User authentication
- **Stripe**: Usage billing
Read the full source on GitHub (opens external page)
Context

Related work