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 automation.

The Problem

The initial issue was that Dev.to no longer required the BLUESKY_IDENTIFIER secret, which caused errors when trying to automate content posting. Additionally, the Groq models used for content generation were deprecated and needed to be updated.

What I Tried First

My first approach was to remove the BLUESKY_IDENTIFIER requirement from the code. However, I realized that I needed to make the entire Bluesky configuration optional based on the platform.

The Implementation

Making Bluesky Secrets Optional

I modified the src/main.py file to make the Bluesky secrets optional:

def main() -> None:
    # ...

    gh_token = _require_env("GH_TOKEN")
    openai_key = _require_env("GROQ_API_KEY")
    # Removed the requirement for BLUESKY_IDENTIFIER
    bsky_id = os.getenv("BLUESKY_IDENTIFIER")
    bsky_pass = os.getenv("BLUESKY_PASSWORD")
Enter fullscreen mode Exit fullscreen mode

I also updated the code to handle cases where the Bluesky secrets are not provided:

if bsky_id and bsky_pass:
    # Use Bluesky credentials if available
    pass
else:
    # Handle the case where Bluesky credentials are not provided
    pass
Enter fullscreen mode Exit fullscreen mode

Replacing Deprecated Groq Models

I updated the config/settings.yml file to use the new models:

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

I also modified the src/content_generator.py file to use the new models:

# 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 added a platform flag to differentiate between Dev.to and other platforms:

# ...

if platform == "devto":
    # Use Dev.to specific settings
    pass
else:
    # Use default settings
    pass
Enter fullscreen mode Exit fullscreen mode

Key Takeaway

The key takeaway from this experience is that making secrets optional and using platform-specific settings can greatly improve the flexibility and security of content automation scripts.

What's Next

Next, I plan to add support for more platforms and improve the error handling for cases where secrets are not provided. I will also explore using more advanced models for content generation.

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)