Skip to main content

AI powered cost-effective content creation 🧪

Project description

🧪 mediaichemy: cost-effective AI powered content creation

mediaichemy is a Python library for generating cheap and cost effective multimedia content using AI. It intelligently selects models and workflows to minimize costs while delivering high-quality results.

Usage ovewview

mediaichemy offers a simple yet powerful approach to content creation:

  • Media: Choose a specific media type and edit its parameters to create the content you want.
  • MediaCreator Use AI to generate content ideas for you and create them.

Both approaches use the same underlying Media system, with MediaCreator adding an AI layer that handles the creative decisions for you. All content creation automatically optimizes for cost-effectiveness by choosing the best-performing, lowest-cost AI models.

What's Inside

🚀 Getting Started

🔑 Setting up API keys

🎬 Media

🧠 Using the MediaCreator

Getting Started

mediaichemy logo 1. Clone the repository:
git clone https://github.com/your-repo/mediaichemy.git
cd mediaichemy
  1. Install dependencies:
pip install -e .
  1. Set up API keys for OpenRouter and Runware (see below).

Setting up API keys

1. Create an OpenRouter Account

3. Create a Runware Account

3. Configure your API keys as environment variables:

Linux/macOS (Terminal):

export OPENROUTER_API_KEY="your_openrouter_api_key"
export RUNWARE_API_KEY="your_runware_api_key"

Windows (Command Prompt):

set OPENROUTER_API_KEY=your_openrouter_api_key
set RUNWARE_API_KEY=your_runware_api_key

Windows (PowerShell)

$env:OPENROUTER_API_KEY="your_openrouter_api_key"
$env:RUNWARE_API_KEY="your_runware_api_key"

Option 2: Use a .env File

Create a file named .env in your project root with the following content:

OPENROUTER_API_KEY=your_openrouter_api_key
RUNWARE_API_KEY=your_runware_api_key

Media

Each Media type creates a specific form of content using AI and editing tools to craft it.

Single Media Examples

Media created using a single AI source.

Image

from mediaichemy.media.single import Image
from mediaichemy.media.parameters import ImageParameters

image_params = ImageParameters(
    image_prompt="A cat on a skateboard",
    image_model="rundiffusion:110@101"
)
image = Image(params=image_params)

Video

from mediaichemy.media.single import Video
from mediaichemy.media.parameters import VideoParameters

video_params = VideoParameters(
    video_prompt="A dog running in the park",
    video_model="bytedance:1@1",
    duration=10.0,
    width=1088,
    height=1920
)
video = Video(params=video_params)

Narration

from mediaichemy.media.single import Narration
from mediaichemy.media.parameters import NarrationParameters

narration_params = NarrationParameters(
    narration_text="Welcome to the show!",
    narration_voice_name="en_US-amy-medium",
    narration_silence_tail=5,
    narration_speed=1.0
)
narration = Narration(params=narration_params)

Multi Media Examples

Media created combining multiple AI sources.

Video from Image

from mediaichemy.media.multi import VideoFromImage
from mediaichemy.media.parameters import VideoFromImageParameters

video_from_image_params = VideoFromImageParameters(
    video_prompt="A sunrise over mountains",
    image_model="rundiffusion:110@101",
    video_model="bytedance:1@1",
    duration=6,
    width=1088,
    height=1920
)
video_from_image = VideoFromImage(params=video_from_image_params)

Narration with Background

from mediaichemy.media.multi import NarrationWithBackground
from mediaichemy.media.parameters import NarrationWithBackgroundParameters

narration_bg_params = NarrationWithBackgroundParameters(
    narration_text="Relax and breathe.",
    narration_voice_name="en_US-amy-medium",
    narration_silence_tail=5,
    narration_speed=1.0,
    background_relative_volume=0.5,
    background_youtube_urls=["https://youtube.com/example"]
)
narration_bg = NarrationWithBackground(params=narration_bg_params)

Narrated Video

from mediaichemy.media.multi import NarratedVideo
from mediaichemy.media.parameters import NarratedVideoParameters

narrated_video_params = NarratedVideoParameters(
    video_prompt="A city at night",
    image_model="rundiffusion:110@101",
    video_model="bytedance:1@1",
    duration=6,
    width=1088,
    height=1920,
    narration_text="The city never sleeps.",
    narration_voice_name="en_US-amy-medium",
    narration_silence_tail=5,
    narration_speed=1.0,
    background_relative_volume=0.5,
    background_youtube_urls=[]
)
narrated_video = NarratedVideo(params=narrated_video_params)

Subtitled Narrated Video

from mediaichemy.media.multi import SubtitledNarratedVideo
from mediaichemy.media.parameters import SubtitledNarratedVideoParameters

subtitled_narrated_video_params = SubtitledNarratedVideoParameters(
    video_prompt="A forest in the rain",
    image_model="rundiffusion:110@101",
    video_model="bytedance:1@1",
    duration=6,
    width=1088,
    height=1920,
    narration_text="Listen to the rain.",
    narration_voice_name="en_US-amy-medium",
    narration_silence_tail=5,
    narration_speed=1.0,
    background_relative_volume=0.5,
    background_youtube_urls=[],
    subtitle_fontname="Arial",
    subtitle_fontsize=18,
    subtitle_color="#FFEE00C7",
    subtitle_outline_color="#000000",
    subtitle_positions=["bottom_center", "top_center", "middle_center"]
)
subtitled_narrated_video = SubtitledNarratedVideo(params=subtitled_narrated_video_params)

Using the MediaCreator

By using MediaCreator, you let AI create ideas for you. You can use it to generate content for a specific media type or let it pick the best type for you automatically based on your prompt.

MediaCreator

Using MediaCreator with a specific media type

from mediaichemy.creator import MediaCreator
from mediaichemy.media.multi import SubtitledNarratedVideo

creator = MediaCreator(media_type=SubtitledNarratedVideo)
media = await creator.create(
    user_prompt="Create a short, inspiring narrated video about the beauty of rainforests, with subtitles."
)
# media is an instance of SubtitledNarratedVideo

Letting MediaCreator pick the best media type

from mediaichemy.creator import MediaCreator

creator = MediaCreator()  # No media_type specified
media = await creator.create(
    user_prompt="Create a TikTok post that explains quantum entanglement in a fun and visual way."
)
# media will be an instance of the most appropriate media type (e.g., SubtitledNarratedVideo)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mediaichemy-0.1.0b1.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mediaichemy-0.1.0b1-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file mediaichemy-0.1.0b1.tar.gz.

File metadata

  • Download URL: mediaichemy-0.1.0b1.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for mediaichemy-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 cbb1512dbd4d0274b0187e8884755edf3e28ee9f1daa89f651beda91833642e5
MD5 3577a053a6c2aa0111cfaebcda072158
BLAKE2b-256 bab04f4b0d88e39358bb742cf2d0dc38a17d2955a14511e05a8b95abb0032a45

See more details on using hashes here.

File details

Details for the file mediaichemy-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: mediaichemy-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for mediaichemy-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 66385834a107e142b0ca96068a30431622c61ead1501d8371e0a93966b15d084
MD5 ac162558155f95414d2a011628ad346c
BLAKE2b-256 d325c8cf46a583915033526cc0973fe22bf97ab93067aacd7e82ed4d72c896e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page