Choose a module and check the requirements
Which social module to install, what it needs, and the one thing you must supply yourself.
Pick one track#
The repository holds two social modules that overlap. Install one, not both.
social_media_marketing_automation | social_media_ai_workforce | |
|---|---|---|
| Depends on | mail, web | base, mail, social_media_integration |
| Platforms | Facebook, Instagram, X, LinkedIn, TikTok, YouTube | Telegram, Facebook, Instagram, X (through the base module) |
| Real publishing | You implement _api_publish(), or use n8n | Already works, in the base module |
| AI agents and audit trail | No (AI-drafted content through n8n only) | Yes |
| Menu | Social Marketing | Social Media → AI Workforce |
If you are unsure, read The modules at a glance.
Requirements for both#
- Odoo 17. The install scripts stop if the database is not
17.0.x. - PostgreSQL, as Odoo requires.
- The Python package
requestson the Odoo server. Both modules declare it, so Odoo tells you if it is missing. - Docker, only if you use Route A.
Extra requirements for the AI Growth Workforce#
You must supply social_media_integration#
social_media_integration is Ashewa's module and is not in the public repository, so a clone alone cannot install the AI Workforce. The installer looks for your copy in three places, in order:
- the folder you pass with
--base-module; - a folder next to the checkout;
- every entry of your Odoo's
addons_path.
If your SmartERP already has it installed, the third place finds it. If it cannot be found at all, the installer stops rather than half-install.
It needs porting to Odoo 17 first#
social_media_integration declares version 17.0.1.0.0, but its views are written for Odoo 16. They use the attrs="{...}" attribute in 91 places, and Odoo 17 removed it. Installed as shipped, the install stops partway with:
odoo.tools.convert.ParseError: while parsing
social_media_integration/views/telegram_post_views.xml:41
Since 17.0, the "attrs" and "states" attributes are no longer used.
Because the AI Workforce depends on it, neither module then appears in the Apps list.
The repository ships deploy/migrate_base_to_17.py, which rewrites each attrs domain as the Odoo 17 inline condition:
attrs="{'invisible': ['|', ('state','!=','posted'), ('fb_id','=',False)]}"
invisible="state != 'posted' or not fb_id"
The install scripts run it for you. To run it yourself:
python3 deploy/migrate_base_to_17.py /path/to/social_media_integration --check # see what it would do
python3 deploy/migrate_base_to_17.py /path/to/social_media_integration # do it
A normal run keeps every original as <name>.odoo16.bak, running it twice finds nothing to do, and if it meets anything it cannot translate with confidence it writes nothing and names the file.
Python packages the base module imports#
social_media_integration imports aiogram, beautifulsoup4, requests and python-dateutil but does not declare them, so Odoo fails at module load without them:
pip3 install aiogram beautifulsoup4 requests python-dateutil
The Docker image in Route A installs them for you.
Next#
- Nothing installed yet and you have Docker: Install with Docker.
- You already run Odoo 17: Install into an existing Odoo.
- You prefer to see every step: Install by hand.