Project Story
Content Hub is a content generation add-on that creates platform-ready captions for X, Instagram, and LinkedIn. It helps users generate social media content that doesn’t just look good, but actually sounds like them by maintaining consistency in tone, style, and intent across platforms.
Try it here : Content Hub
Previously, we received an Adobe grant for img-crafter try it here, an AI-powered Adobe Express add-on that brings advanced image generation, editing, and style mimicking directly inside Adobe Express. img-crafter reached over 70 users in its first week after publishing, including paying customers, which reinforced our belief that well-integrated AI tools can meaningfully improve creative workflows.
While building AI-powered tools, we identified another gap where AI could create real user benefit, written content. Today, most AI-generated captions by LLMs feel generic and interchangeable. Even though large language models are powerful, they usually generate one-size-fits-all content that lacks personality and breaks a user’s existing voice and consistency online.
This led to the idea behind Content Hub.
Instead of generating generic captions, Content Hub focuses on personalization and voice consistency. It analyzes a user’s past posts to understand how they naturally write and then generates captions that align with that voice.
What is Content Hub?
Content Hub is an AI-powered content generation add-on designed to help users create high-quality, platform-ready social media captions quickly and consistently. Unlike regular LLM-based tools that generate generic, one-size-fits-all captions, Content Hub focuses on personalization and voice consistency.
Key features:
- Multi-platform caption generation: Generate captions tailored for X, Instagram, and LinkedIn, with each platform following its own tone and structure.
- Thinking Mode for higher-quality output: Enables deeper analysis and reasoning for more context-aware, refined captions
- Use My Voice: Content Hub analyzes a user’s past posts to understand their writing style, tone, expressions, and emoji usage. This allows captions to be generated in the user’s own voice, helping maintain consistency across posts.
- Editable and iterative workflow: Generated captions can be easily refined, such as changing dates, tone, or style without starting over.
How Does Content Hub Work?
Content Hub is designed to feel simple on the surface, while quietly handling a lot of complexity in the background. From the user’s perspective, everything happens inside a single interface where they choose a platform, describe what they want to say, and generate a caption that’s ready to post.
For every platform, users have a set of common controls that define how Content Hub generates content across all platforms.
- Prompt Input: Users write a short prompt describing what they want to communicate. This could be an announcement, invitation, promotion, or update.
- Use My Voice: When enabled, Content Hub conditions generation on the user’s personal writing style. This helps maintain consistency across posts and ensures captions feel familiar and authentic.
- Emoji Control: Users can choose whether emojis are allowed in the output.
- Hashtag Control: Users can toggle hashtags on or off. When enabled, relevant hashtags are added based on the content and platform.
- Thinking Mode: Thinking Mode enables deeper reasoning before generation. This produces more coherent and better-aligned output, especially for nuanced or detailed requests.
- Design Capture: Content Hub captures the current Adobe Express page the user is working on. This allows the system to understand real context such as visible text, layout, and visual intent.
X Tab:
The X tab is optimized for short, high-signal content where clarity and brevity matter most.
Users start by selecting the X tab and writing a simple prompt describing what they want to say. Content Hub then captures the current Adobe Express design and analyzes both the visual content and the user’s intent before generating a caption.
Since X has a strict character limit, Content Hub automatically:
- Enforces the 280-character constraint
- Prioritizes concise phrasing and strong hooks
- Adjusts tone based on whether Use My Voice and Thinking Mode are enabled
The generated caption is shown inside a tweet-style preview, allowing users to immediately see how it would look once published.
Taking an example: For a one-on-one tutoring post, Content Hub identifies details from the design such as the details, contact information, and any visible dates or locations. Using this context, it generates a concise tweet that clearly communicates the offering while staying within the character limit, making it ready to post without additional edits.

Instagram Tab:
The Instagram tab focuses on storytelling, engagement, and discoverability.
Here, Content Hub uses the same prompt and design capture flow but adapts the output for Instagram’s more expressive style.
The generated caption can include:
- A conversational tone
- Light emoji usage (if enabled)
- Relevant hashtags placed naturally at the end
The Instagram preview displays the captured design as the post image with the generated caption underneath, giving users a realistic view of how the post will appear in-feed.
For example: For the same one-on-one tutoring design, Content Hub extracts key information like the tutoring details, contact details, and location visible in the image. It then turns this into a friendly, inviting caption that encourages engagement, while keeping the content aligned with Instagram norms.

LinkedIn Tab:
The LinkedIn tab is designed for professional, value-driven communication.
Content Hub automatically adjusts the writing style to be more structured and informative. Emojis are intentionally avoided, and the focus is placed on clarity, credibility, and relevance. The generated post is displayed inside a LinkedIn-style preview, helping users validate tone and formatting before copying.
Example: Using the same tutoring post, Content Hub identifies core details like expertise, location, and contact information from the design. It then generates a professional post that positions the tutoring service as a value offering, highlighting benefits, experience, or outcomes and making it suitable for a LinkedIn audience without sounding promotional or casual.

Edit Feature:
- Content Hub includes an Edit mode that makes refining captions simple and intuitive. Instead of regenerating content from scratch, users can open a chat-like editing interface and describe exactly what they want to change.
- Users can request edits in plain language, such as adjusting tone, updating details, or rewriting specific parts and Content Hub updates the existing caption accordingly. This allows for quick iteration without losing the original context or intent.
For the one-on-one tutoring post, if the original caption mentions sessions in Mumbai and the user wants to update it to Delhi, they can simply type the change in the editor. Content Hub revises the caption to reflect the new location while keeping the rest of the content intact.

Thinking Mode:
When Thinking Mode is enabled, Content Hub performs deeper reasoning and analysis before generating or editing content. It takes more time to understand the prompt and design context, resulting in higher-quality, better-aligned output, especially for more detailed or nuanced requests.
Use My Voice:
One of the key features that sets Content Hub apart is Use My Voice. While most AI tools generate captions that sound generic, Content Hub is designed to help users stay consistent with how they already write.
When Use My Voice is enabled, captions are generated to match the user’s personal writing style, including tone, phrasing, punctuation, formatting, and emoji usage without copying any past content. This ensures every post feels authentic and recognizably theirs.

Setting Up My Voice:
- The user clicks 'Set up voice' inside Content Hub
- Enters their X username
- Content Hub fetches the user’s recent 50 tweets, excluding retweets

These tweets are displayed to the user for transparency. Once the user clicks Generate, Content Hub analyzes them to build a voice profile that captures how the user typically writes.

How we built Content Hub - Backend architecture
Content Hub is built as a production-minded system with a clear separation of responsibilities: a lightweight UI runtime inside Adobe Express, a secure document sandbox for canvas operations, and backend services that orchestrate vision, generation, personalization, and payments. The backend’s job is to make the frontend feel instant and trustworthy while keeping sensitive work off the client.
High-level components
UI Runtime (React + Spectrum) The add-on panel (
App.jsx) where users pick a platform, capture the page, write prompts, toggle features (My Voice, emojis, hashtags, Thinking Mode), preview output, and start edits or purchases.Document Sandbox Runtime A secure sandbox (
sandbox/code.js) that can modify the current Express document viaexpress-document-sdk. It exposes safe APIs to the UI (for exampleaddTextToCanvas(text)) and isolates any DOM/document mutations from the main UI thread.Backend (FastAPI) A small backend service that:
- proxies OpenAI requests (no client keys on the frontend),
- orchestrates vision extraction, generation streaming, and reasoning summaries,
- validates/deducts credits and logs purchases,
AI & External Services
- OpenAI for vision extraction, text generation, and reasoning summaries.
- Agent.ai used by the backend to fetch recent X posts for My Voice.
Request lifecycle - step by step
- User intent & capture (frontend) The user writes an intent (e.g., “Invite students for 1-on-1 tutoring”), selects platform and controls, and triggers capture.
- Image optimization (frontend → backend) To keep requests stable in the add-on environment, the captured image is resized/compressed into a small JPEG payload before upload. This reduces latency and memory pressure while keeping essential visual fidelity.
- Vision extraction (backend)
The backend first asks the vision/assistant model to return structured JSON describing the design:
design_summary- short human-readable summary of the canvasvisible_text- exactly what’s readable on the design (to avoid hallucinations)key_topics- main topics or entities detected (e.g., “tutoring”, “CBSE,ICSE”, “location”)style_notes- tone, color/mood cues, or layout hints
- Prompt construction & platform constraints Using the user prompt + structured vision output + platform rules (X 280 characters, Instagram caption limits, LinkedIn tone), the backend builds a platform-specific generation prompt. If Use My Voice is enabled, the voice profile is injected here as additional conditioning instructions (match style, don’t copy).
- Streaming generation (backend → frontend)
- Fast mode: uses a fast text+vision model for token-by-token streaming so the UI receives partial output progressively.
- Thinking Mode: uses a reasoning-focused model and streams both the readable thought summary and the final text progressively. Tokens are forwarded to the frontend as they arrive so users see immediate progress, and the UI supports canceling in-flight runs to prevent stale updates.
- Preview, copy, edit, or place on canvas
The output is rendered in the platform-accurate preview. The user can:
- Copy All to clipboard,
- Edit in the chat-like editor
- Credits & logging Before generation, the backend validates the user’s credit balance. Each generation deducts credits (default 3 credits). If insufficient, the UI routes to the Purchase flow; purchases are logged (Stripe behavior is stubbed in prototype).
Models & AI flows
- Default text+vision model:
gpt-4o-mini(fast, used for vision extraction + quick caption generation) - Thinking / reasoning model:
o4-mini(slower, higher-quality, used to produce readable thought summaries during Thinking Mode) - Streaming: all generation flows use streaming so tokens appear progressively in the UI.
Behind "Use My Voice"
- Connect & fetch
The user enters an X username. The frontend calls the backend endpoint
POST /twitter-postswhich triggers an Agent.ai scraping workflow. - Filter & pre-process The backend polls the runner, receives tweets, and filters out retweets and non-original posts. This reduces noisy examples and avoids copying reposted content.
- Voice profile synthesis
The backend uses OpenAI to synthesize:
smallText: a 2-line compact voice snippet for on-the-fly conditioninglongText: a more detailed style guide describing rhythm, punctuation, emoji habits, and typical phrasings
- Storage & injection The voice profile is stored locally per Adobe user id (privacy-conscious storage) and injected into generation prompts as explicit instructions to produce personalization that matches voice without reproducing text verbatim.
Edit Mode
Edit Mode treats edits as deltas, not full regenerations:
- The backend keeps the current caption state and accepts natural-language edit instructions from the chat-like UI.
- Each edit is packaged with: existing caption, platform constraints, and the user’s instruction.
- The model receives these and returns an updated caption; results are streamed back into the chat timeline and each edit can be branched to preserve history.
- For example: user says “change Mumbai to Delhi”, backend routes that delta through the generator with a clear constraint to only modify location tokens while preserving the rest of the caption’s structure.
From capture to published post, the backend is designed to make Content Hub feel immediate, safe, and useful. Together with secure API proxying and per-user voice conditioning. The backend demonstrates that Content Hub is a realistic add-on designed for creators and ready to scale.
What's next for content hub
Content Hub is already a working prototype, but our goal is to turn it into a production-ready, end-to-end content workflow inside Adobe Express. If supported by the Adobe Fund for Design, we plan to build across these key areas that directly improve creator experience and production readiness:
- Secure AI Infrastructure
To make Content Hub safe and scalable for real users, we will move all AI interactions behind a secure backend proxy. This removes client-side API keys entirely and enables proper rate limiting and per-user usage tracking.
This step ensures Content Hub follows production-grade security practices while maintaining fast, responsive generation inside Adobe Express.
- Add to Canvas (True Express Integration)
Currently, Content Hub generates platform-ready captions that can be copied or edited. The next step is to allow creators to place generated content directly onto the Express canvas.
By wiring our existing addTextToCanvas() sandbox API into the UI, users will be able to insert captions as text layers with a single click, eliminating copy-paste steps and keeping the entire workflow inside Adobe Express.
Real Credits and Monetization: Content Hub will follow a freemium, credit-based model designed to let users experience real value before paying.
- New users receive 50 free credits to try the add-on.
- Each caption or post generation costs 3 credits.
- Once free credits are used, users can purchase additional credits on a pay-as-you-go basis: 50 credits - $5, 100 credits - $9, 250 credits - $20.
Expanding “My Voice” Beyond X
“My Voice” is the core differentiator of Content Hub, and our next focus is to extend it to more platforms and use cases.
We plan to add LinkedIn voice support by analyzing a user’s past LinkedIn posts and generating a platform-appropriate voice profile with more structured and professional defaults.
By completing this roadmap, Content Hub has the potential to become a fully integrated, production-ready content system inside Adobe Express, bridging design, AI, and personalization into a single seamless workflow.
Built With
- adobe
Log in or sign up for Devpost to join the conversation.