DEV Community

Roberto Luna
Roberto Luna

Posted on

TL;DR

TL;DR

I updated the content-automation repository to make Bluesky secrets optional by platform and replaced deprecated Groq models with qwen/qwen3.6-27b and openai/gpt-oss-20b. These changes enable more flexible and secure content publishing.

The Problem

The content-automation project faced two main issues:

  1. Bluesky Identifier Requirement: The BLUESKY_IDENTIFIER was previously required, but Dev.to no longer needs it, causing errors when publishing.
  2. Deprecated Groq Models: The models llama-3.3-70b-versatile were deprecated, affecting long-form content generation.

What I Tried First

Initially, I attempted to address these issues by:

  • Removing the BLUESKY_IDENTIFIER check but encountered errors due to missing platform-specific configurations.
  • Replacing the deprecated models with temporary fixes, which didn't resolve the generation issues.

The Implementation

Making Bluesky Secrets Optional

In src/main.py, I modified the environment variable checks to make BLUESKY_IDENTIFIER and BLUESKY_PASSWORD optional based on the platform:

def main() -> None:
    gh_token = _require_env("GH_TOKEN")
    openai_key = _require_env("GROQ_API_KEY")
    bsky_id = os.getenv("BLUESKY_IDENTIFIER")
    bsky_pass = os.getenv("BLUESKY_PASSWORD")

    # ... rest of the function
Enter fullscreen mode Exit fullscreen mode

Updating Groq Models

In config/settings.yml, I updated the AI model configurations:

ai:
  # Long-form content (Medium, Dev.to, Substack weekly)
  model_longform: qwen/qwen3.6-27b
  # Short-form content (Bluesky, Twitter)
  model_shortform: openai/gpt-oss-20b
Enter fullscreen mode Exit fullscreen mode

In src/content_generator.py, I reflected these changes:

# Models — use powerful model for long-form, fast model for short-form
MODEL_LONGFORM = "qwen/qwen3.6-27b"
MODEL_SHORTFORM = "openai/gpt-oss-20b"
Enter fullscreen mode Exit fullscreen mode

Adding Dev.to Platform Flag

I introduced a platform flag to handle Dev.to specifics:

def generate_content(platform: str, **kwargs):
    if platform == "devto":
        # Dev.to specific logic
        pass
    # ... other platforms
Enter fullscreen mode Exit fullscreen mode

Key Takeaway

When updating dependencies and configurations, ensure platform-specific requirements are met and handle optional dependencies gracefully. This prevents errors and enhances flexibility.

What's Next

Next, I will focus on implementing automated testing for these changes to ensure the content generation works flawlessly across all platforms.

vibecoding #buildinpublic #AI #Productivity #Cybersecurity


Part of my Build in Public series — sharing the real process of building SaaS projects from Playa del Carmen, México.

Repo: zaerohell/content-automation · 2026-06-23

#playadev #buildinpublic

Top comments (0)