This folder is for articles, campaign assets, voiceover scripts, generated audio, and generated videos.
The campaign structure is split into horizontal narrative campaigns first, then use-case campaigns. This keeps Genesis Mesh positioned as portable trust infrastructure for sovereign systems, not as an AI-only product.
This repository is intended to be public. The checked-in content should be publishable campaign source, reusable tooling, messaging guidance, and shared public assets. Local secrets, drafts, generated audio, generated videos, Revid job responses, and temporary upload metadata are intentionally ignored.
genesismesh-content/
MESSAGING.md
campaigns/
01-why-genesismesh/
02-portable-trust/
03-sovereign-systems/
04-recognition-and-revocation/
05-auditable-trust-state/
06-protocol-interoperability/
07-trust-api-and-sdks/
08-use-cases/
01-ai-agents/
02-edge-infrastructure/
03-supply-chain-trust/
04-enterprise-integration/
05-data-access-governance/
shared/
images/
brand/
marketing/
examples/
gifs/
templates/
skills/
genesismesh-campaign-pipeline/
videos/
scripts/
generate_tts.py
generate_video.py
generate_revid_video.py
generate_thumbnails.py
.env
revid-jobs/
renders/
thumbnails/
Short slogan:
Genesis Mesh: portable trust for sovereign systems.
Use MESSAGING.md as the top-level messaging contract before drafting or generating campaign content.
Reusable agent workflows live under skills/. Use skills/genesismesh-campaign-pipeline/SKILL.md for end-to-end campaign creation: campaign scaffolding, article interrogation, voiceover, SSML, Azure TTS, Revid rendering, thumbnails, and publishing metadata.
Campaign rules:
- Lead with systems, trust, sovereignty, recognition, revocation, and auditability.
- Treat AI agents as one use case, not the top-level frame.
- Avoid marketplace, token, reputation-score, central-registry, blockchain, and agent-framework language.
- Keep claims aligned with
genesismesh/VISION.mdandgenesismesh/docs/development/strategy.md.
The text-to-speech step reads each campaign's voiceover. Use voiceover.md for drafting and voiceover.ssml for production delivery. If voiceover.ssml exists, the TTS script uses it. Otherwise it falls back to voiceover.md.
Voice is dynamic:
- Set a default voice in
videos/scripts/.env. - Override it per campaign in
campaign.json. - Override it per command with
--voice. - Replace the TTS provider later without changing campaign content.
The current script targets Azure AI Speech using the Speech SDK.
The selected campaign voice map lives in videos/scripts/VOICE_PLAN.md. Each campaign uses a distinct Azure DragonHDLatestNeural voice that was available to this workspace at selection time.
SSML is useful for campaign speeches because it controls pauses, emphasis, pacing, and pronunciation while keeping the article draft readable.
Minimal campaign SSML:
<speak version="1.0" xml:lang="en-US">
<voice name="en-US-Adam:DragonHDLatestNeural">
Genesis Mesh is <emphasis level="moderate">portable trust</emphasis> for sovereign systems.
<break time="600ms"/>
Systems can connect today. But trust still breaks at the boundary.
</voice>
</speak>Expected .env keys:
AZURE_SPEECH_KEY=
AZURE_SPEECH_ENDPOINT=https://<resource>.cognitiveservices.azure.com/
AZURE_SPEECH_VOICE=en-US-Adam:DragonHDLatestNeural
Generate audio using the stable campaign slug from campaign.json:
python .\videos\scripts\generate_tts.py portable-trust
python .\videos\scripts\generate_tts.py use-cases/ai-agentsThe output goes to:
campaigns/<campaign>/audio/narration.wav
The video step reads campaign.json, takes the configured images, requires generated narration by default, and renders a video with ffmpeg.
Generate video with audio:
python .\videos\scripts\generate_video.py portable-trustRender a deliberate silent draft:
python .\videos\scripts\generate_video.py portable-trust --no-audioThe output goes to:
videos/renders/<campaign-slug>.mp4
Keep videos/renders/ as the single local location for rendered videos. Do not duplicate MP4s into campaign folders; campaign campaign.json files reference the canonical render path.
Use videos/ as the video production workspace:
videos/scripts/: reusable local automation.videos/thumbnails/: final upload thumbnails, reviewed and safe to commit.videos/renders/: generated local MP4s and review frames, ignored by Git.videos/revid-jobs/: Revid request/status files and temporary upload metadata, ignored by Git.
Final upload thumbnails live in:
videos/thumbnails/<campaign-slug>.png
generate_revid_video.py is the optional higher-polish video path. Use it for stock footage, moving AI images, richer captions, and social-video variants.
Cost posture:
- Revid render calls consume credits. The Revid API documents a base render cost plus generation costs.
- Always run
estimatebeforerender. - Azure Speech remains the default TTS path because it is cheaper for this workspace.
- Revid voice generation is opt-in with
--revid-voice. - Revid background music is opt-in with
--music. stock-videois the default media type because it avoids AI visual-generation cost; usemoving-imageorai-videodeliberately when the campaign needs it.- For production campaign videos, prefer Revid
audio-to-videowith the generated Azure narration. This keeps the approved voice track and lets Revid supply stock footage and captions. audio-to-videorequires a public audio URL. If--audio-urlis omitted, the script uploadscampaigns/<campaign>/audio/narration.wavto a temporary file host and caches the direct URL undervideos/revid-jobs/.
Estimate credits:
python .\videos\scripts\generate_revid_video.py estimate portable-trustRender with default cost controls:
python .\videos\scripts\generate_revid_video.py render portable-trust --yesRender with Revid-generated voice and moving AI images:
python .\videos\scripts\generate_revid_video.py estimate portable-trust --media-type moving-image --revid-voice
python .\videos\scripts\generate_revid_video.py render portable-trust --media-type moving-image --revid-voice --yesRender with approved Azure audio, real stock footage, and subtitles:
python .\videos\scripts\generate_revid_video.py estimate portable-trust --workflow audio-to-video --media-type stock-video --density high --caption-preset Elegant --ratio 16:9
python .\videos\scripts\generate_revid_video.py render portable-trust --workflow audio-to-video --media-type stock-video --density high --caption-preset Elegant --ratio 16:9 --yesPoll a render:
python .\videos\scripts\generate_revid_video.py poll <revid-project-id>- Check
MESSAGING.md. - Update
campaign.jsonmetadata: status, audience, channels, primary message, call to action, and source docs. - Edit
article.md. - Edit
voiceover.md. - Add or update
voiceover.ssmlwhen the speech is ready for production TTS. - Adjust
campaign.jsonimages, voice, and timing. - Generate narration with
generate_tts.py. - Generate a fast local video with
generate_video.py, or estimate and render a polished Revid video withgenerate_revid_video.py. - Review the rendered video before publishing.
Each campaign should keep this structure:
article.md
campaign.json
youtube.md
patreon.md
voiceover.md
voiceover.ssml
audio/
Use youtube.md for YouTube-optimized titles, descriptions, tags, thumbnails, and video links. Use patreon.md for the article/founder-note version; Patreon titles can stay editorial and do not need to match YouTube titles exactly.
source_docs entries in campaign.json refer to source paths in the upstream genesismesh repository unless the file also exists in this content repo.
Shared GIFs from the Genesis Mesh docs live in shared/examples/gifs/ and can be added to campaigns later as proof/demo material.
Before making this repository public, keep this boundary intact:
- Commit campaign source:
article.md,voiceover.md,voiceover.ssml,youtube.md,patreon.md,campaign.json, messaging docs, scripts, shared public images, final upload thumbnails, and examples. - Do not commit local
.envfiles, API keys, Azure/Revid credentials, generated narration, rendered videos, Revid job responses, temporary audio URLs, or local drafts. - Use
videos/scripts/.env.examplefor documented environment variables. - Keep generated output under ignored folders such as
campaigns/**/audio/,videos/renders/, andvideos/revid-jobs/. - If a generated asset is intentionally public, move it into a deliberate shared/public path and review it before committing.