The Autonomous Serverless Media & Social Publishing Engine
Powered by AWS Serverless Infrastructure, Generative AI, RAG Vector Search, and Programmatic Video Rendering
Fauxios is an enterprise-grade, fully automated news and social media generation platform. Utilizing modern serverless cloud architecture managed by SST and an ultra-fast Astro frontend, Fauxios continuously discovers topical trends, synthesizes rich journalism using Google Gemini AI enriched with Pinecone Vector RAG (Retrieval-Augmented Generation), generates custom artwork, renders dynamic multi-act video broadcasts via Remotion, and publishes directly to social networksβall without human intervention.
- π€ Autonomous Article Production: Leverages vector similarity search (Pinecone) and live news data feeds (Newsdata.io / Apify) to draft contextual, highly detailed articles with automated cover image generation.
- π¬ Programmatic 3-Act Video Newscasts: Orchestrates parallel asset generation combining newscaster voiceovers synthesized by AWS Polly, animated political cartoons rendered via RunwayML, and talking AI avatars composited in real-time by Remotion Lambda.
- π± Viral Social Reels Pipelines: Three specialized, autonomous orchestration engines (Truth vs Verse, Truth Reels, and Revolution Reels) producing custom graphics, comparative commentary, and vertical video reels posted directly to Facebook and X (Twitter).
- β‘ Cloud-Native Serverless & Edge Optimized: Built on SST v3 (Ion) with AWS Step Functions orchestration, DynamoDB Global Secondary Indexes (GSIs), public Amazon S3 distribution buckets, and an SSR/SSG hybrid Astro frontend.
Fauxios is designed for zero-idle cost, high scalability, and seamless separation of concerns across web delivery, data persistence, and AI orchestration.
graph TD
subgraph Client ["π Client Tier"]
Users["Web Readers & Visitors"]
Social["Social Platforms (X / Facebook)"]
end
subgraph Frontend ["π₯οΈ Web & API Layer (AWS / SST)"]
Astro["Astro 5 Web App (fauxios.com)"]
APIGW["AWS API Gateway V2"]
end
subgraph Orchestration ["βοΈ AWS Step Functions (Orchestration Engine)"]
FauxiosSFN["FauxiosOrchestrator<br/>(Daily News Articles)"]
VideoSFN["VideoOrchestrator<br/>(3-Act Video Newscasts)"]
TruthSFN["TruthVersesOrchestrator<br/>(3-Day Graphic Posts)"]
TruthReelSFN["TruthReelOrchestrator<br/>(Reels: Mon/Wed/Fri)"]
RevReelSFN["RevolutionReelOrchestrator<br/>(Reels: Tue/Thu/Sat)"]
end
subgraph Storage ["πΎ Data & Storage Layer"]
Dynamo["Amazon DynamoDB<br/>(Articles & Authors Tables)"]
S3["Amazon S3 Buckets<br/>(Images, Processed & Video Assets)"]
Pinecone["Pinecone Vector DB<br/>(RAG Knowledge Base)"]
end
subgraph AI ["π§ AI & Media Services"]
Gemini["Google Gemini AI<br/>(Text & Image Prompts)"]
Runway["RunwayML Gen-1 / Gen-2<br/>(Cartoon & Avatar Video)"]
Polly["Amazon Polly<br/>(Speech Synthesis)"]
Remotion["Remotion Lambda<br/>(Video Compositing)"]
Apify["Apify / Newsdata APIs<br/>(Live Ingestion)"]
end
Users -->|HTTP GET| Astro
Astro -->|Fetch Content| APIGW
APIGW -->|Query GSIs| Dynamo
FauxiosSFN -->|RAG Search| Pinecone
FauxiosSFN -->|Draft Article / Image| Gemini
FauxiosSFN -->|Persist Post| Dynamo
FauxiosSFN -->|Store Cover| S3
FauxiosSFN -->|Publish| Social
VideoSFN -->|Synthesize Speech| Polly
VideoSFN -->|Animate Video Assets| Runway
VideoSFN -->|Render Composition| Remotion
VideoSFN -->|Store Video| S3
TruthSFN -->|Ingest Trends| Apify
TruthSFN -->|Generate Content| Gemini
TruthSFN -->|Publish Post| Social
TruthReelSFN -->|RAG & AI Draft| Gemini
TruthReelSFN -->|Render Vertical Video| Remotion
TruthReelSFN -->|Publish Reel| Social
RevReelSFN -->|RAG & AI Draft| Gemini
RevReelSFN -->|Render Vertical Video| Remotion
RevReelSFN -->|Publish Reel| Social
Fauxios utilizes modular AWS Step Functions state machines to govern complex, multi-step asynchronous AI pipelines.
Triggered automatically via AWS EventBridge Cron on a daily schedule, this state machine manages the end-to-end editorial lifecycle.
sequenceDiagram
autonumber
actor Cron as AWS EventBridge Cron (Daily)
participant SFN as FauxiosOrchestrator
participant L1 as GenerateArticleContent
participant L2 as GenerateArticleImage
participant L3 as AssemblePost
participant L4 as PostToSocials
participant DB as DynamoDB & S3
participant Ext as Social Media (X / FB)
Cron->>SFN: Trigger Daily Execution
SFN->>L1: Invoke Content Generator
L1->>L1: Query Pinecone (RAG) & Newsdata feeds
L1->>L1: Draft comprehensive journalism via Google Gemini AI
L1-->>SFN: Return Article Draft Payload
SFN->>L2: Invoke Image Generator
L2->>L2: Generate AI prompt & synthesize cover image
L2->>DB: Process with Sharp & store in S3
L2-->>SFN: Return S3 Image URLs
SFN->>L3: Invoke Post Assembler (Article + Image)
L3->>DB: PutItem into DynamoDB Articles Table
L3-->>SFN: Return Assembled Post Payload
SFN->>L4: Invoke Social Poster
L4->>Ext: Publish to Twitter (X) & Facebook Page
L4-->>SFN: Execution Complete
Generates rich broadcast videos by executing voiceover and avatar animations in parallel before passing them to an AWS Remotion Lambda cluster for high-definition rendering.
stateDiagram-v2
[*] --> Input: Receive Headline, Cartoon Image, Quote & Author
state Input {
[*] --> PrepareData
}
state GenerateAssetsInParallel {
state "Branch A: Voiceover Speech" as B1
state "Branch B: Talking Avatar Video" as B2
[*] --> B1
[*] --> B2
B1 --> Polly: GenerateVoiceover Lambda (AWS Polly)
Polly --> S3_Voice: Save voiceover.mp3 to S3
B2 --> Runway: GenerateAvatar Lambda (RunwayML Gen-1)
Runway --> S3_Avatar: Save avatar.mp4 to S3
}
Input --> GenerateAssetsInParallel
GenerateAssetsInParallel --> RenderFinalVideo: Aggregate S3 Asset URLs
state RenderFinalVideo {
[*] --> RemotionClient: Invoke renderVideo Lambda
RemotionClient --> RemotionLambda: Trigger AWS Remotion Renderer
RemotionLambda --> Composite: Composite Voiceover + Cartoon + Avatar
Composite --> S3_Video: Output final_video.mp4 to S3
}
RenderFinalVideo --> [*]: Return Video Asset URL
To maintain continuous engagement across social platforms, Fauxios operates three specialized, scheduled social pipelines:
graph LR
subgraph TruthVerses ["π Truth vs Verse (Every 3 Days)"]
TV_Trigger["Cron Schedule"] --> TV_Gen["GenerateTruthVsVerse<br/>(Apify + Gemini AI)"]
TV_Gen --> TV_Render["Satori + Resvg + Sharp<br/>(Custom Graphic Generation)"]
TV_Render --> TV_Post["PostTruthToFacebook<br/>(Page Feed Publishing)"]
end
subgraph TruthReel ["π Truth Reel (Mon / Wed / Fri - 16:00 UTC)"]
TR_Trigger["Cron Schedule"] --> TR_Data["GenerateTruthVsVerseData<br/>(Gemini AI)"]
TR_Data --> TR_Img["GenerateBiblicalTruthImage<br/>(Gemini AI)"]
TR_Img --> TR_Render["RenderTruthReel<br/>(Remotion Vertical Video)"]
TR_Render --> TR_Post["PostTruthReelToFacebook<br/>(Facebook Reels)"]
end
subgraph RevReel ["π½ Revolution Reel (Tue / Thu / Sat - 16:00 UTC)"]
RR_Trigger["Cron Schedule"] --> RR_Data["GenerateTruthVsFoundingData<br/>(Pinecone RAG + Gemini AI)"]
RR_Data --> RR_Img["GenerateMillerRevolutionImage<br/>(Gemini AI)"]
RR_Img --> RR_Render["RenderRevolutionReel<br/>(Remotion Vertical Video)"]
RR_Render --> RR_Post["PostRevolutionReelToFacebook<br/>(Facebook Reels)"]
end
fauxios-project/
βββ src/
β βββ functions/ # AWS Lambda Serverless Handlers
β β βββ articles.ts # API Gateway handler for article retrieval
β β βββ assemblePost.ts # Article & image DynamoDB assembler
β β βββ generateArticle*.ts # Gemini AI text & image generators
β β βββ generateAvatar.ts # RunwayML avatar video generator
β β βββ generateVoiceover.ts # AWS Polly speech synthesis
β β βββ renderVideo.ts # Remotion Lambda video render trigger
β β βββ postToSocials.ts # Twitter (X) & Facebook publishing
β β βββ *ReelTrigger.ts # Scheduled EventBridge cron triggers
β βββ pages/ # Astro 5 SSR/SSG Web Pages & Routing
β βββ components/ # UI Components & Layouts
β βββ styles/ # Tailwind CSS Design System
βββ packages/
β βββ scripts/ # CLI maintenance, diagnostics & seeding scripts
β βββ video-renderer/ # Remotion React video composition templates
βββ public/
β βββ images/ # Static brand logos, SVGs & placeholders
β βββ favicon.svg # Site iconography
βββ sst.config.ts # Infrastructure-as-Code (IaC) configuration
βββ package.json # Project dependencies and script definitions
βββ VIDEO_GENERATION_ARCHITECTURE.md # Detailed Remotion & video documentation
| Category | Technologies & Tools |
|---|---|
| Frontend Framework | Astro v5 (Hybrid SSR / SSG), Tailwind CSS |
| Infrastructure & IaC | SST v3 (Ion), AWS Serverless Platform |
| Compute & Orchestration | AWS Step Functions, AWS Lambda, EventBridge Cron |
| Database & Storage | Amazon DynamoDB (with 3 GSIs), Amazon S3 |
| Vector RAG & Search | Pinecone Vector Database |
| Artificial Intelligence | Google Gemini AI (Content & Image Prompts), RunwayML Gen-1/Gen-2, Amazon Polly |
| Video & Graphic Rendering | Remotion (Lambda Cluster), Satori, Sharp, Resvg |
| Social Media & Ingestion | Twitter API v2, Facebook Graph API, Apify, Newsdata.io |
- Node.js: v18.0.0 or later
- AWS Credentials: Configured locally with administrator access for SST resource provisioning (
~/.aws/credentials). - SST CLI: Installed globally (
npm install -g sst).
Clone the repository and install the Node.js dependencies:
git clone <repository-url>
cd fauxios-project
npm installFauxios uses SST's encrypted secret store (sst.Secret) to manage API keys and OAuth tokens securely across environments. Configure the required secrets before your initial deployment:
# Twitter / X Credentials
npx sst secret set TwitterApiKey "your_twitter_api_key" --stage dev
npx sst secret set TwitterApiSecret "your_twitter_api_secret" --stage dev
npx sst secret set TwitterAccessToken "your_twitter_access_token" --stage dev
npx sst secret set TwitterAccessTokenSecret "your_twitter_token_secret" --stage dev
# Facebook Page Credentials
npx sst secret set FacebookUserId "your_fb_user_id" --stage dev
npx sst secret set FacebookUserAccessToken "your_fb_user_token" --stage dev
npx sst secret set FacebookPageId "your_fb_page_id" --stage dev
npx sst secret set FacebookPageAccessToken "your_fb_page_token" --stage dev
# AI & Data Ingestion Keys
npx sst secret set GeminiApiKey "your_gemini_api_key" --stage dev
npx sst secret set PineconeApiKey "your_pinecone_api_key" --stage dev
npx sst secret set NewsdataApiKey "your_newsdata_api_key" --stage dev
npx sst secret set ApifyApiKey "your_apify_api_key" --stage dev
npx sst secret set RunwayApiKey "your_runwayml_api_key" --stage devStart the local Astro frontend and bind live AWS Lambda development sessions:
npx sst devThis launches your local development server at http://localhost:4321 with real-time cloud reloading.
Deploy the full serverless stack (Astro site, API Gateway V2, Step Functions, DynamoDB, S3, and Cron triggers) to your AWS account:
npm run deploy:prod
# Or manually via SST:
npx sst deploy --stage devTip
macOS Homebrew Troubleshooting: If you encounter a flag provided but not defined: -root error during deployment on macOS, SST's internal Pulumi engine may be conflicting with a global Homebrew Pulumi installation. Run brew unlink pulumi before deploying, and brew link pulumi afterward when needed.
Fauxios includes an extensive suite of maintenance, seeding, and manual workflow triggering scripts located in packages/scripts/. Execute these within the SST shell environment to inherit the necessary AWS IAM permissions and environment variables:
# General execution syntax:
npx sst shell --stage dev -- npm run <script-name>| Script Name | Command | Description |
|---|---|---|
invoke-generator |
npm run invoke-generator |
Manually triggers the daily FauxiosOrchestrator article generation pipeline. |
invoke-truth-verses |
npm run invoke-truth-verses |
Manually triggers the TruthVersesOrchestrator graphic & social post workflow. |
invoke-truth-reel |
npm run invoke-truth-reel |
Manually triggers the TruthReelOrchestrator Remotion video reel workflow. |
invoke-revolution-reel |
npm run invoke-revolution-reel |
Manually triggers the RevolutionReelOrchestrator historical comparison reel workflow. |
reindex-articles |
npm run reindex-articles |
Re-indexes all existing DynamoDB articles across createdAt, postedToSocial, and topic GSIs. |
scan-topics |
npm run scan-topics |
Diagnostic tool to inspect topic distribution across database items. |
clear-articles-by-date |
npm run clear-articles-by-date |
Prunes legacy or test articles from DynamoDB based on timestamp ranges. |
normalize-sources |
npm run normalize-sources |
Clean and format raw text source documents for ingestion. |
setup-index |
npm run setup-index |
Initializes and configures the primary Pinecone vector database index. |
seed-pinecone |
npm run seed-pinecone |
Embeds and seeds vector embeddings from source documents into Pinecone RAG. |
seed-authors |
npm run seed-authors |
Seeds the DynamoDB authors table with baseline AI editorial personas. |
The backend exposes a public AWS API Gateway V2 REST API for querying published articles and topic metadata:
| HTTP Method | Endpoint | Description |
|---|---|---|
GET |
/articles |
Retrieve a paginated list of all published news articles. |
GET |
/articles/{articleId} |
Fetch full content and metadata for a specific article by its UUID. |
GET |
/topics |
List all available article topics and category classifications. |
GET |
/articles/topic/{topic} |
Query articles filtered by a specific topic index using DynamoDB GSIs. |
- Video Architecture: For a deep dive into Remotion Lambda infrastructure and video compositing, see
VIDEO_GENERATION_ARCHITECTURE.md. - Facebook Integration: For guidelines on configuring long-lived Facebook Graph API tokens, see
facebook_posting_notes.md. - License: This project is licensed under the MIT License.
Built with β€οΈ using SST, Astro, and Google Gemini.