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 problem was that Dev.to no longer required the BLUESKY_IDENTIFIER secret, which caused issues with the current implementation. Additionally, the Groq models llama-3.3-70b-versatile were deprecated and needed to be replaced.
What I Tried First
Initially, I tried to keep the BLUESKY_IDENTIFIER secret required, but this caused errors when deploying to Dev.to. I also attempted to use the deprecated Groq models, but this resulted in API errors.
The Implementation
To fix these issues, I made the following changes:
Make Bluesky Secrets Optional
In src/main.py, I updated the main function to make the BLUESKY_IDENTIFIER and BLUESKY_PASSWORD secrets optional:
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")
if bsky_id and bsky_pass:
# Use Bluesky secrets if available
pass
else:
# Handle case where Bluesky secrets are not available
pass
Update Groq Models
In config/settings.yml, I updated the ai section 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
In src/content_generator.py, I updated the model references:
# Models β use powerful model for long-form, fast model for short-form
MODEL_LONGFORM = "qwen/qwen3.6-27b"
MODEL_SHORTFORM = "openai/gpt-oss-20b"
Add Dev.to Platform Flag
I also added a devto platform flag to config/settings.yml to enable platform-specific configurations:
content:
# ...
platforms:
devto:
# Dev.to specific settings
pass
Key Takeaway
The key takeaway from this experience is to ensure that your content automation pipeline is flexible and adaptable to changing platform requirements. By making secrets optional and updating to new models, you can avoid errors and ensure smooth content generation.
What's Next
Next, I plan to integrate more platforms into the content automation pipeline and explore using other AI models for different content types. Stay tuned for more updates from the #vibecoding and #buildinpublic journey.
β Roberto Luna Osorio β Full Stack Developer & Project Lead
Playa del Carmen, MΓ©xico
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







