Delete directory 'projects/salon-social-media-system'
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
*.mp4
|
||||
*.mov
|
||||
*.avi
|
||||
raw_footage/
|
||||
*.tmp
|
||||
.DS_Store
|
||||
@@ -1,22 +0,0 @@
|
||||
# Salon Social Media Production & Management System
|
||||
|
||||
**Hermes Agent Powered Pipeline for Phoenix Salon & Spa**
|
||||
|
||||
## Structure
|
||||
- agents/: Role prompts and subagent configs
|
||||
- docs/: Brand guidelines, calendar
|
||||
- prompts/: Reusable prompts
|
||||
- video/: Hyperframes + FFMPEG templates, clips
|
||||
- assets/: Images and approved media
|
||||
|
||||
## Full Pipeline
|
||||
1. Research (trends, local events)
|
||||
2. Drafting (brand voice)
|
||||
3. Video (clip, subtitle with Hyperframes, edit)
|
||||
4. Review/QA
|
||||
5. Postiz scheduling
|
||||
6. Analytics feedback loop
|
||||
|
||||
Cron-ready. Human approval via Telegram.
|
||||
|
||||
See hermes-automation for execution scripts.
|
||||
@@ -1,3 +0,0 @@
|
||||
# Agents & Subagents
|
||||
|
||||
Hermes role prompts for research, writer, video editor, QA, etc.
|
||||
@@ -1,3 +0,0 @@
|
||||
# Docs & Guidelines
|
||||
|
||||
Brand voice, content calendar, posting schedule for Phoenix Salon.
|
||||
@@ -1,16 +0,0 @@
|
||||
# Phoenix Salon & Spa Brand Voice Skill
|
||||
|
||||
## When to Use
|
||||
Use this skill for any content generation, drafting, or review in the Phoenix Salon social media pipeline.
|
||||
|
||||
## Procedure
|
||||
1. Warm, professional, empowering tone.
|
||||
2. Focus on client education, local community (Cameron Park/Placerville), ethical visuals.
|
||||
3. Content Pillars: Tips (60%), Social Proof (20%), Promotions (15%), Community (5%).
|
||||
4. Always include soft CTA for bookings.
|
||||
|
||||
## Examples
|
||||
See examples in video/ and social media/ folders.
|
||||
|
||||
## Verification
|
||||
Review for warmth and local relevance.
|
||||
@@ -1,42 +0,0 @@
|
||||
# Phoenix Salon Video Production
|
||||
|
||||
Simple, high-quality tools for making professional Reels.
|
||||
|
||||
## Goal
|
||||
Produce clean, on-brand 15–30 second vertical videos quickly without overcomplicating the process.
|
||||
|
||||
## Files in This Folder
|
||||
|
||||
| File | Purpose |
|
||||
|------|--------|
|
||||
| `hyperframes-reel-template.html` | Clean, production-ready HyperFrames template with good typography, logo placement, and timing structure |
|
||||
| `ffmpeg-helpers.sh` | Simple, reliable commands for clipping, subtitles, vertical formatting, and exporting |
|
||||
|
||||
## Recommended Workflow (Minimal)
|
||||
|
||||
1. **Clip** the best 15–20 seconds from raw footage
|
||||
2. **Add subtitles** (burn clean, readable captions)
|
||||
3. **Make vertical** (1080x1920)
|
||||
4. **Add logo** (optional but recommended)
|
||||
5. **Export** optimized for Instagram / TikTok
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Make sure ffmpeg-helpers.sh is executable
|
||||
chmod +x ffmpeg-helpers.sh
|
||||
|
||||
# Example full flow
|
||||
./ffmpeg-helpers.sh clip raw.mp4 00:00:08 00:00:18 part1.mp4
|
||||
./ffmpeg-helpers.sh burn_subtitles part1.mp4 captions.srt part1_subs.mp4
|
||||
./ffmpeg-helpers.sh make_vertical part1_subs.mp4 reel.mp4
|
||||
./ffmpeg-helpers.sh add_logo reel.mp4 logo.png final.mp4
|
||||
./ffmpeg-helpers.sh export_reel final.mp4 phoenix-reel.mp4
|
||||
```
|
||||
|
||||
## Notes
|
||||
- Keep raw footage outside of Git (use .gitignore)
|
||||
- For best results, record in good lighting with clear audio
|
||||
- Use the HyperFrames template when you want more animated captions or polished motion graphics
|
||||
|
||||
Ready to make great content for Phoenix Salon & Spa.
|
||||
@@ -1,42 +0,0 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# Phoenix Salon - Simple FFmpeg Helper Commands
|
||||
# Production-ready, no over-engineering
|
||||
# ============================================
|
||||
|
||||
# 1. Quick clip from raw footage (start time + duration)
|
||||
clip() {
|
||||
ffmpeg -i "$1" -ss "$2" -t "$3" -c:v libx264 -preset fast -crf 18 -c:a aac -b:a 128k "${4:-clip.mp4}"
|
||||
echo "✅ Clipped: ${4:-clip.mp4}"
|
||||
}
|
||||
|
||||
# 2. Burn clean subtitles (SRT file)
|
||||
burn_subtitles() {
|
||||
ffmpeg -i "$1" -vf "subtitles=$2:force_style='FontSize=48,PrimaryColour=&HFFFFFF&,OutlineColour=&H000000&,BorderStyle=3,Outline=2,Shadow=0'" -c:v libx264 -preset fast -crf 18 -c:a copy "${3:-with_subs.mp4}"
|
||||
echo "✅ Subtitles burned: ${3:-with_subs.mp4}"
|
||||
}
|
||||
|
||||
# 3. Resize to perfect vertical 9:16 for Reels/TikTok
|
||||
make_vertical() {
|
||||
ffmpeg -i "$1" -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -preset fast -crf 18 -c:a aac -b:a 128k "${2:-vertical.mp4}"
|
||||
echo "✅ Made vertical 9:16: ${2:-vertical.mp4}"
|
||||
}
|
||||
|
||||
# 4. Add logo (bottom center, with padding)
|
||||
add_logo() {
|
||||
ffmpeg -i "$1" -i "$2" -filter_complex "[1]scale=280:-1[logo];[0][logo]overlay=(W-w)/2:H-h-120" -c:v libx264 -preset fast -crf 18 -c:a copy "${3:-with_logo.mp4}"
|
||||
echo "✅ Logo added: ${3:-with_logo.mp4}"
|
||||
}
|
||||
|
||||
# 5. Full simple export (optimized for Instagram/TikTok)
|
||||
export_reel() {
|
||||
ffmpeg -i "$1" -c:v libx264 -preset slow -crf 19 -c:a aac -b:a 128k -movflags +faststart "${2:-final_reel.mp4}"
|
||||
echo "✅ Exported optimized reel: ${2:-final_reel.mp4}"
|
||||
}
|
||||
|
||||
# Quick usage examples:
|
||||
# clip raw.mp4 00:00:12 00:00:18 best_part.mp4
|
||||
# burn_subtitles clip.mp4 captions.srt final.mp4
|
||||
# make_vertical final.mp4 reel.mp4
|
||||
# add_logo reel.mp4 logo.png branded.mp4
|
||||
# export_reel branded.mp4 phoenix-reel.mp4
|
||||
@@ -1,142 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Phoenix Salon Reel Template</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Playfair+Display:wght@700&display=swap');
|
||||
|
||||
:root {
|
||||
--salon-gold: #C5A26F;
|
||||
--salon-dark: #2C2522;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Inter', system_ui, sans-serif;
|
||||
}
|
||||
|
||||
.heading-font {
|
||||
font-family: 'Playfair Display', Georgia, serif;
|
||||
}
|
||||
|
||||
.reel-container {
|
||||
width: 1080px;
|
||||
height: 1920px;
|
||||
background: #1a1816;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.4);
|
||||
}
|
||||
|
||||
.caption {
|
||||
font-size: 72px;
|
||||
line-height: 1.1;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
text-shadow: 0 4px 20px rgba(0,0,0,0.6);
|
||||
padding: 0 60px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.caption-small {
|
||||
font-size: 48px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.logo {
|
||||
position: absolute;
|
||||
bottom: 80px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 42px;
|
||||
font-weight: 700;
|
||||
color: #C5A26F;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
|
||||
.section {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
padding: 0 80px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-zinc-950 flex items-center justify-center min-h-screen p-8">
|
||||
|
||||
<!-- REEL PREVIEW -->
|
||||
<div class="reel-container mx-auto" id="reel">
|
||||
|
||||
<!-- Background Video / Image Placeholder -->
|
||||
<div id="background"
|
||||
class="absolute inset-0 bg-cover bg-center"
|
||||
style="background-image: url('https://picsum.photos/id/1011/1080/1920');">
|
||||
<div class="absolute inset-0 bg-black/40"></div>
|
||||
</div>
|
||||
|
||||
<!-- Top Branding -->
|
||||
<div class="absolute top-0 left-0 right-0 p-8 flex justify-between items-center z-10">
|
||||
<div class="flex items-center gap-x-3">
|
||||
<div class="w-9 h-9 rounded-full bg-[#C5A26F] flex items-center justify-center">
|
||||
<i class="fa-solid fa-spa text-[#2C2522] text-xl"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-white text-2xl font-semibold tracking-tight">PHOENIX</div>
|
||||
<div class="text-[#C5A26F] text-xs -mt-1 tracking-[3px]">SALON & SPA</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Main Caption Area -->
|
||||
<div class="section flex flex-col justify-center h-full z-20" style="top: 28%;">
|
||||
|
||||
<!-- Hook Line -->
|
||||
<div id="hook"
|
||||
class="caption heading-font mb-6 opacity-0"
|
||||
style="animation: fadeUp 0.6s forwards 0.3s;">
|
||||
Your scalp deserves
|
||||
<span class="text-[#C5A26F]">this.</span>
|
||||
</div>
|
||||
|
||||
<!-- Body Text -->
|
||||
<div id="body-text"
|
||||
class="caption caption-small opacity-0"
|
||||
style="animation: fadeUp 0.6s forwards 0.9s; max-width: 820px; margin: 0 auto;">
|
||||
60 seconds to healthier hair this summer
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Bottom CTA -->
|
||||
<div class="absolute bottom-0 left-0 right-0 p-8 z-20">
|
||||
<div class="flex flex-col items-center">
|
||||
<div id="cta"
|
||||
class="bg-white text-[#2C2522] px-10 py-4 rounded-2xl font-semibold text-3xl tracking-tight mb-4 opacity-0"
|
||||
style="animation: fadeUp 0.5s forwards 1.6s;">
|
||||
Book now
|
||||
</div>
|
||||
<div class="text-white/70 text-xl">Cameron Park • Placerville</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Logo -->
|
||||
<div class="logo tracking-[6px] opacity-90">PHOENIX</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Tailwind script for any dynamic classes if needed
|
||||
function updateReelContent(hook, body, cta) {
|
||||
document.getElementById('hook').innerHTML = hook;
|
||||
document.getElementById('body-text').innerHTML = body;
|
||||
document.getElementById('cta').innerHTML = cta;
|
||||
}
|
||||
|
||||
// Example: updateReelContent("Summer hair rescue", "Start with a scalp treatment", "Book your spot");
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,70 +0,0 @@
|
||||
# Salon Reel Video Pipeline Skill
|
||||
|
||||
**When to use this skill:**
|
||||
You are producing short vertical Reels (9:16) for Phoenix Salon & Spa social media. The goal is fast, high-quality clips that educate, engage, and drive bookings. Typical length: 15-30 seconds.
|
||||
|
||||
**Core Principles (from OpenMontage patterns):**
|
||||
- Break every video into clear stages with quality gates.
|
||||
- Prefer real client footage + tasteful enhancements over heavy AI generation.
|
||||
- Human approval is required before final render and before posting.
|
||||
- Use HyperFrames for polished subtitles/overlays when possible; fall back to FFmpeg for speed.
|
||||
|
||||
**Pipeline Stages**
|
||||
|
||||
1. **Intake & Planning**
|
||||
- Understand the goal of the Reel (educational tip, service highlight, promotion, behind-the-scenes).
|
||||
- Identify key moments in raw footage or script.
|
||||
- Decide on music mood, text overlays, and CTA.
|
||||
|
||||
2. **Clipping & Trimming**
|
||||
- Extract the strongest 8-25 second segment(s).
|
||||
- Use FFmpeg for fast, precise cuts:
|
||||
```bash
|
||||
ffmpeg -i input.mp4 -ss 00:00:05 -t 15 -c copy clip.mp4
|
||||
```
|
||||
- Keep multiple options if unsure.
|
||||
|
||||
3. **Transcription & Subtitling**
|
||||
- Transcribe spoken content.
|
||||
- Create big, readable, timed subtitles (karaoke or highlight style preferred for Reels).
|
||||
- Use HyperFrames when high visual polish is needed.
|
||||
- Burn subtitles with FFmpeg when speed matters:
|
||||
```bash
|
||||
ffmpeg -i clip.mp4 -vf "subtitles=subs.srt:force_style='Fontsize=24,PrimaryColour=&H00FFFFFF'" -c:a copy output.mp4
|
||||
```
|
||||
|
||||
4. **Visual Enhancement & Branding**
|
||||
- Add Phoenix Salon logo (lower third or corner).
|
||||
- Color grade lightly for warm, relaxing spa feel.
|
||||
- Add subtle transitions and motion graphics via HyperFrames if time allows.
|
||||
- Ensure vertical 1080x1920 output.
|
||||
|
||||
5. **Audio Polish**
|
||||
- Normalize audio levels.
|
||||
- Add royalty-free background music that matches the mood (calm for education, upbeat for promotions).
|
||||
- Duck music under voice.
|
||||
|
||||
6. **Quality Gate (Self-Review)**
|
||||
- Watch the full clip.
|
||||
- Check: readability of text, brand consistency, pacing, audio clarity, no spelling errors.
|
||||
- Flag anything that feels off-brand or low quality.
|
||||
|
||||
7. **Human Approval Gate**
|
||||
- Present the rendered Reel + description of changes to the human.
|
||||
- Only proceed to export/finalize after explicit approval.
|
||||
|
||||
**Output Requirements**
|
||||
- Final file must be vertical (1080x1920), under 30 seconds, H.264, good compression for social.
|
||||
- Include caption text ready for Postiz.
|
||||
- Log what worked well for future learning.
|
||||
|
||||
**Tools to Use**
|
||||
- Terminal skill for FFmpeg commands
|
||||
- HyperFrames skill for advanced composition and subtitles
|
||||
- Browser or file tools for assets (logo, music)
|
||||
|
||||
**Pitfalls to Avoid**
|
||||
- Over-editing (keep it natural and authentic for a salon).
|
||||
- Tiny unreadable text on mobile.
|
||||
- Forgetting the CTA at the end.
|
||||
- Posting without human review on brand-sensitive content.
|
||||
Reference in New Issue
Block a user