Skip to main content

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

Metadata

Release files for contentflow 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for contentflow 1.1.0
File Size Uploaded
contentflow-1.1.0.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for contentflow 1.1.0
File Interpreter ABI Platform
contentflow-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.6 kB

Release files / contentflow-1.1.0.tar.gz

Download URL contentflow-1.1.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b4b36370a11ea981ec92fc876fac5d135cfa7747bcc62771bd06c9be708d3464
BLAKE2b-256 checksum
How to use checksums
c0e1e49b93521948519aa661415587d113cf7d1d736908b1cbd87e9cbeed0daf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / contentflow-1.1.0-py3-none-any.whl

Download URL contentflow-1.1.0-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73f1ef30bdc4fa94c1693a1cce433bd5bc4bae87420a0aaf90c079237fa67cd7
BLAKE2b-256 checksum
How to use checksums
61ae973252668d5f98f12479fcac23d155cca42df25b4585de64ac67a1947e4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page