Skip to main content

Multi-platform AI marketing content generator with calendar, SEO optimizer, brand voices, and multi-language support

Project description

ContentFlow

Multi-platform AI marketing content generator — Instagram, LinkedIn, Twitter, TikTok, Email, Blog, SEO. Works offline with curated templates or online with HuggingFace AI.

PyPI version CI Python 3.10+ License: MIT

Installation

pip install contentflow

Quick Start

from contentflow import ContentGenerator

gen = ContentGenerator()

# Generate platform-specific content
post = gen.generate("AI productivity tools", platform="linkedin", tone="professional")
print(post)

# Instagram ad copy for travel
copy = gen.generate_ad_copy("Istanbul", vibe="romantic", platform="Instagram")
print(copy)

Features at a Glance

Feature Description
ContentGenerator Multi-platform content — 8 platforms, 5 brand voices, 5 languages
ContentCalendar Weekly + monthly content calendars with auto-scheduling
SEOOptimizer Meta tags, titles, blog outlines, keyword extraction
score_content() Readability, engagement, hashtag quality, length fit scoring
batch_generate() Generate content for multiple topics at once
AI mode Optional HuggingFace Inference API (flan-t5-large)
Offline mode 100% offline with 50+ curated templates

ContentGenerator — 8 Platforms

from contentflow import ContentGenerator

gen = ContentGenerator(brand_voice="startup")

platforms = ["instagram", "linkedin", "twitter", "tiktok", "email", "blog", "sms", "push"]
for platform in platforms:
    content = gen.generate("product launch", platform=platform, tone="exciting")
    print(f"[{platform.upper()}]", content[:80], "\n")

Brand Voices

# Available: startup | enterprise | creative | minimal | friendly
gen_corp   = ContentGenerator(brand_voice="enterprise")
gen_fun    = ContentGenerator(brand_voice="creative")
gen_clean  = ContentGenerator(brand_voice="minimal")

post = gen_corp.generate("quarterly results", platform="linkedin", tone="professional")

Multi-language Support

gen_tr = ContentGenerator(language="tr")
gen_de = ContentGenerator(language="de")
gen_fr = ContentGenerator(language="fr")
gen_es = ContentGenerator(language="es")

tr_post = gen_tr.generate("dijital pazarlama", platform="instagram")
de_post = gen_de.generate("Digitales Marketing", platform="linkedin")

Batch Generation

results = gen.batch_generate(
    topics=["Paris", "Tokyo", "Istanbul", "New York"],
    platform="instagram",
    tone="adventurous",
)
for r in results:
    print(f"{r['topic']}: {r['content'][:60]}...")

Content Scoring

content = gen.generate("AI startup funding", platform="linkedin")
score = gen.score_content(content, platform="linkedin")

print(f"Readability:  {score.readability:.0%}")
print(f"Engagement:   {score.engagement:.0%}")
print(f"Hashtags:     {score.hashtag_quality:.0%}")
print(f"Length fit:   {score.length_fit:.0%}")
print(f"Overall:      {score.overall:.0%}")

AI Mode (HuggingFace)

import os
os.environ["HF_API_TOKEN"] = "hf_your_token_here"

gen = ContentGenerator()  # auto-reads HF_API_TOKEN
ai_copy = gen.generate("sustainable fashion brand", platform="instagram", tone="authentic")

ContentCalendar — Weekly & Monthly Scheduling

from contentflow import ContentCalendar

cal = ContentCalendar()

# One week of content across platforms
week = cal.generate_week(
    topic="machine learning for marketers",
    platforms=["linkedin", "twitter", "instagram"],
)

print(f"Generated {len(week.posts)} posts")
for post in week.posts:
    print(f"  {post.day:10s} | {post.platform:10s} | {post.content[:60]}...")

# Export to dict (e.g. for a CMS or Notion API)
data = week.to_dict()

Monthly Calendar

weeks = cal.generate_month(
    topics=["AI tools", "productivity hacks", "startup lessons", "remote work"],
    platforms=["linkedin", "twitter"],
)

for i, week in enumerate(weeks, 1):
    print(f"Week {i}: {len(week.posts)} posts scheduled")

SEOOptimizer — Meta Tags & Blog Outlines

from contentflow import SEOOptimizer

seo = SEOOptimizer()

# Full meta bundle
bundle = seo.generate_meta(
    "Istanbul travel guide 2026",
    keywords=["Istanbul", "Turkey travel", "things to do in Istanbul"],
)
print(bundle)
# <title>Istanbul travel guide 2026 — Complete Guide for 2026</title>
# <meta name="description" content="...">
# <meta name="keywords" content="...">

# SEO title variants
print(seo.generate_title("Istanbul travel guide", style="how-to"))
print(seo.generate_title("Istanbul travel guide", style="list"))
print(seo.generate_title("Istanbul travel guide", style="question"))

# Blog post outline
outline = seo.generate_blog_outline("Top 10 AI tools for small businesses", sections=6)
for i, section in enumerate(outline, 1):
    print(f"{i}. {section}")

Full Pipeline Example

from contentflow import ContentGenerator, ContentCalendar, SEOOptimizer

brand = "TechStartup AI"
topic = "AI-powered customer service"

gen = ContentGenerator(brand_voice="startup", language="en")
cal = ContentCalendar(generator=gen)
seo = SEOOptimizer()

# Generate & score a LinkedIn post
post = gen.generate(topic, platform="linkedin", tone="professional")
score = gen.score_content(post, platform="linkedin")
print(f"Post score: {score.overall:.0%}\n{post}\n")

# Generate one week of content
week = cal.generate_week(topic, platforms=["linkedin", "twitter", "instagram"])
print(f"Scheduled {len(week.posts)} posts\n")

# SEO bundle for blog
bundle = seo.generate_meta(topic, keywords=["AI", "customer service", "automation"])
outline = seo.generate_blog_outline(f"How {topic} is changing business in 2026")
print(bundle.title)
for section in outline:
    print(" →", section)

Travel Quotes (Backward Compat)

gen = ContentGenerator()
print(gen.get_travel_quote("Adventure"))   # Amelia Earhart, Tolkien, Oprah...
print(gen.get_travel_quote("Culture"))     # Mark Twain, Saint Augustine...
print(gen.get_travel_quote("Mindset"))     # Hans Christian Andersen...

License

MIT — Teyfik Öz

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

contentflow-1.1.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

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

contentflow-1.1.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file contentflow-1.1.0.tar.gz.

File metadata

  • Download URL: contentflow-1.1.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for contentflow-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b4b36370a11ea981ec92fc876fac5d135cfa7747bcc62771bd06c9be708d3464
MD5 b6c54602059af938294a465f30151c88
BLAKE2b-256 c0e1e49b93521948519aa661415587d113cf7d1d736908b1cbd87e9cbeed0daf

See more details on using hashes here.

File details

Details for the file contentflow-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: contentflow-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for contentflow-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73f1ef30bdc4fa94c1693a1cce433bd5bc4bae87420a0aaf90c079237fa67cd7
MD5 0e4e4f80e9fe8717fb7545164d6313f7
BLAKE2b-256 61ae973252668d5f98f12479fcac23d155cca42df25b4585de64ac67a1947e4e

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