Structure OS OS

The operating system that transforms ideas into assets.

by Pen Of Tales Publications, LLC

🔥 Spots claimed: 153 of 500 347 left
⏳ Limited Time Only — First 500 People
Our Best Offer — Lock In Before It's Gone
These rates are available to the first 500 members only. Once the offer ends, pricing increases.
👑 Lifetime Access
$249
one-time payment
After offer ends:
$99/mo subscription
⚡ Monthly — Rate Locked
$29/mo
guaranteed 24 months
After offer ends:
$39+/mo based on package
*Lifetime access is for the current version of Structure OS. Future major updates may be purchased separately at a discounted rate when available.  Monthly subscription rate of $29/mo is guaranteed for 24 months from date of first payment. Includes the full Ultimate package and all free upgrades during that period.
🌱
Free Starter
FREE
Register to start
  • ✓ 15 TTS lines/week
  • ✓ 2-week access window
  • ✓ Browser TTS (no API needed)
  • ✓ Script editor
  • ✓ Dashboard & Series
  • ✗ AI Agents locked
  • ✗ Export locked
  • ✗ Client Services locked
→ Register free, upgrade anytime
Most Popular
Monthly
$29/mo
Cancel anytime
  • ✓ Unlimited TTS generation
  • ✓ All 5 AI Agents
  • ✓ AI Copywriter & Scripts
  • ✓ Client Services portal
  • ✓ Full export engine
  • ✓ Firebase cloud sync
  • ✓ Priority support
→ Instant access after payment
👑
Lifetime
$249 once
Own it forever
  • ✓ Everything in Monthly
  • ✓ All future updates included
  • ✓ White-label option
  • ✓ VIP support
  • ✓ Ollama/self-host ready
  • ✓ Commercial license
→ Best value — pay once, use forever

Already have an access code?

Structure OS OS
The operating system that transforms ideas into assets.
Loading your content & media studio...
Structure OS
?

⚡ Intelligence

×
📊 Session Stats
Episodes0
Characters0
Series0
Deals0
Total Revenue$0
🔐 Account
License
Sync
User
🤖 AI Agents
Competitive
SEO
Viral
Promotion
Audience
⚡ Quick Launch
🎛️ Orchestrator
Monitoring app state...
No active processes.
📡 Trendmaster
Click below for a quick market pulse.

AAS Monetization

Score: --
Trajectory: --
Flags: --

Trendmaster

Signal: --
Comps: --
Market Window: --

Quality Agent

Structure: --
Pacing: --
Continuity: --

Orchestrator

State: --
Last Trigger: --
Runtime Loop: Active

Priority Mode

Mode: Autonomous
Source: System

Dashboard

Your podcast production command center

0
Episodes Generated
$0.00
Total Investment
$0
Series Valuation
Quick Actions
📺 My Series
0

No series yet. Create your first series to get started!

Recent Episodes

No episodes yet. Start creating in Quick Start!

Quick Start

Generate podcast episodes in minutes

🚨 Emergency: Fix All Engines
INSTANT FIX

Switch all characters to one engine instantly

Episode Production
OPTION B
Generate Audio
0%
Ready to generate...
🎧 Audacity Integration
PRO

Export your generated audio directly to Audacity for professional editing

Character Vault

Manage and customize character voices

📺 Active Series
Birthday Suit
Each series has its own character vault. Characters are saved separately for each show.
🔍 Script Optimizer & Character Detector
SMART
Your Characters

No characters yet. Use Quick Start to detect characters from your script.

Bulk Actions
Use this if you see errors like "GB-AbbiNeural" or missing voice prefixes

Series Manager

Manage your podcast series metadata and settings

Series Metadata
📚 Series Library
0 Series

No saved series yet. Create your first series above!

Episodes
0 Episodes

No episodes yet. Generate your first episode in Quick Start!

Settings

Configure your TTS engines and preferences

Azure Speech API
RECOMMENDED
Get from: Azure Portal → Speech Services → Keys
OpenAI TTS
Google Cloud TTS
Get from: Google Cloud Console → Enable Text-to-Speech API
ElevenLabs TTS
29 Premium Voices
Get from: ElevenLabs Dashboard → Profile → API Keys
Amazon Polly
30+ Voices
Get from: AWS IAM Console → Users → Security Credentials
YouTube Integration
AUTO-UPLOAD
Get API Key: Google Cloud Console → Enable YouTube Data API v3
Social Media Integration
MULTI-PLATFORM

📘 Facebook

📸 Instagram

🐦 Twitter/X

🎵 TikTok

💼 LinkedIn

🧠 Anthropic Claude AI
COPYWRITING ENGINE

Powers AI Copywriter, content generation, and Client Services intelligence. Get your key at console.anthropic.com

Console → API Keys → Create Key. Usage billed per-token (very affordable).
🤖 AI Engine
● ACTIVE
☁️ Firebase Cloud Sync
DEVICE SYNC

Sync your data across all devices in real-time. Requires a free Firebase project. console.firebase.google.com → Create project → Add web app → Copy config below.

Setup (5 min):
1. Go to Firebase Console → New Project → name it "Structure OS"
2. Enable Authentication → Sign-in method → Email/Password → Enable
3. Enable Firestore → Create database → Start in test mode
4. Project Settings → Your apps → Add web app → Copy the config object
5. Paste each value below and click Save

📊 Analytics Dashboard

Full production performance, cost analysis & series valuation

0
Total Episodes
0
Lines Generated
$0.00
Total Cost
0
Active Series
0
Episodes / Week
95%
vs Studio Cost
💰 Cost Analysis
Avg Cost / Episode $0.00
Avg Cost / Line $0.00
Traditional Studio Cost $0.00
💚 Total Savings $0.00
🎙️ Engine Usage

Generate episodes to see engine breakdown.

📋 Episode History

No episodes generated yet.

📈 Series Performance
NAA$ & SAA$

Generate episodes to see series valuation.

⏱️ Production Timeline

No production history yet.

📱 Social Media Manager

Generate platform-optimized content and open each platform ready to paste

✨ Smart Content Generator
PLATFORM OPTIMIZED
📜 Post History
0 POSTS

No posts saved yet.

💡 Content Ideas
STRATEGY

Click to load content ideas based on your series.

0
0
0

Social Media Intelligence

Ride trends and go viral at the perfect moment

🔥 Trending Now
127
BookTok Mentions
↑89% vs last week
2.3K
Reddit Engagement
47K
Twitter Reach
78% positive

🔥 Viral Potential Score

8.7/10
✅ Your Genre: +34% interest (business drama)
✅ Similar Shows: +23% growth
Opportunity: Strike now (trend peak: 7 days)

💰 Monetization Tracker

Track real revenue, manage streams, and see your full earning potential

$0
Monthly Revenue
$0
Annual Run Rate
0
Active Streams
$0
12-Month Projected
➕ Add Revenue Stream
💰 Revenue Streams

No revenue streams tracked yet. Add your first one above.

🚀 Recommended Stack for Pen Of Tales
CURATED

Based on your podcast + publishing + Structure OS ecosystem — ranked by revenue potential and ease of setup.

🎯 Sponsor Rate Calculator
30-Second Pre-Roll
$0
60-Second Mid-Roll
$0
Full Episode Sponsorship
$0
Monthly Potential (all eps)
$0

🧠 Neural Copywriting Agency

Professional-grade copywriting from research to conversion - Better than any AI tool or agency

💎 Strategic Copywriting Command Center
AGENCY-LEVEL
🔍 Market Research & Strategy
🎯 Hook & Angle Generator
Generate attention-grabbing angles

🎬 Professional Scriptwriter

WRITE LIKE A PROFESSIONAL - Hollywood-style screenplay formatting with auto-detection

✨ Intelligent Script Builder
AUTO-DETECT EVERYTHING

Professional screenplay formatting with automatic character detection, emotion analysis, and SFX cue recognition. Your scripts will integrate seamlessly with Character Vault, Voice engines, and all Structure OS features.

Script Editor
FORMATTING GUIDE:
Scene Heading:
INT. LOCATION - TIME
EXT. LOCATION - TIME
Character:
CHARACTER NAME
(on next line: dialogue)
Parenthetical:
(emotion or action)
before dialogue
Sound Effects:
[SFX: description]
Auto-detected!
📤 Export Options

Exports maintain professional formatting and can be opened in Final Draft, WriterDuet, Highland, and other industry-standard software.

👁️ Live Preview
Write your script and click "Refresh" to see formatted preview

⚡ Automation Engine

One-click script-to-audio production - The Magic Button

🎬 Script-to-Audio Automation
ONE-CLICK PRODUCTION

Transform professionally formatted scripts into production-ready audio automatically. Detects characters, emotions, SFX, and generates complete episode timeline.

⚙️ Automation Settings

📅 Content Calendar

Professional production scheduling and deadline management

📊 Production Dashboard
0
Due Today
0
In Progress
0
Overdue
0
Completed
📋 All Content Items

🎭 Brand Voice Analyzer

Ensure professional consistency across all content

🧬 Voice Profile Builder
✅ Voice Consistency Checker

📚 Swipe File Library

Your professional copywriter's secret weapon

➕ Add to Swipe File
🔍 Search Swipe Files

⚡ Template Library

Speed multiplier for repetitive tasks

➕ Create Template
💡 Tip: Use variables like {{EPISODE_NUMBER}}, {{SHOW_NAME}}, {{CTA_LINK}} for dynamic content
📋 Your Templates

☁️ Cloud Storage & Export

Save and sync to Dropbox, Google Drive, or local storage

🔗 Connect Cloud Services
📁 Google Drive
Not connected
📦 Dropbox
Not connected
💾 Local Storage
Always available
📤 Export Project Data
📥 Import Project Data
⚠️ Note: Importing will merge with existing data. Duplicate items will be skipped.
⚙️ Auto-Sync Settings

🤖 AI Agent Dashboard

Your autonomous AI team working 24/7 to grow your business

⚡ Agent Control Center
AUTONOMOUS TEAM

Your AI agents work autonomously to research competitors, optimize your content, find promotional opportunities, grow your audience, and drive sales - all for $0.

0
Agents Active
0
Tasks Completed
0
Insights Found
🔍
Competitive Intelligence Agent
Analyzes bestsellers, top podcasts, successful patterns
⏸️
📈
SEO Optimization Agent
Keywords, rankings, search visibility optimization
⏸️
🔥
Viral Growth Agent
Social media strategy, viral patterns, engagement optimization
⏸️
📢
Promotion Agent
Finds free/cheap promotional opportunities, generates campaigns
⏸️
👥
Audience Discovery Agent
Finds target demographics, communities, partnership opportunities
⏸️
💰
Revenue Optimization Agent
Pricing, monetization, upsells, revenue maximization
⏸️
📋 Recent Agent Activity

🔍 Competitive Intelligence Agent

Autonomous research on bestsellers, top podcasts, and winning patterns

⚙️ Agent Configuration

📈 SEO Optimization Agent

Autonomous keyword research, ranking optimization, and search visibility

⚙️ SEO Agent Configuration

🔥 Viral Growth Agent

Social media strategy, viral patterns, and engagement optimization

⚙️ Viral Agent Configuration

📢 Promotion Agent

Finds free/cheap promotional opportunities and generates campaigns

⚙️ Promotion Agent Configuration

👥 Audience Discovery Agent

Finds target demographics, communities, and growth opportunities

⚙️ Audience Agent Configuration

💰 Revenue Optimization Agent

Pricing strategy, monetization opportunities, and revenue maximization

⚙️ Revenue Agent Configuration

Portfolio Manager

Track all your shows in one place

3
Active Shows
$24,250
Total Portfolio Value
127
Total Episodes
Your Shows
Shared Resources

Licensing Marketplace

Turn your content into passive income streams

💎 Your Content is Valuable

Estimated Licensing Value:

$15,000 - $85,000
Based on your 50-episode series + quality metrics

Markets Interested in Your Content:

Active Licenses
No active licenses yet. Submit your first content above!

Collaboration Hub

Scale beyond solo production - build a team

Your Team
D
Don (You)
Owner • Producer • Director
ADMIN
💰 Revenue Sharing Calculator
Producer (You) $250.00
Voice Actor $150.00
Editor $100.00

Audience Intelligence

Know your listeners better than anyone else

👥 Listener Demographics

Age Range

18-24: 12%
25-34: 38%
35-44: 27%
45-54: 18%
55+: 5%

Gender Split

Female: 65%
Male: 33%
Other: 2%

Top Locations

🇺🇸 United States: 71%
🇬🇧 United Kingdom: 12%
🇨🇦 Canada: 8%
🇦🇺 Australia: 5%
⏰ Listening Patterns
💡 Tip: Release episodes Tuesday 9am for maximum engagement

🎨 AI Studio

AI-powered creative tools for images, stories & research

🖼️ AI Image Generation
GEMINI / CLAUDE

Generate cover art, social media graphics, character portraits & more using AI

📚 Story Development & Research
AI-POWERED

Use AI to develop plots, characters, dialogue and research story elements

📖
Plot Generator
Generate unique story ideas & plot outlines
👤
Character Builder
Create detailed character backstories & profiles
💬
Dialogue Suggestions
Get AI-powered dialogue ideas for scenes
🔬
Story Research
Research settings, time periods & technical details

Neural Autopilot

AI-powered autonomous voice assignment

Autopilot Status
STANDBY
Character Intelligence

Neural Agent System

Autonomous workflow engine with background processing

Agent Control Center
OFFLINE
0
Tasks Queued
0
Completed
0h
Uptime
Task Queue Manager
to

📢 Advanced Ad Insertion

Insert ads & sponsor reads at strategic points

⚡ Ad System Controls
Select which character voice reads your ads. Characters are auto-loaded from your Character Vault.
One-time: generate current episode with no ads, settings remain saved.
Ad Placement Strategy
MULTI-BREAK
Ad Script Templates
Ad Library
SAVED ADS

No saved ads yet. Create your first ad above!

📝 Manual Ad Insertion Guide
HOW-TO

You can insert ads manually directly into your script using the NARRATOR character.

Method 1: Auto-Insert (Recommended)
  1. Configure ad settings above (frequency, positions)
  2. Write your ad script
  3. Click "Save Ad Configuration"
  4. Generate your episode normally
  5. ✅ Ads are automatically inserted!
Method 2: Manual Script Insertion
  1. Copy your ad script from above
  2. Go to Quick Start section
  3. In your script, add a line wherever you want the ad:
    NARRATOR: This episode is brought to you by Acme Corp...
  4. The NARRATOR voice will read your ad during generation
  5. ✅ Complete control over ad placement!
💡 Pro Tip: Combining Both Methods

You can mix auto-insert AND manual insertion:

  • Use auto-insert for consistent mid-rolls every 10 minutes
  • Use manual insertion for special sponsor callouts at key moments
  • Use manual insertion for dynamic ad reads that reference the story

Example: Auto-insert handles regular ad breaks, while you manually insert a product placement where a character mentions your sponsor's product naturally in dialogue.

⚠️ Important: Make sure you have a NARRATOR character in your Character Vault. If not, run Quick Setup on any script and NARRATOR will be auto-detected and added.

🎵 SFX Library

200+ built-in sounds • Search • Preview • Insert into script

🎵 Built-In Sound Catalog
200+ SOUNDS
🔊 Freesound Search
600K+ SOUNDS

Search Freesound.org's 600,000+ Creative Commons library. Requires a free API key.

📤 Upload Your SFX
LOCAL FILES

Upload your own sound effects for preview and script insertion

💡 SFX in Scripts

Add sound cues anywhere in your script using: [SOUND: Thunder] or [SFX: Door Slam]
Structure OS will skip these lines during TTS generation. Play them manually during editing.

Recommended workflow: Generate TTS audio → Import into Audacity or Descript → Layer in SFX at the marked timestamps.

📚 Audiobook Generator

Chapter-based generation with bookmark support

📖 How to Mark Chapters

Structure OS detects chapters automatically. Use any of these formats in your script:

✓ Accepted Formats:
  • CHAPTER 1:
  • Chapter One:
  • chapter 1 -
  • PART I:
  • Part One:
  • SECTION A:
📏 Auto-Split Rules:
  • Normal chapters: Stay intact
  • Chapters >91 min: Auto-split
  • Split at natural breaks
  • Maintains chapter title
💡 Best Practice: Start each chapter on a new line. Example: "CHAPTER 1: The Beginning" followed by chapter content.
Generate Audiobook
CHAPTER-BASED
🔖 Bookmark & Chapter Formats

Choose the best format for your listeners:

📱 M4B (Best for Apple Devices)
Native chapters appear in iOS Books app, iTunes
✓ Chapters show on lock screen
✓ Swipe to skip chapters
✓ Bookmark support built-in
✓ Sleep timer works with chapters
RECOMMENDED
🎵 MP3 with ID3v2 Chapters
Chapter markers embedded in MP3 file
✓ Works in VLC, foobar2000, MusicBee
✓ Android support via Poweramp, Smart AudioBook Player
✓ Cross-platform compatibility
📂 Separate Chapter Files
One file per chapter, numbered for order
✓ Universal compatibility
✓ Easy to manage and share individual chapters
✓ Works on any device
🎧 WAV with Cue Points
For audio editors (Audacity, Reaper, Pro Tools)
✓ Chapter markers visible in waveform
✓ Easy editing at chapter boundaries
✓ Export to any format after editing
🎧 Recommended Players for Listeners
📱 iOS (iPhone/iPad):
  • Apple Books (M4B)
  • Bound (M4B)
  • BookPlayer (M4B, MP3)
🤖 Android:
  • Smart AudioBook Player (MP3 chapters)
  • Voice Audiobook Player (M4B, MP3)
  • Listen Audiobook Player (M4B)
💻 Desktop:
  • VLC Media Player (all formats)
  • foobar2000 (MP3 chapters)
  • iTunes (M4B)
🌐 Web-based:
  • Audiobook Shelf (all formats)
  • Plex (M4B, MP3)
  • Audiobookshelf (all formats)
✅ ACX Compliance Checker
AUDIBLE READY

Upload a generated audio file to verify it meets ACX/Audible technical requirements before submission.

💡 Audiobook Production Tips
  • Chapter length: Aim for 15-45 minutes per chapter for best listener experience
  • Naming: Use descriptive chapter titles ("Chapter 1: The Quest Begins" not just "Chapter 1")
  • Consistency: Keep chapter marker format consistent throughout script
  • File format: M4B for Apple users, MP3 with chapters for everyone else
  • Metadata: Add book title, author, cover art before distributing
  • Quality check: Test in target player before distributing to listeners

🎙️ Podcast Hub

Complete podcast distribution, valuation & growth toolkit

🚀 Distribution Manager
MULTI-PLATFORM

Distribute your podcast to all major platforms from one place

🟢 Spotify for Podcasters
Reach 500M+ listeners on Spotify
🍎 Apple Podcasts
World's #1 podcast platform
🎵 Amazon Music
Amazon & Audible distribution
▶️ YouTube Podcasts
Video & audio podcast hosting
📡 RSS Feed Generator
Each episode filename will be appended to this path
💰 Podcast Valuation Calculator
REVENUE MODEL
📊 Inputs
💎 Valuation Results
Monthly Revenue
$0
Annual Revenue
$0
Exit Valuation (3x ARR)
$0
Cost Per Episode (Structure OS)
~$2-5
🔗 SaaS Integration Tools
HOSTING

Connect with professional podcast hosting platforms for advanced analytics, monetization & distribution

🎙️ Transistor.fm
$29/mo • Unlimited uploads • Advanced analytics
🐝 Buzzsprout
Free tier • $12-24/mo paid • Easy setup
🎧 Anchor (Free)
100% Free • Spotify owned • Auto-distribution
📊 Podbean
$9/mo • Monetization tools • Built-in ads
📈 Growth Metrics
0
Total Episodes
$0
Production Cost
95%
vs Traditional Studio

Business Dashboard

See your entire podcast business at a glance

$485
Episode Value (Avg)
6,147%
Average ROI
$1,240
Sponsor Revenue
💵 Production Cost Calculator
LIVE

Current Session:

Characters Rendered: 0/0
Words Processed: 0
Cost So Far: $0.00
Estimated Final: $0.00

This Month Total:

TTS Spending: $0.00 / $100 budget
Cost Per Episode: $0.00
Episodes This Month: 0

Help Center

Learn how to use Structure OS

Quick Start Guide

🚀 Getting Started

  1. Settings: Add your Azure API key and select your region
  2. Test Connection: Click "Test Connection" to verify it works
  3. Quick Start: Paste your script in CHARACTER: Dialogue format
  4. Auto-Setup: Click the button to detect characters
  5. Generate: Click "Generate Episode Now"
  6. Download: Your MP3 downloads automatically!

Character Vault

Full 400+ voice library

🧠 AI Script Optimizer

TTS-ready scripts — pauses, SSML, character detection, robotic line alerts

📋 Paste Your Raw Script
CLAUDE-POWERED

📝 Book Evaluation Suite

Six AI agents that read, analyze, and give real feedback on your chapters

📄 Chapter Input
AI POWERED
🏗️ Structure Agent
READY

Evaluates narrative arc, scene flow, chapter opening/closing, tension curve, and overall structural integrity.

⏱️ Pacing Agent
READY

Flags sections that drag, rush, or lose momentum. Identifies slow passages, info dumps, and pacing problems with line-level feedback.

🔗 Continuity Agent
READY

Catches internal inconsistencies — character details, timeline errors, contradictions, and world-building breaks within the chapter.

🎭 Voice Agent
READY

Analyzes author voice consistency, tone shifts, register mismatches, and authenticity. Flags where your voice breaks character.

👤 Beta Reader Agent
READY

Simulates an honest beta reader reaction — emotional response, confusion points, what lands, what loses interest, and overall readability score.

📊 Market Fit Agent
READY

Compares your chapter to genre expectations, reader conventions, and market positioning. Identifies gaps between your vision and commercial viability.

📋 Evaluation History
No evaluations yet. Run an agent to start.

📖 Manuscript Splitter

Turn any full manuscript into TTS-ready episodes automatically

📄 Paste Full Manuscript
CLAUDE-POWERED

Paste your entire book, script, or document. Claude will split it intelligently and prep each chunk for the TTS queue.

🎭 AI Voice Casting

Describe any character — Claude matches the perfect voice from your vault

🎤 Character Description
CLAUDE-POWERED
🎬 Cast Sheet
0 cast

Characters you've cast. Save them directly to a series vault.

📊 Revenue Dashboard

Real earnings tracker, break-even calculator, ROI vs. studio cost

$0
Total Earnings
$0
Monthly Average
0%
ROI vs Studio
Break-Even
$0
12-Month Projection
$0
Saved vs Studio
➕ Log Earnings
🧮 Break-Even Calculator
📈 Earnings History

No earnings logged yet.

🤖 AI Revenue Analysis
CLAUDE-POWERED

Claude analyzes your earnings data and gives you a growth strategy.

📡 Podcast Push

Upload episodes directly to Buzzsprout, Podbean, and Anchor/Spotify

🐝 Buzzsprout
LIVE API

Get your API token: buzzsprout.com → My Profile → API

🫘 Podbean
LIVE API

Get credentials: developers.podbean.com → My Apps → Create App

🎵 Spotify / Anchor
MANUAL FLOW

Anchor/Spotify for Podcasters does not offer a public API for episode uploads. Use this workflow instead:

1. Generate and download your audio in Quick Start
2. Click Open Spotify for Podcasters below
3. Episodes → New Episode → Upload audio file
4. Use the AI to generate show notes ↓

🔐 Access & Data Management

Reset code, import/export data between devices

🔄 Reset Access Code
DANGER ZONE

Use this to enter a new access code if you have a different version or want to switch licenses.

⚠️ Warning: Resetting will log you out and require you to enter a new code. Your local data (series, episodes, settings) will remain intact.
📤 Export Your Data
BACKUP

Download all your Structure OS data to transfer to another device or create a backup.

📦 What's exported:
  • Character Vault
  • Series & Episodes
  • API Keys (encrypted)
  • Analytics data
  • Settings & preferences
  • Ad configurations
📥 Import Data
RESTORE

Load a data backup from another device or restore from a previous export.

💡 Import Options:

📱 Device Manager

Your account across all devices

👤 Account
Checking...
Loading account info...
Registered Devices
0 / 4

Loading devices...

🔒 Device Policy

Your license allows up to 4 registered devices. All devices share the same data in real-time when connected to the internet. API keys are stored locally only and never synced for security.

📚 Help & Setup Guide

Complete guides for every feature

Quick Start
START HERE
API Setup Guides
Azure Speech API

1. Go to Azure Portal
2. Create "Speech Services" resource
3. Copy Key and Region
4. Paste in Settings → Azure Speech API

Amazon Polly

1. Go to AWS IAM Console
2. Create new user with Polly permissions
3. Generate Access Key ID & Secret
4. Paste in Settings → Amazon Polly

YouTube API

1. Go to Google Cloud Console
2. Enable YouTube Data API v3
3. Create API Key
4. Paste in Settings → YouTube Integration

Social Media APIs

Facebook: Facebook Developers
Instagram: Instagram Graph API
Twitter: Twitter Developer Portal
TikTok: TikTok Developers

Canva Integration

1. Go to Canva API
2. Create App & get API Key
3. Paste in Settings → Canva Integration
4. Use Visual Studio to export Canva-compatible formats

Feature Guides
Video Tutorials

Watch step-by-step video guides:

✨ Features & Examples

Everything you can do with Structure OS

Production Features

🎙️ 200+ Professional Voices

What it does: Access 200+ neural TTS voices from Azure and Amazon Polly
Example use: Create podcast with US male narrator + UK female co-host
Languages: 50+ languages including Spanish, French, Japanese, Arabic

🎚️ Voice Studio Controls

What it does: Customize age, pitch, speed, emotion for each character
Example use: Make elderly character with slower speed, lower pitch
Controls: Age (5-100), Pitch (-50% to +50%), Speed (0.5x-2.0x), 6 emotions

✂️ Auto-Split Episodes

What it does: Automatically splits scripts longer than 52 minutes
Example use: 2-hour audiobook becomes 3 episodes automatically
Benefit: Perfect for podcast platforms with time limits

🎨 Visual Storyboard (17 Formats)

What it does: Export artwork to 17 formats for all platforms
Example use: Upload episode art once, export for YouTube, Instagram, KDP
Formats: Picture books (300 DPI), Social media, YouTube, Website

🌍 Multilingual Translation

What it does: Translate episodes to 50+ languages
Example use: English podcast → Spanish, French, German versions
Benefit: Reach global audience, multiply revenue streams

Business & Marketing Features

📱 Social Media Management

What it does: Post to 6 platforms simultaneously
Example use: Announce new episode on FB, IG, Twitter, TikTok, LinkedIn, YouTube at once
Features: AI content generation, scheduling, analytics

🔗 5 Website Traffic System

What it does: Auto-include your 5 website links in social posts
Example use: Every post drives traffic to podcast site, Patreon, store, blog
Benefit: Balanced traffic distribution across all your properties

🚀 One-Click Distribution

What it does: Publish to YouTube, Spotify, Apple, Amazon instantly
Example use: Click once, episode goes live on all platforms
Saves: Hours of manual uploading per episode

🌍 Multilingual Translation

Translate content into 50+ languages

Auto-Translate
50+ LANGUAGES

🎨 Visual Studio

AI cover concepts, asset specs, and export templates for every platform

🤖 AI Cover Concept Generator
CLAUDE-POWERED

Describe your show/book — get a detailed visual brief ready to hand to a designer or paste into Midjourney/DALL-E.

📐 Platform Spec Reference
📖 KDP Print
6×9" = 1800×2700px, 300dpi, bleed: +0.125"
🎧 ACX/Audible
3000×3000px, JPG, RGB, max 5MB
🎙️ Podcast Cover
3000×3000px, JPG/PNG, 72dpi min
📺 YouTube Thumb
1280×720px, JPG, max 2MB
📸 Instagram Post
1080×1080px (square) or 1080×1350 (portrait)
📌 Pinterest Pin
1000×1500px, 2:3 ratio
🎵 TikTok Cover
1080×1920px, 9:16 vertical
📘 KDP eBook
2560×1600px, RGB, JPG/TIFF
📁 Asset Organizer
🖼️

Click to upload images

JPG, PNG, WEBP — multiple files supported

🚀 Distribution Hub

Submit your RSS feed to every major platform

📡 Your RSS Feed

Generate your RSS feed in the Podcast Hub section, then paste the URL here to submit everywhere.

🎯 Submission Links
DIRECT LINKS

Each button opens the submission page for that platform. Have your RSS URL and show info ready.

📋 Submission Checklist

💳 Client Services & Invoicing

Professional payment links, invoices, and deal tracking for your media empire

💼 Client Portal Command Center
PHASE 7
0
Active Deals
$0
Total Invoiced
$0
Paid
$0
Pending
📄 Professional Invoice Builder
Creates a printable/shareable invoice
Description
Qty
Rate
Subtotal: $0.00
Tax: %   $0.00
Total: $0.00
async function analyzeSocialIntel() { var platform = (document.getElementById('siPlatform')?.value || 'Instagram').trim(); var niche = (document.getElementById('siNiche')?.value || '').trim(); var goal = (document.getElementById('siGoal')?.value || 'grow followers').trim(); if (!niche) { alert('❌ Enter your niche'); return; } var statusEl = document.getElementById('siStatus'); if (statusEl) statusEl.textContent = '⏳ Reading signals...'; var _prompt = 'You are a social media intelligence analyst who tracks platform trends in real time.\n\nPlatform: ' + platform + '\nNiche: ' + niche + '\nGoal: ' + goal + '\n\nProvide a SOCIAL INTELLIGENCE REPORT:\n\n1. PLATFORM ALGORITHM PRIORITY — What type of content is the ' + platform + ' algorithm currently rewarding most heavily? (Format, length, engagement type)\n\n2. TRENDING FORMATS — Top 3 content formats performing in this niche right now. Why each works.\n\n3. ENGAGEMENT TRIGGERS — What specific actions (questions, polls, CTAs, controversy) are driving the most real engagement in this niche?\n\n4. OPTIMAL POSTING STRATEGY — Frequency, timing, and content mix for this niche on this platform.\n\n5. COMPETITOR INTELLIGENCE — What are successful accounts in this niche doing that most people miss?\n\n6. PLATFORM SHIFTS — Any recent algorithm or feature changes on ' + platform + ' that affect this niche?\n\n7. 30-DAY ACTION PLAN — 3 specific things to do this month to achieve the stated goal on this platform.\n\nBase this on current best practices and platform behavior patterns.'; function _displayResult(ans) { var el = document.getElementById('siResult') || statusEl; if (el) el.innerHTML = '
' + ans + '
'; if (statusEl && statusEl !== el) statusEl.textContent = '✅ Report ready'; logAgentActivity('Social Intelligence', 'Platform report complete!', 'success'); } var cfg = typeof getOllamaConfig === 'function' ? getOllamaConfig() : { endpoint: 'https://ai.penoftales.cloud', model: 'llama3.1:8b' }; var endpoint = (cfg.endpoint || 'https://ai.penoftales.cloud').replace(/\/$/, ''); var model = cfg.model || 'llama3.1:8b'; try { var r = await fetch(endpoint + '/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: model, messages: [{ role: 'user', content: _prompt }], stream: false, options: { num_predict: 800 } }) }); var d = await r.json(); var _answer = d.message && d.message.content ? d.message.content : '❌ No response.'; _displayResult(_answer); } catch(e) { _displayResult('❌ AI Error: ' + e.message); } } async function runNeuralAutopilot() { var show = (document.getElementById('autopilotShow')?.value || '').trim(); var goal = (document.getElementById('autopilotGoal')?.value || 'grow audience').trim(); var weeks = (document.getElementById('autopilotWeeks')?.value || '4'); if (!show) { alert('❌ Enter your show/brand name'); return; } var statusEl = document.getElementById('autopilotStatus'); if (statusEl) statusEl.textContent = '⏳ Building autonomous content plan...'; var _prompt = 'You are an autonomous content strategist AI. Your job is to create a complete, executable content plan that a creator can follow without making additional decisions.\n\nShow/Brand: ' + show + '\nPrimary Goal: ' + goal + '\nPlanning Horizon: ' + weeks + ' weeks\n\nCreate a NEURAL AUTOPILOT CONTENT PLAN:\n\n1. STRATEGIC FOUNDATION — One sentence mission + target audience + unique angle. This guides every decision.\n\n2. CONTENT PILLARS — 4 recurring content themes this show will rotate between. Name each pillar and explain its purpose.\n\n3. ' + weeks + '-WEEK EPISODE CALENDAR — List every episode/post with:\n - Week number\n - Title (ready to publish)\n - Content pillar it belongs to\n - Primary hook (first line)\n - CTA (what you\'re asking audience to do)\n\n4. CROSS-PLATFORM REPURPOSE PLAN — For each piece of content, list what to repurpose it into (short clip, newsletter, thread, etc.)\n\n5. ENGAGEMENT AUTOMATION — 3 recurring engagement tactics to run every week on autopilot (e.g., weekly poll, community question, etc.)\n\n6. GROWTH TRIGGER — One specific collaboration, guest swap, or campaign to run during this period that would accelerate growth.\n\n7. SUCCESS METRICS — How to measure if this plan is working after ' + weeks + ' weeks. Specific numbers.\n\nMake this so specific and complete that execution requires zero additional creative decisions.'; function _displayResult(ans) { var el = document.getElementById('autopilotResult') || statusEl; if (el) el.innerHTML = '
' + ans + '
'; if (statusEl && statusEl !== el) statusEl.textContent = '✅ Autopilot plan ready'; logAgentActivity('Neural Autopilot', 'Content plan generated!', 'success'); } var cfg = typeof getOllamaConfig === 'function' ? getOllamaConfig() : { endpoint: 'https://ai.penoftales.cloud', model: 'llama3.1:8b' }; var endpoint = (cfg.endpoint || 'https://ai.penoftales.cloud').replace(/\/$/, ''); var model = cfg.model || 'llama3.1:8b'; try { var r = await fetch(endpoint + '/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: model, messages: [{ role: 'user', content: _prompt }], stream: false, options: { num_predict: 800 } }) }); var d = await r.json(); var _answer = d.message && d.message.content ? d.message.content : '❌ No response.'; _displayResult(_answer); } catch(e) { _displayResult('❌ AI Error: ' + e.message); } } async function beRunAgent(agentKey) { var text = document.getElementById('be-chapter-text')?.value.trim(); if (!text || text.length < 100) { alert('❌ Please paste your chapter text first (minimum 100 characters).'); return; } var agent = BE_AGENTS[agentKey]; var badge = document.getElementById('be-badge-' + agentKey); var result = document.getElementById('be-result-' + agentKey); var card = document.getElementById('be-card-' + agentKey); badge.textContent = '⏳ RUNNING'; badge.style.background = 'rgba(251,191,36,0.15)'; badge.style.color = '#fbbf24'; result.textContent = '⏳ Analyzing your chapter...'; if (card) card.style.borderColor = 'rgba(251,191,36,0.4)'; var meta = beGetMeta(); var prompt = agent.prompt(text, meta); try { var cfg = typeof getOllamaConfig === 'function' ? getOllamaConfig() : { endpoint: 'https://ai.penoftales.cloud', model: 'llama3.1:8b' }; var endpoint = (cfg.endpoint || 'https://ai.penoftales.cloud').replace(/\/$/, ''); var model = cfg.model || 'llama3.1:8b'; var r = await fetch(endpoint + '/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model: model, messages: [{ role: 'user', content: prompt }], stream: false, options: { num_predict: 600 } }) }); var d = await r.json(); var answer = d.message && d.message.content ? d.message.content : '❌ No response received.'; result.textContent = answer; badge.textContent = '✅ DONE'; badge.style.background = 'rgba(46,204,113,0.15)'; badge.style.color = '#2ecc71'; if (card) card.style.borderColor = agent.color + '44'; // Log to history var entry = { ts: new Date().toLocaleString(), book: meta.title, chapter: meta.chapter, agent: agent.label, result: answer }; BE_STORE.unshift(entry); if (BE_STORE.length > 50) BE_STORE.pop(); localStorage.setItem('be_history', JSON.stringify(BE_STORE)); beRenderHistory(); } catch(e) { result.textContent = '❌ Error: ' + e.message + '\nCheck your AI engine connection in Settings.'; badge.textContent = '❌ ERROR'; badge.style.background = 'rgba(239,68,68,0.15)'; badge.style.color = '#fca5a5'; } } async function beRunAll() { var text = document.getElementById('be-chapter-text')?.value.trim(); if (!text || text.length < 100) { alert('❌ Please paste your chapter text first.'); return; } var agents = Object.keys(BE_AGENTS); for (var i = 0; i < agents.length; i++) { await beRunAgent(agents[i]); // Small delay between agents to not overwhelm Ollama await new Promise(function(r) { setTimeout(r, 500); }); } } function beClearAll() { Object.keys(BE_AGENTS).forEach(function(k) { var r = document.getElementById('be-result-' + k); var b = document.getElementById('be-badge-' + k); var c = document.getElementById('be-card-' + k); if (r) r.textContent = ''; if (b) { b.textContent = 'READY'; b.style.background = 'rgba(100,116,139,0.2)'; b.style.color = '#64748b'; } }); document.getElementById('be-chapter-text').value = ''; } function beRenderHistory() { var el = document.getElementById('be-history'); if (!el) return; if (BE_STORE.length === 0) { el.innerHTML = '
No evaluations yet.
'; return; } el.innerHTML = BE_STORE.slice(0, 20).map(function(e) { return '
' + '' + e.ts + ' · ' + e.book + ' · ' + e.chapter + '
' + '' + e.agent + ' — ' + '' + (e.result || '').substring(0, 120) + '...' + '
'; }).join(''); } function beClearHistory() { BE_STORE = []; localStorage.removeItem('be_history'); beRenderHistory(); } function beExportReport() { var meta = beGetMeta(); var agents = Object.keys(BE_AGENTS); var lines = ['STRUCTURE OS — BOOK EVALUATION REPORT', '='.repeat(50), '']; lines.push('Book: ' + meta.title); lines.push('Chapter: ' + meta.chapter); lines.push('Genre: ' + meta.genre); lines.push('Audience: ' + meta.audience); lines.push('Generated: ' + new Date().toLocaleString()); lines.push(''); agents.forEach(function(k) { var agent = BE_AGENTS[k]; var result = document.getElementById('be-result-' + k); lines.push('─'.repeat(50)); lines.push(agent.label.toUpperCase()); lines.push('─'.repeat(50)); lines.push(result && result.textContent ? result.textContent : '(Not run)'); lines.push(''); }); var blob = new Blob([lines.join('\n')], { type: 'text/plain' }); var a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = (meta.title || 'evaluation').replace(/\s+/g, '-') + '-' + (meta.chapter || 'ch').replace(/\s+/g, '-') + '-eval.txt'; a.click(); } // Init history on load document.addEventListener('DOMContentLoaded', function() { beRenderHistory(); }); async function runScriptOptimizer() { const raw = (document.getElementById('soRawScript')?.value||'').trim(); const type = document.getElementById('soContentType')?.value||'podcast'; const eng = document.getElementById('soEngine')?.value||'azure'; if (!raw) { showStatus('soStatus','❌ Paste a script first','error'); return; } showStatus('soStatus','🧠 Optimizing script...','info'); const _prompt = `You are a TTS script optimization specialist. Optimize this script for ${eng} TTS engine (${type} format). OPTIMIZATION RULES: 1. PRONUNCIATION FIXES — Rewrite numbers, acronyms, abbreviations as spoken words (Dr.→Doctor, $1.2M→one point two million, 2024→twenty twenty-four) 2. PACING — Add natural pause markers [pause] at sentence breaks. Flag sentences over 25 words as [TOO LONG: split this]. 3. ROBOTIC PHRASES — Rewrite any phrase that sounds unnatural when read aloud. Quote original then improved version. 4. SSML SUGGESTIONS — Suggest 3 specific or tags that would most improve delivery. 5. CHARACTER CONSISTENCY — Flag any lines where the speaker's voice/tone suddenly changes. 6. OPTIMIZED SCRIPT — Provide the full rewritten script ready to paste into TTS. ORIGINAL SCRIPT: ${raw.substring(0,5000)}`; function _display(ans) { const el = document.getElementById('soOptimizedScript')||document.getElementById('soResults'); if (el) el.value = ans; const rep = document.getElementById('soReport'); if (rep) rep.innerHTML = '
'+ans+'
'; showStatus('soStatus','✅ Script optimized','success'); } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function suggestChapterTitles() { const script = (document.getElementById('audiobookScript')?.value||'').trim(); if (!script || script.length < 200) { showStatus('audiobookStatus','❌ Paste manuscript first','error'); return; } showStatus('audiobookStatus','📚 AI generating chapter titles...','info'); const _prompt = `You are an audiobook production specialist. Analyze this manuscript and: 1. CHAPTER DETECTION — Identify where natural chapter breaks occur (look for scene shifts, time jumps, location changes, theme changes). 2. CHAPTER TITLES — Suggest a compelling title for each detected chapter. Titles should be: intriguing, 2-5 words, genre-appropriate. 3. CHAPTER SUMMARY — One sentence describing each chapter's content. 4. PACING NOTE — Flag any chapter that seems too long (over 5,000 words) or too short (under 500 words) for audiobook production. 5. NARRATOR NOTES — 2-3 direction notes for the narrator about tone shifts, pacing, or character voice changes. Format: Chapter [N] | [TITLE] | [SUMMARY] | [LENGTH NOTE] MANUSCRIPT (first 6,000 chars): ${script.substring(0,6000)}`; function _display(ans) { const el = document.getElementById('chapterAnalysis'); if (el) el.innerHTML = '
'+ans+'
'; showStatus('audiobookStatus','✅ Chapter analysis complete','success'); } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function aiSuggestEpisodeTitles() { const ms = (document.getElementById('msManuscript')?.value||'').trim(); const show = (document.getElementById('msSeriesName')?.value||'My Show').trim(); if (!ms || ms.length < 200) { showStatus('msStatus','❌ Paste manuscript first','error'); return; } showStatus('msStatus','🤖 AI suggesting episode structure...','info'); const _prompt = `You are a podcast producer specializing in adapting written content into episode format. Show: ${show} Analyze this manuscript and provide: 1. EPISODE STRUCTURE — How many episodes should this become? What's the ideal split point for each? 2. EPISODE TITLES — Compelling title for each episode (3-8 words, creates curiosity/desire to listen) 3. EPISODE HOOKS — The opening 2 sentences for each episode that make listeners stay. 4. CLIFFHANGERS — Where does each episode end to make listeners come back? Quote the ideal last line. 5. SERIES ARC — One sentence describing the overall journey across all episodes. MANUSCRIPT (first 5,000 chars): ${ms.substring(0,5000)}`; function _display(ans) { const el = document.getElementById('msResults'); if (el) el.innerHTML = '
'+ans+'
'; showStatus('msStatus','✅ Episode structure ready','success'); } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function aiRecommendVoice() { const name = (document.getElementById('vcCharName')?.value||'').trim(); const desc = (document.getElementById('vcDescription')?.value||'').trim(); const eng = document.getElementById('vcEngine')?.value||'azure'; if (!name || !desc) { showStatus('vcStatus','❌ Enter character name and description','error'); return; } showStatus('vcStatus','🎭 AI matching voice to character...','info'); const _prompt = `You are a voice casting director for audio productions. Character: ${name} Description: ${desc} TTS Engine: ${eng} Provide: 1. VOICE PROFILE — Describe the ideal voice: age range, tone (warm/cold/neutral), pace (slow/medium/fast), accent, energy level. 2. ENGINE RECOMMENDATION — Best voice name on ${eng} for this character. Be specific (e.g., en-US-AriaNeural for Azure). 3. BACKUP VOICE — Second choice with reasoning. 4. SSML DIRECTION — 2-3 SSML tags to apply for this character (prosody rate, pitch, emphasis style). 5. SAMPLE DIRECTION — How should the voice actor/TTS deliver the character's first line? Give specific direction. 6. AVOID — What voice qualities would be WRONG for this character and why.`; function _display(ans) { const el = document.getElementById('vcResults'); if (el) el.innerHTML = '
'+ans+'
'; showStatus('vcStatus','✅ Voice recommendation ready','success'); } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateSponsorPitch() { const genre = (document.getElementById('showGenre')?.value||'').trim(); const listeners= (document.getElementById('monthlyListeners')?.value||'').trim(); const showName = (document.getElementById('showName')?.value||'My Show').trim(); const sponsor = (document.getElementById('targetSponsor')?.value||'').trim(); const el = document.getElementById('sponsorMatches'); if (!genre) { if(el) el.innerHTML='

❌ Enter your show genre first

'; return; } if(el) el.innerHTML = '

🤖 Writing sponsor pitches...

'; const _prompt = `You are a podcast sponsorship specialist who writes pitches that get replies. Show: ${showName} Genre/Niche: ${genre} Monthly Listeners: ${listeners||'(not specified)'} Target Sponsor: ${sponsor||'(find best matches)'} Provide: 1. SPONSOR MATCHES — List 8 specific brands that would actually pay to reach this audience. For each: brand name, why they fit, estimated CPM range, contact approach. 2. COLD PITCH EMAIL — Write a complete cold pitch email to the best-fit brand. Include: - Subject line (under 8 words) - Opening (personalized, not generic) - Show stats and why their audience overlaps - Specific ad format proposal (pre-roll, mid-roll, host-read) - Rate card suggestion - Clear CTA with next step 3. SPONSORSHIP RATE CARD — Suggest rates for: pre-roll (15s), mid-roll (60s), host-read (90s), episode takeover, based on listener count. 4. NEGOTIATION TIPS — 2 tactics to use when a sponsor tries to lowball you. Be specific. Include real brand names. Write the actual email, not a template.`; function _display(ans) { if(el) el.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateAIAdCopy() { const char = document.getElementById('adCharacter')?.value||'narrator'; const prePre = (document.getElementById('adPreRoll')?.value||'').trim(); const midRoll = (document.getElementById('adMidRoll')?.value||'').trim(); const postPre = (document.getElementById('adPostRoll')?.value||'').trim(); const templ = (document.getElementById('adTemplate')?.value||'').trim(); const topic = templ || prePre || midRoll || 'general product'; showStatus('adStatus','🤖 Writing ad scripts...','info'); const _prompt = `You are a podcast ad copywriter. Write host-read ad scripts that convert. Character/Voice: ${char} Product/Service: ${topic} Write 3 versions of each ad type: PRE-ROLL (15 seconds / ~40 words): - Hook in first 3 words - One benefit - CTA with urgency MID-ROLL (60 seconds / ~150 words): - Personal anecdote opener (feels host-endorsed, not ad-like) - 3 benefits woven naturally - Discount code mention - CTA HOST-READ (90 seconds / ~225 words): - Storytelling format — problem → solution → personal endorsement - Feels like a recommendation from a friend - Natural integration into show topic - Strong CTA with offer RULES: - Write in first person as if the host is speaking - No corporate language - Each script should sound different from the others - Include [PAUSE] markers for natural delivery PRODUCT CONTEXT: ${topic}`; function _display(ans) { const el = document.getElementById('adScript'); if (el) el.value = ans; showStatus('adStatus','✅ Ad scripts ready — copy into Script field','success'); } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateSwipeFile() { const title = (document.getElementById('swipeTitle')?.value||'').trim(); const type = document.getElementById('swipeType')?.value||'hook'; const cat = document.getElementById('swipeCategory')?.value||'general'; const ref = (document.getElementById('swipeContent')?.value||'').trim(); if (!title && !ref) { alert('❌ Enter a title or paste reference content'); return; } const topic = title || ref.substring(0,50); const _prompt = `You are a master copywriter building a swipe file library. Generate 5 high-performing ${type} examples for the category: ${cat} Topic/Context: ${topic} ${ref ? 'Reference/Inspiration: '+ref.substring(0,1000) : ''} For each example provide: - [EXAMPLE ${1}-5]: The actual copy/hook/headline/CTA (ready to use or adapt) - WHY IT WORKS: One sentence on the psychological trigger used - BEST FOR: What type of content/platform this works best on - ADAPT IT: Quick instruction to customize for any niche Make these genuinely useful. Model them after what actually performs — not what sounds good in theory. Focus on: ${type === 'hook' ? 'First lines that stop scrolling' : type === 'headline' ? 'Headlines that drive clicks' : type === 'cta' ? 'CTAs that drive action' : 'High-converting copy patterns'}.`; const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; const origContent = document.getElementById('swipeContent'); if (origContent) origContent.value = '⏳ Generating...'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const ans = d.message?.content||'❌ No response.'; if (origContent) origContent.value = ans; if (document.getElementById('swipeNotes')) document.getElementById('swipeNotes').value = 'AI Generated — '+new Date().toLocaleDateString(); alert('✅ 5 swipe file examples generated! Review and click Save to add to your library.'); } catch(e) { if (origContent) origContent.value = '❌ AI Error: '+e.message; } } async function generateAIContentCalendar() { const show = (document.getElementById('calShow')?.value || document.getElementById('newBrandName')?.value || '').trim(); const goal = (document.getElementById('calGoal')?.value||'grow audience').trim(); const weeks = document.getElementById('calWeeks')?.value||'4'; const niche = (document.getElementById('calNiche')?.value||'').trim(); const calEl = document.getElementById('calendarGrid')||document.getElementById('contentItemsList'); if (calEl) calEl.innerHTML = '

🤖 Building your content calendar...

'; const _prompt = `You are a content strategist building an executable content calendar. Show/Brand: ${show||'My Show'} Niche: ${niche||'general'} Goal: ${goal} Duration: ${weeks} weeks Create a WEEK-BY-WEEK content calendar: For each week provide: WEEK [N]: [WEEKLY THEME] - MON: [Platform] — [Content type] — [Title/Topic] — [Hook first line] - WED: [Platform] — [Content type] — [Title/Topic] — [Hook first line] - FRI: [Platform] — [Content type] — [Title/Topic] — [Hook first line] - MAIN EPISODE: [Episode title] — [2-sentence description] — [CTA] - ENGAGEMENT: [One community action — poll, Q&A, challenge, etc.] After the calendar: CONTENT BATCHING GUIDE: How to batch-produce all ${weeks} weeks in 2 days. REPURPOSE CHAIN: How to turn each main episode into 5+ pieces of content. Make every title publishable as-is. No placeholders.`; function _display(ans) { if (calEl) calEl.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function runAIStudio() { const prompt_el = document.getElementById('aiStudioPrompt')||document.getElementById('aiPrompt'); const sys_el = document.getElementById('aiStudioSystem')||document.getElementById('aiSystem'); const result_el = document.getElementById('aiStudioResult')||document.getElementById('aiResult'); const status_el = document.getElementById('aiStudioStatus')||document.getElementById('aiStatus'); const _prompt = (prompt_el?.value||'').trim(); const _system = (sys_el?.value||'You are a helpful creative writing and business assistant.').trim(); if (!_prompt) { if(status_el) status_el.textContent='❌ Enter a prompt'; return; } if(status_el) status_el.textContent='⏳ Thinking...'; if(result_el) result_el.innerHTML=''; const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'system',content:_system},{role:'user',content:_prompt}],stream:false,options:{num_predict:1000}})}); const d = await r.json(); const ans = d.message?.content||'❌ No response.'; if(result_el) result_el.innerHTML='
'+ans+'
'; if(status_el) status_el.textContent='✅ Done'; } catch(e) { if(result_el) result_el.innerHTML='❌ Error: '+e.message; if(status_el) status_el.textContent='❌ Error'; } } async function generatePortfolioDescription() { const title = (document.getElementById('portTitle')?.value||document.getElementById('portfolioTitle')?.value||'').trim(); const type = document.getElementById('portType')?.value||'podcast'; const stats = (document.getElementById('portStats')?.value||'').trim(); if (!title) { alert('❌ Enter project title'); return; } const _prompt = `You are a portfolio copywriter for content creators and media professionals. Project: ${title} Type: ${type} Stats/Results: ${stats||'(not provided)'} Write 3 versions of a portfolio description: 1. SHORT (50 words) — for profile bios and social media 2. MEDIUM (150 words) — for portfolio pages and proposals 3. FULL (300 words) — for press kits and speaking applications Each version should: - Lead with the most impressive result or unique angle - Use active voice and specific details - Sound like a confident professional, not a humble creator - Include a quote/pullout sentence that could stand alone Also provide: 3 tagline options (under 10 words each) for this project.`; function _display(ans) { const el = document.getElementById('portResult')||document.getElementById('portfolioResult'); if (el) el.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateLicensingTerms() { const type = document.getElementById('licType')?.value||'commercial'; const content_type = document.getElementById('licContentType')?.value||'podcast'; const price = (document.getElementById('licPrice')?.value||'').trim(); const usage = (document.getElementById('licUsage')?.value||'').trim(); const el = document.getElementById('licResult')||document.getElementById('licensingResult'); if (el) el.innerHTML = '

⚖️ Generating licensing terms...

'; const _prompt = `You are an intellectual property attorney specializing in digital media licensing. License Type: ${type} Content Type: ${content_type} Licensing Price: ${price||'(not specified)'} Intended Usage: ${usage||'(not specified)'} Draft a complete licensing agreement including: 1. GRANT OF RIGHTS — What the licensee can and cannot do 2. TERM — Duration of license 3. TERRITORY — Geographic scope 4. EXCLUSIVITY — Exclusive vs non-exclusive terms 5. ATTRIBUTION — How the creator must be credited 6. PROHIBITED USES — Clear list of what's not allowed 7. TERMINATION — When and how the license can be revoked 8. INDEMNIFICATION — Liability protection for the creator 9. PAYMENT TERMS — If applicable 10. GOVERNING LAW — Jurisdiction Note: This is a starting template. Have a licensed attorney review before use. Format in clear, plain-language terms a non-lawyer can understand.`; function _display(ans) { if (el) el.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateDistributionCopy() { const show = (document.getElementById('distShow')?.value||'My Show').trim(); const desc = (document.getElementById('distDesc')?.value||'').trim(); const genre = (document.getElementById('distGenre')?.value||'').trim(); const platEl = document.getElementById('distResult')||document.getElementById('distributionResult'); if (platEl) platEl.innerHTML = '

🚀 Writing platform submissions...

'; const _prompt = `You are a podcast distribution specialist who writes show descriptions that get approved and rank well. Show: ${show} Description: ${desc||show} Genre/Category: ${genre||'general'} Write optimized show descriptions for each major platform: APPLE PODCASTS: - Title optimization (max 255 chars, keyword-rich) - Description (max 4,000 chars, keyword-front-loaded) - Category recommendation with reasoning SPOTIFY: - Short description (max 600 chars, punchy) - Category and subcategory recommendation AMAZON MUSIC/AUDIBLE: - Description optimized for Audible's algorithm - Keywords to include YOUTUBE PODCASTS: - Description with timestamps placeholder and keyword strategy - Tags list (20 relevant tags) GOOGLE PODCASTS / RSS: - Universal RSS description (works across all platforms) Also provide: 10 high-value keywords to embed in all descriptions.`; function _display(ans) { if (platEl) platEl.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function generateDataInsights() { const data = (document.getElementById('dmData')?.value||'').trim(); const type = document.getElementById('dmType')?.value||'analytics'; const el = document.getElementById('dmResult')||document.getElementById('dataResult'); if (!data) { alert('❌ Paste your data first'); return; } if (el) el.innerHTML = '

📊 Analyzing data...

'; const _prompt = `You are a data analyst specializing in creator and media business metrics. Data Type: ${type} Raw Data: ${data.substring(0,3000)} Provide: 1. KEY FINDINGS — Top 3 insights from this data (most important first) 2. ANOMALIES — Anything unusual or worth investigating 3. TREND DIRECTION — Is this trending up, down, or flat? What's driving it? 4. ACTIONABLE RECOMMENDATIONS — 3 specific actions based on this data 5. BENCHMARKS — How does this compare to industry averages for this type of content? 6. FORECAST — If current trend continues, where will this metric be in 30/60/90 days? Be specific with numbers. Don't state the obvious. Surface what a non-analyst would miss.`; function _display(ans) { if (el) el.innerHTML = '
'+ans+'
'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function aiSetupAdvisor() { const question = (document.getElementById('hgQuestion')?.value||document.getElementById('helpAiInput')?.value||'').trim(); const el = document.getElementById('hgResult')||document.getElementById('helpGuideResult'); if (!question) { alert('❌ Enter your question'); return; } if (el) el.innerHTML = '

🤖 Looking that up...

'; const _prompt = `You are the Structure OS setup and support specialist. You know everything about Structure OS. Structure OS is a single-file HTML audio production and media management platform by Pen Of Tales Publications LLC. It includes: TTS (Azure/Polly/Google/ElevenLabs/OpenAI — 695 voices), Audiobook Generator, Podcast Hub, SFX Library (200+ sounds), AI Agents (SEO/Viral/Promotion/Audience/Revenue/Competitive), Neural Copywriting, Analytics, Monetization, Client Services, AI Studio (Ollama llama3.1:8b at ai.penoftales.cloud), Firebase cloud sync, Export Engine, Book Evaluator, Neural Autopilot. USER QUESTION: ${question} Answer clearly and specifically. If it's a setup question, give numbered steps. If it's a troubleshooting question, give the most likely cause first, then alternatives. Keep answer under 200 words unless a detailed walkthrough is genuinely needed.`; const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:400}})}); const d = await r.json(); const ans = d.message?.content||'No response.'; if (el) el.innerHTML = '
'+ans+'
'; } catch(e) { if (el) el.innerHTML = '❌ Error: '+e.message; } } async function runNeuralAgent() { const task = (document.getElementById('agentTask')?.value||document.getElementById('neuralTask')?.value||'').trim(); const context = (document.getElementById('agentContext')?.value||'').trim(); const mode = document.getElementById('agentMode')?.value||'autonomous'; const el = document.getElementById('agentOutput')||document.getElementById('neuralOutput'); const status = document.getElementById('agentStatus')||document.getElementById('neuralStatus'); if (!task) { if(status) status.textContent='❌ Enter a task'; return; } if(status) status.textContent='⚡ Neural Agent executing...'; if(el) el.innerHTML='

⏳ Processing task...

'; const _prompt = `You are a Neural Agent — an autonomous AI that executes creative and business tasks end-to-end. Mode: ${mode} Task: ${task} Context: ${context||'(none provided)'} Execute this task completely. Do not ask clarifying questions. Make reasonable assumptions and state them. Your output should be: 1. EXECUTION PLAN — Brief steps you'll take (3-5 bullets) 2. COMPLETED OUTPUT — The actual deliverable, ready to use 3. QUALITY CHECK — Self-assessment: what you're confident about vs. what to verify 4. NEXT ACTIONS — 2 follow-up tasks that would compound this result Deliver the full output now.`; function _display(ans) { if(el) el.innerHTML='
'+ans+'
'; if(status) status.textContent='✅ Task complete'; } const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:700}})}); const d = await r.json(); const _ans = d.message?.content||'❌ No response.'; _display(_ans); } catch(e){ _display('❌ AI Error: '+e.message); } } async function aiSyncAdvisor() { const issue = (document.getElementById('devIssue')?.value||'').trim(); const el = document.getElementById('devResult')||document.getElementById('deviceResult'); if (!issue) return; if (el) el.innerHTML = '

🤖 Diagnosing...

'; const _prompt = `You are a Structure OS technical support specialist. USER ISSUE: ${issue} This relates to Structure OS device sync / Firebase cloud sync. Structure OS uses Firebase Firestore for cross-device sync. Provide: 1. LIKELY CAUSE — Most probable reason for this issue 2. QUICK FIX — Step-by-step resolution (numbered) 3. IF THAT DOESN'T WORK — Alternative approach 4. PREVENTION — How to avoid this in the future Keep it concise and actionable.`; const cfg = typeof getOllamaConfig==='function' ? getOllamaConfig() : {endpoint:'https://ai.penoftales.cloud',model:'llama3.1:8b'}; const endpoint = (cfg.endpoint||'https://ai.penoftales.cloud').replace(/\/$/,''); const model = cfg.model||'llama3.1:8b'; try { const r = await fetch(endpoint+'/api/chat',{method:'POST',headers:{'Content-Type':'application/json'}, body:JSON.stringify({model,messages:[{role:'user',content:_prompt}],stream:false,options:{num_predict:300}})}); const d = await r.json(); if (el) el.innerHTML = '
'+d.message?.content||'No response.'+'
'; } catch(e) { if (el) el.innerHTML = '❌ Error: '+e.message; } }