| Server IP : 3.147.158.171 / Your IP : 216.73.216.216 Web Server : Apache/2.4.67 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-2-178.us-east-2.compute.internal 6.1.172-216.329.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 20 06:31:34 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.21 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /tsai/repo/api/logs/ |
Upload File : |
INFO 04/06/2026 05:59:11 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 05:59:11 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 05:59:11 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 05:59:12 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/06/2026 05:59:12 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 05:59:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 05:59:12 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 05:59:12 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 05:59:12 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/06/2026 05:59:12 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 06:02:51 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 06:02:51 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 06:02:51 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 06:02:51 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/06/2026 06:02:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 06:02:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 06:02:51 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 06:02:51 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 06:02:51 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/06/2026 06:02:51 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 06:02:54 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 06:02:54 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 06:02:54 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 06:02:55 PM create_articles.py ln 85 JWT token obtained (0.82s)
INFO 04/06/2026 06:02:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 06:02:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 06:02:55 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 06:02:55 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 06:02:55 PM wp.py ln 207 wp account not found! Scike - attempting registration
INFO 04/06/2026 06:02:56 PM wp.py ln 637 Attempting to register user: Scike at https://dev.turmansolutions.ai/wp-json/wp/v2/users
INFO 04/06/2026 06:02:56 PM wp.py ln 644 User registered successfully: Scike (ID: 14)
INFO 04/06/2026 06:02:56 PM wp.py ln 234 Successfully registered WP user for Scike
INFO 04/06/2026 06:02:56 PM create_articles.py ln 92 Characters fetched and filtered (1.41s)
INFO 04/06/2026 06:02:56 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 06:04:50 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/06/2026 06:04:50 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 06:04:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 06:04:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 06:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 06:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 06:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 06:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/06/2026 06:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 06:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 06:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 06:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 06:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/06/2026 06:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 06:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 06:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 06:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 06:07:14 PM create_articles.py ln 85 JWT token obtained (0.83s)
INFO 04/06/2026 06:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 06:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 06:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 06:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 06:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/06/2026 06:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 07:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 07:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 07:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 07:07:10 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/06/2026 07:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 07:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 07:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 07:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 07:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/06/2026 07:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 07:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 07:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 07:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 07:07:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/06/2026 07:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 07:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 07:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 07:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 07:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/06/2026 07:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 08:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 08:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 08:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 08:07:10 PM create_articles.py ln 85 JWT token obtained (0.52s)
INFO 04/06/2026 08:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 08:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 08:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 08:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 08:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/06/2026 08:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 08:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 08:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 08:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 08:07:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/06/2026 08:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 08:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 08:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 08:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 08:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/06/2026 08:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 08:48:24 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 08:48:24 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/06/2026 08:48:24 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 08:48:24 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 08:48:24 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 08:49:01 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/06/2026 08:49:01 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 08:49:01 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/06/2026 08:49:02 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'IWtXhWCkZHqnUsGkCRmxP2s3xM9dzaP5qVKdTOh4s1I', 'logout_token': 'pfp3Z7AtFSRyu47Psip6f4nn0gsNYuIxHPKt290Ehd8'}
INFO 04/06/2026 08:49:02 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/06/2026 08:49:02 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/06/2026 08:49:02 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 08:49:02 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 08:49:02 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 09:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 09:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 09:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 09:07:11 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/06/2026 09:07:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 09:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 09:07:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 09:07:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 09:07:11 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/06/2026 09:07:11 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 09:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 09:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 09:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 09:07:15 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/06/2026 09:07:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 09:07:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 09:07:15 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 09:07:15 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 09:07:15 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/06/2026 09:07:15 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 10:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 10:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 10:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 10:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/06/2026 10:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 10:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 10:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 10:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 10:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/06/2026 10:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 10:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 10:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 10:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 10:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/06/2026 10:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 10:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 10:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 10:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 10:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/06/2026 10:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 11:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 11:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/06/2026 11:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 11:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/06/2026 11:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/06/2026 11:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 11:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/06/2026 11:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/06/2026 11:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/06/2026 11:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/06/2026 11:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/06/2026 11:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/06/2026 11:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/06/2026 11:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/06/2026 11:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/06/2026 11:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/06/2026 11:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/06/2026 11:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/06/2026 11:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/06/2026 11:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 12:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 12:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 12:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 12:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 12:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 12:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 12:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 12:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 12:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/07/2026 12:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 12:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 12:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 12:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 12:07:14 AM create_articles.py ln 85 JWT token obtained (0.83s)
INFO 04/07/2026 12:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 12:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 12:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 12:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 12:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 12:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 01:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 01:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 01:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 01:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 01:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 01:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 01:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 01:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 01:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/07/2026 01:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 01:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 01:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 01:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 01:07:14 AM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/07/2026 01:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 01:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 01:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 01:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 01:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 01:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 02:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 02:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 02:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 02:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 02:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 02:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 02:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 02:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 02:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/07/2026 02:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 02:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 02:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 02:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 02:06:14 AM create_articles.py ln 85 JWT token obtained (0.85s)
INFO 04/07/2026 02:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 02:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 02:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 02:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 02:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 02:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 03:05:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 03:05:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 03:05:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 03:05:11 AM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/07/2026 03:05:11 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 03:05:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 03:05:11 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 03:05:11 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 03:05:11 AM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/07/2026 03:05:11 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 03:05:14 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 03:05:14 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 03:05:14 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 03:05:14 AM create_articles.py ln 85 JWT token obtained (0.57s)
INFO 04/07/2026 03:05:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 03:05:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 03:05:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 03:05:15 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 03:05:15 AM create_articles.py ln 92 Characters fetched and filtered (0.34s)
INFO 04/07/2026 03:05:15 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 04:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 04:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 04:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 04:07:10 AM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/07/2026 04:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 04:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 04:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 04:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 04:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/07/2026 04:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 04:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 04:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 04:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 04:07:14 AM create_articles.py ln 85 JWT token obtained (0.81s)
INFO 04/07/2026 04:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 04:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 04:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 04:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 04:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 04:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 05:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 05:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 05:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 05:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 05:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 05:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 05:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 05:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 05:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/07/2026 05:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 05:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 05:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 05:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 05:07:14 AM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 05:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 05:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 05:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 05:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 05:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 05:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 06:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 06:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 06:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 06:06:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 06:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 06:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 06:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 06:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/07/2026 06:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 06:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 06:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 06:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 06:06:14 AM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 06:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 06:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 06:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 06:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 06:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 06:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 07:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 07:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 07:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 07:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 07:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 07:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 07:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 07:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 07:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/07/2026 07:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 07:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 07:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 07:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 07:07:14 AM create_articles.py ln 85 JWT token obtained (0.79s)
INFO 04/07/2026 07:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 07:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 07:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 07:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 07:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 07:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 08:06:11 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 08:06:11 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 08:06:11 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 08:06:12 AM create_articles.py ln 85 JWT token obtained (0.45s)
INFO 04/07/2026 08:06:12 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 08:06:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 08:06:12 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 08:06:12 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 08:06:12 AM create_articles.py ln 92 Characters fetched and filtered (0.20s)
INFO 04/07/2026 08:06:12 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 08:06:16 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 08:06:16 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 08:06:16 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 08:06:17 AM create_articles.py ln 85 JWT token obtained (0.74s)
INFO 04/07/2026 08:06:17 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 08:06:17 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 08:06:17 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 08:06:17 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 08:06:17 AM create_articles.py ln 92 Characters fetched and filtered (0.55s)
INFO 04/07/2026 08:06:17 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 08:17:11 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 09:06:11 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 09:06:11 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 09:06:11 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 09:06:11 AM create_articles.py ln 85 JWT token obtained (0.48s)
INFO 04/07/2026 09:06:12 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 09:06:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 09:06:12 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 09:06:12 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 09:06:12 AM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/07/2026 09:06:12 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 09:06:16 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 09:06:16 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 09:06:16 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 09:06:17 AM create_articles.py ln 85 JWT token obtained (0.96s)
INFO 04/07/2026 09:06:17 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 09:06:17 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 09:06:17 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 09:06:17 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 09:06:17 AM create_articles.py ln 92 Characters fetched and filtered (0.38s)
INFO 04/07/2026 09:06:17 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 09:57:49 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 09:57:51 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 09:57:51 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/07/2026 09:57:51 AM user.py ln 62 Login response status code: 200
INFO 04/07/2026 09:57:51 AM user.py ln 63 Login response headers: {'Date': 'Tue, 07 Apr 2026 09:57:51 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/07/2026 09:57:51 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/07/2026 09:57:51 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTU1NTg3MSwibmJmIjoxNzc1NTU1ODcxLCJleHAiOjE3NzYxNjA2NzEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.jdTaXld_-Jbw1WoZY3fZ2LD_axrHnDK9obMeWc2Si24","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/07/2026 09:57:51 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTU1NTg3MSwibmJmIjoxNzc1NTU1ODcxLCJleHAiOjE3NzYxNjA2NzEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.jdTaXld_-Jbw1WoZY3fZ2LD_axrHnDK9obMeWc2Si24', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/07/2026 09:57:51 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/07/2026 10:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 10:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 10:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 10:07:10 AM create_articles.py ln 85 JWT token obtained (0.41s)
INFO 04/07/2026 10:07:11 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 10:07:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 10:07:11 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 10:07:11 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 10:07:11 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/07/2026 10:07:11 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 10:07:14 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 10:07:14 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 10:07:14 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 10:07:15 AM create_articles.py ln 85 JWT token obtained (0.81s)
INFO 04/07/2026 10:07:15 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 10:07:15 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 10:07:15 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 10:07:15 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 10:07:15 AM create_articles.py ln 92 Characters fetched and filtered (0.34s)
INFO 04/07/2026 10:07:15 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 11:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 11:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 11:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 11:07:10 AM create_articles.py ln 85 JWT token obtained (0.40s)
INFO 04/07/2026 11:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 11:07:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 11:07:11 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 11:07:11 AM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 11:07:11 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/07/2026 11:07:11 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 11:07:14 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 11:07:14 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 11:07:14 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 11:07:14 AM create_articles.py ln 85 JWT token obtained (0.60s)
INFO 04/07/2026 11:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 11:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 11:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 11:07:15 AM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 11:07:15 AM create_articles.py ln 92 Characters fetched and filtered (0.34s)
INFO 04/07/2026 11:07:15 AM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 12:05:34 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 12:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 12:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 12:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 12:07:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 12:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 12:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 12:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 12:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 12:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/07/2026 12:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 12:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 12:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 12:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 12:07:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/07/2026 12:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 12:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 12:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 12:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 12:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 12:07:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 12:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 12:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.25s)
INFO 04/07/2026 12:07:14 PM cron_common.py ln 368 Name: Ananya, perHour: 0.0 IS POSTING!
INFO 04/07/2026 12:07:14 PM cron_common.py ln 371 Description: You are Ananya, a technology journalist and researcher who specializes in open-source AI tools. You are particularly passionate about OpenClaw, an open-source personal AI assistant that runs locally on users'own devices and communicates through messaging platforms like WhatsApp, Telegram, Discord, and Signal. You write insightful, well-researched articles exploring OpenClaw's features, ecosystem, community developments, privacy benefits, and its impact on how people interact with AI. Your writing style is clear, engaging, and accessible to both technical and non-technical readers.
INFO 04/07/2026 12:07:15 PM cron_common.py ln 384 Character articles: 1
INFO 04/07/2026 12:07:15 PM create_articles.py ln 118 Character articles loaded (0.26s)
INFO 04/07/2026 12:07:15 PM create_articles.py ln 120 Setup complete (1.63s total)
INFO 04/07/2026 12:07:15 PM create_articles.py ln 132 Creating article for character: Ananya
INFO 04/07/2026 12:07:15 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260407_120715_dev_Ananya.log
INFO 04/07/2026 12:07:15 PM article_creation_service.py ln 786 Article creation started for character: Ananya
INFO 04/07/2026 12:07:15 PM article_creation_service.py ln 786 WordPress authentication successful (0.82s)
INFO 04/07/2026 12:07:16 PM article_creation_service.py ln 786 Fetched WP users (0.33s)
INFO 04/07/2026 12:07:16 PM article_creation_service.py ln 786 Loaded 1 articles for character (0.26s)
INFO 04/07/2026 12:07:16 PM article_creation_service.py ln 786 Got 9 categories and 32 tags (0.54s)
INFO 04/07/2026 12:07:16 PM article_creation_service.py ln 786 Searching for 'OpenClaw AI assistant' (topic: news)
INFO 04/07/2026 12:07:16 PM chat.py ln 129 Tavily search will ONLY include domains: ['openclaw.ai', 'techcrunch.com', 'technologyreview.com', 'cnbc.com', 'unite.ai', 'cybernews.com']
INFO 04/07/2026 12:07:16 PM chat.py ln 137 Tavily search will filter to past month
INFO 04/07/2026 12:07:18 PM chat.py ln 149 Tavily search for 'OpenClaw AI assistant' completed
INFO 04/07/2026 12:07:18 PM chat.py ln 154 Found 5 results
INFO 04/07/2026 12:07:18 PM article_creation_service.py ln 786 Found 5 search results (1.43s)
INFO 04/07/2026 12:07:18 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260407_120715_dev_Ananya_search.md
INFO 04/07/2026 12:07:18 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/07/2026 12:07:23 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/07/2026 12:08:08 PM article_creation_service.py ln 786 Generated article - OpenClaw Goes Global: How China Is Leading the AI Agent Revolution (49.87s)
INFO 04/07/2026 12:08:08 PM article_creation_service.py ln 786 Created WP post 790 (0.46s)
INFO 04/07/2026 12:08:12 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 12:08:12 PM wp.py ln 802 Prompt: Prompt for generating a featured image:
Create a dynamic, futuristic illustration showcasing OpenClaw's global impact, with a strong emphasis on China's enthusiastic adoption. The centerpiece is a stylized, friendly lobster-shaped AI agent (claw motif subtly representing software/technology), radiating digital circuits and network connections around the globe. In the background, blend iconic elements of modern Chinese cityscapes (such as Beijing or Shanghai skylines) with people from diverse backgrounds—youth, professionals, and seniors—interacting eagerly with AI devices (phones, laptops), some at vibrant community events. Integrate hints of popular Chinese messaging apps (like WeChat) and global connectivity, capturing the sense of technological revolution, community engagement, and cultural fusion. Use bright, inviting colors to convey innovation, excitement, and inclusivity.
INFO 04/07/2026 12:08:42 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 12:08:42 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/07/2026 12:08:42 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-07.jpeg
INFO 04/07/2026 12:08:42 PM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-07.jpeg
INFO 04/07/2026 12:08:42 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU1NjM2MzUsIm5iZiI6MTc3NTU2MzYzNSwiZXhwIjoxNzc2MTY4NDM1LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.4KsOU_nfvosLtHJAENL_SGaUTAJkuEU_3lIXNsCSx8M
INFO 04/07/2026 12:08:42 PM image.py ln 197 filename is 2026-04-07.webp
INFO 04/07/2026 12:08:42 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-07.webp'>}
INFO 04/07/2026 12:08:44 PM article_creation_service.py ln 786 Featured image posted (35.89s)
INFO 04/07/2026 12:08:44 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 515.82 KB
INFO 04/07/2026 12:08:54 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 12:08:54 PM wp.py ln 873 Secondary Image Prompt: ### Prompt for Generating a Complementary Image
Create a vibrant, bustling scene depicting a diverse group of people interacting with technology in a futuristic urban setting influenced by Chinese culture. The background should showcase iconic architecture reminiscent of China's modern cities, like the skyline of Shanghai, but emphasize a lively community atmosphere filled with colorful street vendors and traditional decorations.
In the foreground, illustrate a tech-savvy gathering where individuals of various ages, including students and professionals, are engaged in collaborative discussions about technology, possibly holding tablets or smartphones featuring user-friendly interfaces powered by AI. Show expressions of curiosity and excitement as they interact with their devices, embodying the spirit of innovation and community engagement.
The color palette should echo the warm, sunset tones found in the featured image, blending oranges, reds, and soft blues to maintain a sense of harmony. Incorporate subtle elements that hint at AI, such as holographic interfaces or visual data streams, to reinforce the theme of technological advancement, while ensuring the focus remains on the human connections that technology fosters.
INFO 04/07/2026 12:09:19 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 12:09:19 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/07/2026 12:09:19 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-07-1.jpeg
INFO 04/07/2026 12:09:19 PM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-07-1.jpeg
INFO 04/07/2026 12:09:19 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU1NjM2MzUsIm5iZiI6MTc3NTU2MzYzNSwiZXhwIjoxNzc2MTY4NDM1LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.4KsOU_nfvosLtHJAENL_SGaUTAJkuEU_3lIXNsCSx8M
INFO 04/07/2026 12:09:20 PM image.py ln 197 filename is 2026-04-07-1.webp
INFO 04/07/2026 12:09:20 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-07-1.webp'>}
INFO 04/07/2026 12:09:20 PM article_creation_service.py ln 786 Secondary image uploaded (36.34s)
INFO 04/07/2026 12:09:20 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/07/2026 12:09:21 PM wp.py ln 933 Post content updated successfully for post 790
INFO 04/07/2026 12:09:21 PM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/07/2026 12:09:26 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 12:09:31 PM chat.py ln 361 AI comment: The article accurately represents the information from the provided sources. It captures the rapid adoption and impact of OpenClaw in China, highlighting statements from Nvidia CEO Jensen Huang and the efforts by Chinese tech companies like Tencent and Baidu to promote the AI tool. The article also discusses the cultural phenomenon surrounding OpenClaw, its economic advantages, and the potential privacy concerns, all of which are supported by the sources.
The sources confirm the details about OpenClaw's development, its integration with messaging platforms, and the widespread adoption in Chin
INFO 04/07/2026 12:09:31 PM chat.py ln 540 Fact-check generated using OpenAI gpt-4o
INFO 04/07/2026 12:09:31 PM article_creation_service.py ln 786 Fact-check comment posted (10.27s)
INFO 04/07/2026 12:09:31 PM article_creation_service.py ln 786 Article creation completed successfully (total: 136.52s)
INFO 04/07/2026 12:09:31 PM create_articles.py ln 168 Article created for 'Ananya' using model: Claude claude-sonnet-4-5-20250929
INFO 04/07/2026 12:09:31 PM create_articles.py ln 184 Successfully generated articles for 1 character(s)
INFO 04/07/2026 12:09:31 PM create_articles.py ln 187 Script completed (138.16s total)
INFO 04/07/2026 01:00:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 01:00:10 PM cron_common.py ln 214 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/07/2026 01:00:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 01:00:10 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/07/2026 01:00:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/07/2026 01:00:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 01:00:10 PM cron_common.py ln 270 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/07/2026 01:00:10 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 01:00:10 PM create_articles.py ln 92 Characters fetched and filtered (0.20s)
INFO 04/07/2026 01:00:10 PM cron_common.py ln 331 Single character mode: Hawk
INFO 04/07/2026 01:00:10 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 01:00:10 PM cron_common.py ln 368 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/07/2026 01:00:10 PM cron_common.py ln 371 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/07/2026 01:00:11 PM cron_common.py ln 384 Character articles: 77
INFO 04/07/2026 01:00:11 PM create_articles.py ln 118 Character articles loaded (0.44s)
INFO 04/07/2026 01:00:11 PM create_articles.py ln 120 Setup complete (0.97s total)
INFO 04/07/2026 01:00:11 PM create_articles.py ln 132 Creating article for character: Hawk
INFO 04/07/2026 01:00:11 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260407_130011_news_Hawk.log
INFO 04/07/2026 01:00:11 PM article_creation_service.py ln 786 Article creation started for character: Hawk
INFO 04/07/2026 01:00:11 PM article_creation_service.py ln 786 WordPress authentication successful (0.32s)
INFO 04/07/2026 01:00:11 PM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/07/2026 01:00:12 PM article_creation_service.py ln 786 Loaded 77 articles for character (0.44s)
INFO 04/07/2026 01:00:12 PM article_creation_service.py ln 786 Got 27 categories and 61 tags (0.16s)
INFO 04/07/2026 01:00:12 PM article_creation_service.py ln 786 Searching for 'latest headline news' (topic: news)
INFO 04/07/2026 01:00:12 PM chat.py ln 133 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/07/2026 01:00:12 PM chat.py ln 137 Tavily search will filter to past day
INFO 04/07/2026 01:00:14 PM chat.py ln 149 Tavily search for 'latest headline news' completed
INFO 04/07/2026 01:00:14 PM chat.py ln 154 Found 5 results
INFO 04/07/2026 01:00:14 PM article_creation_service.py ln 786 Found 5 search results (1.79s)
INFO 04/07/2026 01:00:14 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260407_130011_news_Hawk_search.md
INFO 04/07/2026 01:00:14 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/07/2026 01:01:16 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 01:01:16 PM article_creation_service.py ln 786 Generated article - Hawk’s Tuesday Brief: Trump’s arms-to-protesters claim, Artemis II’s record loop, polls slip, and an Air India shake-up (62.00s)
INFO 04/07/2026 01:01:16 PM article_creation_service.py ln 786 Created WP post 1013 (0.09s)
INFO 04/07/2026 01:01:20 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 01:01:20 PM wp.py ln 802 Prompt: Prompt for Featured Image Generation:
Design a dynamic, split-panel featured image illustrating the day’s major stories. The left side should show a stylized silhouette of Donald Trump against the backdrop of U.S. and Iranian flags, with subtle imagery of weapons in the middle distance, conveying geopolitical tension. The top-center or right should feature a luminous spacecraft (Artemis II) looping around the far side of the moon, with stars and deep space emphasizing historic achievement. The bottom right corner should depict an airplane with an Air India tail fin on a turbulent sky, symbolizing corporate shake-up. The color palette should be bold and newsy, with clear visual separation among sections while maintaining a cohesive overall look.
INFO 04/07/2026 01:01:44 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 01:01:44 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/07/2026 01:01:44 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07.jpeg
INFO 04/07/2026 01:01:44 PM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-07.jpeg
INFO 04/07/2026 01:01:44 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NTY2ODExLCJuYmYiOjE3NzU1NjY4MTEsImV4cCI6MTc3NjE3MTYxMSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.5yVbo974bVGVhwctqRWdv886SjuxpVhkjz9LJgnc-LY
INFO 04/07/2026 01:01:44 PM image.py ln 197 filename is 2026-04-07.webp
INFO 04/07/2026 01:01:44 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07.webp'>}
INFO 04/07/2026 01:01:45 PM article_creation_service.py ln 786 Featured image posted (29.13s)
INFO 04/07/2026 01:01:45 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 468.40 KB
INFO 04/07/2026 01:01:52 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 01:01:52 PM wp.py ln 873 Secondary Image Prompt: **Prompt for Secondary Image Generation:**
Create a visually striking image that complements the existing one. This new image should depict a dramatic scene in outer space, featuring a spacecraft navigating through a vibrant meteor shower. The color palette should echo the warm, fiery tones from the featured image, with a focus on deep oranges and dark blues, creating a sense of tension and excitement.
In the foreground, include elements like distant planets and swirling cosmic clouds to maintain the space theme. Subtle references to political and corporate aspects can be incorporated—perhaps through tiny spacecraft resembling airplanes or silhouettes of famous landmarks like the Capitol building floating in the depths of space, hinting at the ongoing political discourse and corporate challenges on Earth.
The overall composition should create a sense of movement and adventure, inviting viewers to explore the interconnectedness of space exploration, political issues, and corporate dynamics while ensuring visual harmony with the original image's feelings and colors.
INFO 04/07/2026 01:02:16 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 01:02:16 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/07/2026 01:02:16 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-1.jpeg
INFO 04/07/2026 01:02:16 PM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-07-1.jpeg
INFO 04/07/2026 01:02:16 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NTY2ODExLCJuYmYiOjE3NzU1NjY4MTEsImV4cCI6MTc3NjE3MTYxMSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.5yVbo974bVGVhwctqRWdv886SjuxpVhkjz9LJgnc-LY
INFO 04/07/2026 01:02:16 PM image.py ln 197 filename is 2026-04-07-1.webp
INFO 04/07/2026 01:02:16 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-1.webp'>}
INFO 04/07/2026 01:02:17 PM article_creation_service.py ln 786 Secondary image uploaded (32.01s)
INFO 04/07/2026 01:02:17 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/07/2026 01:02:17 PM wp.py ln 933 Post content updated successfully for post 1013
INFO 04/07/2026 01:02:17 PM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/07/2026 01:02:22 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/07/2026 01:02:32 PM chat.py ln 361 AI comment: # Fact-Check Assessment: Hawk's Tuesday Brief (April 7, 2026)
The article accurately represents the information contained in its source material. Each major claim is supported by the corresponding source:
**Trump's arms-to-protesters claim**: Source 1 (Global Village Space/RT) directly reports Trump's Fox News statement about sending weapons to Iranian protesters in January, with intermediaries allegedly keeping them. The article correctly notes this claim "hasn't been independently verified" and appropriately characterizes the source as "a republished RT write-up."
**Approval ratings under
INFO 04/07/2026 01:02:32 PM chat.py ln 540 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/07/2026 01:02:32 PM article_creation_service.py ln 786 Fact-check comment posted (14.76s)
INFO 04/07/2026 01:02:32 PM article_creation_service.py ln 786 Article creation completed successfully (total: 140.83s)
INFO 04/07/2026 01:02:32 PM create_articles.py ln 168 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/07/2026 01:02:32 PM create_articles.py ln 184 Successfully generated articles for 1 character(s)
INFO 04/07/2026 01:02:32 PM create_articles.py ln 186 Fact-checking was performed inline during article creation
INFO 04/07/2026 01:02:32 PM create_articles.py ln 187 Script completed (141.81s total)
INFO 04/07/2026 01:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 01:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 01:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 01:06:10 PM create_articles.py ln 85 JWT token obtained (0.43s)
INFO 04/07/2026 01:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 01:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 01:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 01:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 01:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.11s)
INFO 04/07/2026 01:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 01:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 01:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 01:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 01:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 01:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 01:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 01:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 01:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 01:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.32s)
INFO 04/07/2026 01:06:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 01:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 01:06:14 PM cron_common.py ln 409 Skipping Ananya: already posted an article today
INFO 04/07/2026 01:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/07/2026 01:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.26s)
INFO 04/07/2026 01:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/07/2026 02:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 02:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 02:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 02:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 02:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 02:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 02:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 02:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.20s)
INFO 04/07/2026 02:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 02:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 02:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 02:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 02:07:14 PM create_articles.py ln 85 JWT token obtained (0.87s)
INFO 04/07/2026 02:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 02:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 02:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 02:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 02:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 02:07:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 02:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 02:07:15 PM cron_common.py ln 409 Skipping Ananya: already posted an article today
INFO 04/07/2026 02:07:15 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/07/2026 02:07:15 PM create_articles.py ln 108 Already-posted-today filter applied (0.27s)
INFO 04/07/2026 02:07:15 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/07/2026 03:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 03:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 03:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 03:06:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 03:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 03:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 03:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 03:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/07/2026 03:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 03:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 03:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 03:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 03:06:14 PM create_articles.py ln 85 JWT token obtained (0.54s)
INFO 04/07/2026 03:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 03:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 03:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 03:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 03:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 03:06:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 03:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 03:06:14 PM cron_common.py ln 409 Skipping Ananya: already posted an article today
INFO 04/07/2026 03:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/07/2026 03:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.26s)
INFO 04/07/2026 03:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/07/2026 03:45:59 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 03:45:59 PM cron_common.py ln 214 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/07/2026 03:45:59 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 03:45:59 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 03:46:00 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/07/2026 03:46:00 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 03:46:00 PM cron_common.py ln 270 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/07/2026 03:46:00 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 03:46:00 PM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/07/2026 03:46:00 PM cron_common.py ln 331 Single character mode: Dusty
INFO 04/07/2026 03:46:00 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 03:46:00 PM cron_common.py ln 368 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/07/2026 03:46:00 PM cron_common.py ln 371 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/07/2026 03:46:00 PM cron_common.py ln 384 Character articles: 34
INFO 04/07/2026 03:46:00 PM create_articles.py ln 118 Character articles loaded (0.23s)
INFO 04/07/2026 03:46:00 PM create_articles.py ln 120 Setup complete (0.77s total)
INFO 04/07/2026 03:46:00 PM create_articles.py ln 132 Creating article for character: Dusty
INFO 04/07/2026 03:46:00 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260407_154600_news_Dusty.log
INFO 04/07/2026 03:46:00 PM article_creation_service.py ln 786 Article creation started for character: Dusty
INFO 04/07/2026 03:46:00 PM article_creation_service.py ln 786 WordPress authentication successful (0.31s)
INFO 04/07/2026 03:46:00 PM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/07/2026 03:46:00 PM article_creation_service.py ln 786 Loaded 34 articles for character (0.20s)
INFO 04/07/2026 03:46:01 PM article_creation_service.py ln 786 Got 27 categories and 61 tags (0.15s)
INFO 04/07/2026 03:46:01 PM article_creation_service.py ln 786 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/07/2026 03:46:01 PM chat.py ln 137 Tavily search will filter to past day
INFO 04/07/2026 03:46:03 PM chat.py ln 149 Tavily search for 'Latest US extreme weather' completed
INFO 04/07/2026 03:46:03 PM chat.py ln 154 Found 5 results
INFO 04/07/2026 03:46:03 PM article_creation_service.py ln 786 Found 5 search results (2.08s)
INFO 04/07/2026 03:46:03 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260407_154600_news_Dusty_search.md
INFO 04/07/2026 03:46:03 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/07/2026 03:46:58 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 03:46:58 PM article_creation_service.py ln 786 Generated article - Record Drought and Heatwaves Elevate Fire and Food Security Risks Across the U.S. (55.45s)
INFO 04/07/2026 03:46:58 PM article_creation_service.py ln 786 Created WP post 1018 (0.14s)
INFO 04/07/2026 03:47:02 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 03:47:02 PM wp.py ln 802 Prompt: Prompt for featured image:
An impactful, panoramic illustration showing extreme drought and heat across the U.S.: cracked, parched earth stretching from Florida's dried-out wetlands (with withered orange trees and brown grass) through the wind-swept, scorched farmlands of the Great Plains (with struggling crops and cattle in the distance), to the foothills of Colorado with dry forests and smoke from a small wildfire. In the background, a faded map of the United States transitions from brown (drought-stricken East) to red/orange (heatwave in the West), with hazy skies and a glaring sun overhead. Subtle elements: empty water reservoir, a burning home symbolizing wildfire risk, and an anxious farmer surveying his fields—evoking the urgent themes of fire danger, food security, and community resilience.
INFO 04/07/2026 03:47:30 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 03:47:30 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/07/2026 03:47:30 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-2.jpeg
INFO 04/07/2026 03:47:30 PM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-07-2.jpeg
INFO 04/07/2026 03:47:30 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NTc2NzYwLCJuYmYiOjE3NzU1NzY3NjAsImV4cCI6MTc3NjE4MTU2MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.SkFCteRefRy2AGApNz0x86Wva3Bc5KHe2QF3Qyyt3YQ
INFO 04/07/2026 03:47:30 PM image.py ln 197 filename is 2026-04-07-2.webp
INFO 04/07/2026 03:47:30 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-2.webp'>}
INFO 04/07/2026 03:47:31 PM article_creation_service.py ln 786 Featured image posted (32.83s)
INFO 04/07/2026 03:47:31 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 565.17 KB
INFO 04/07/2026 03:47:38 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/07/2026 03:47:38 PM wp.py ln 873 Secondary Image Prompt: ### Prompt for Generating a Complementary Image
Create an image that captures the urgent tone of agricultural stress and climate challenges in the United States, reflecting a different perspective. The scene should depict a farmer in a drought-affected field at dusk, showcasing similar warm hues of orange and golden tones prevalent in the featured image.
In the foreground, show the farmer kneeling in cracked earth, examining dry soil with a weary expression, surrounded by wilted crops. In the background, illustrate a distant line of wildfires on the horizon, casting a smoky haze across the sky. Include silhouettes of farm equipment, abandoned due to the drought, and a fading barn in the distance. Ensure the atmosphere conveys a sense of desperation and concern about food security, resonating with the overarching themes of fire risk and drought detailed in the article. The overall mood should remain intense but slightly more contemplative than the original image, highlighting the contemplative nature of farming amidst adversity.
INFO 04/07/2026 03:48:00 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/07/2026 03:48:00 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/07/2026 03:48:00 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-3.jpeg
INFO 04/07/2026 03:48:00 PM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-07-3.jpeg
INFO 04/07/2026 03:48:00 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NTc2NzYwLCJuYmYiOjE3NzU1NzY3NjAsImV4cCI6MTc3NjE4MTU2MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.SkFCteRefRy2AGApNz0x86Wva3Bc5KHe2QF3Qyyt3YQ
INFO 04/07/2026 03:48:01 PM image.py ln 197 filename is 2026-04-07-3.webp
INFO 04/07/2026 03:48:01 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-07-3.webp'>}
INFO 04/07/2026 03:48:01 PM article_creation_service.py ln 786 Secondary image uploaded (29.98s)
INFO 04/07/2026 03:48:01 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/07/2026 03:48:01 PM wp.py ln 933 Post content updated successfully for post 1018
INFO 04/07/2026 03:48:01 PM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/07/2026 03:48:03 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/07/2026 03:48:12 PM chat.py ln 361 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in its source material. The key claims align well with the reporting from NASA, Axios, the Washington Post, and the Insurance Journal:
**Florida drought**: The article's statement that "almost 80 percent of the state was facing 'extreme' drought conditions" matches NASA's reporting. Details about groundwater levels, citrus industry impacts, and the $3 billion agricultural freeze loss are all sourced correctly from the NASA Earth Observatory report.
**Colorado conditions**: The coverage of the late-March heatw
INFO 04/07/2026 03:48:12 PM chat.py ln 540 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/07/2026 03:48:12 PM article_creation_service.py ln 786 Fact-check comment posted (11.09s)
INFO 04/07/2026 03:48:12 PM article_creation_service.py ln 786 Article creation completed successfully (total: 132.38s)
INFO 04/07/2026 03:48:12 PM create_articles.py ln 168 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/07/2026 03:48:12 PM create_articles.py ln 184 Successfully generated articles for 1 character(s)
INFO 04/07/2026 03:48:12 PM create_articles.py ln 186 Fact-checking was performed inline during article creation
INFO 04/07/2026 03:48:12 PM create_articles.py ln 187 Script completed (133.16s total)
INFO 04/07/2026 04:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 04:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 04:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 04:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 04:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 04:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 04:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 04:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 04:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/07/2026 04:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 04:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 04:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 04:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 04:07:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/07/2026 04:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 04:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 04:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 04:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 04:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 04:07:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 04:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 04:07:14 PM cron_common.py ln 409 Skipping Ananya: already posted an article today
INFO 04/07/2026 04:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/07/2026 04:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.26s)
INFO 04/07/2026 04:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/07/2026 04:54:59 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 05:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 05:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 05:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 05:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 05:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 05:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 05:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 05:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 05:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/07/2026 05:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 05:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 05:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 05:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 05:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 05:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 05:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 05:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 05:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 05:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 05:06:14 PM drupal.py ln 300 Ananya selected via calendar schedule
INFO 04/07/2026 05:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/07/2026 05:06:14 PM cron_common.py ln 409 Skipping Ananya: already posted an article today
INFO 04/07/2026 05:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/07/2026 05:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.26s)
INFO 04/07/2026 05:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/07/2026 06:05:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 06:05:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 06:05:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 06:05:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 06:05:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 06:05:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 06:05:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 06:05:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 06:05:10 PM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/07/2026 06:05:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 06:05:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 06:05:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 06:05:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 06:05:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 06:05:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 06:05:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 06:05:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 06:05:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 06:05:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 06:05:14 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 06:16:38 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/07/2026 07:07:12 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 07:07:12 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 07:07:12 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 07:07:12 PM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/07/2026 07:07:13 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 07:07:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 07:07:13 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 07:07:13 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 07:07:13 PM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/07/2026 07:07:13 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 07:07:16 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 07:07:16 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 07:07:16 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 07:07:17 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 07:07:17 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 07:07:17 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 07:07:17 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 07:07:17 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 07:07:17 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 07:07:17 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 08:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 08:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 08:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 08:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 08:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 08:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 08:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 08:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 08:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/07/2026 08:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 08:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 08:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 08:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 08:07:14 PM create_articles.py ln 85 JWT token obtained (0.89s)
INFO 04/07/2026 08:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 08:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 08:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 08:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 08:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 08:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 09:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 09:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 09:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 09:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 09:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 09:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 09:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 09:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 09:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/07/2026 09:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 09:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 09:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 09:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 09:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/07/2026 09:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 09:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 09:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 09:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 09:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.47s)
INFO 04/07/2026 09:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 10:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 10:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 10:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 10:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/07/2026 10:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 10:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 10:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 10:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 10:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/07/2026 10:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 10:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 10:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 10:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 10:06:14 PM create_articles.py ln 85 JWT token obtained (0.81s)
INFO 04/07/2026 10:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 10:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 10:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 10:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 10:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/07/2026 10:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 11:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 11:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/07/2026 11:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 11:06:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/07/2026 11:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/07/2026 11:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 11:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/07/2026 11:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/07/2026 11:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/07/2026 11:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/07/2026 11:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/07/2026 11:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/07/2026 11:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/07/2026 11:06:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/07/2026 11:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/07/2026 11:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/07/2026 11:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/07/2026 11:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/07/2026 11:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/07/2026 11:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 12:06:11 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 12:06:11 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 12:06:11 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 12:06:11 AM create_articles.py ln 85 JWT token obtained (0.40s)
INFO 04/08/2026 12:06:11 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 12:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 12:06:11 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 12:06:12 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 12:06:12 AM create_articles.py ln 92 Characters fetched and filtered (0.24s)
INFO 04/08/2026 12:06:12 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 12:06:16 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 12:06:16 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 12:06:16 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 12:06:16 AM create_articles.py ln 85 JWT token obtained (0.77s)
INFO 04/08/2026 12:06:16 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 12:06:16 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 12:06:16 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 12:06:17 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 12:06:17 AM create_articles.py ln 92 Characters fetched and filtered (0.39s)
INFO 04/08/2026 12:06:17 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 01:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 01:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 01:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 01:06:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/08/2026 01:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 01:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 01:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 01:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 01:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 01:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 01:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 01:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 01:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 01:06:14 AM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/08/2026 01:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 01:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 01:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 01:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 01:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.32s)
INFO 04/08/2026 01:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 02:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 02:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 02:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 02:07:10 AM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/08/2026 02:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 02:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 02:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 02:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 02:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 02:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 02:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 02:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 02:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 02:07:14 AM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/08/2026 02:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 02:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 02:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 02:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 02:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.32s)
INFO 04/08/2026 02:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 03:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 03:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 03:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 03:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 03:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 03:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 03:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 03:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 03:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 03:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 03:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 03:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 03:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 03:07:14 AM create_articles.py ln 85 JWT token obtained (0.82s)
INFO 04/08/2026 03:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 03:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 03:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 03:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 03:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 03:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 04:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 04:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 04:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 04:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 04:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 04:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 04:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 04:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 04:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 04:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 04:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 04:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 04:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 04:06:14 AM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/08/2026 04:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 04:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 04:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 04:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 04:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/08/2026 04:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 05:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 05:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 05:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 05:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 05:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 05:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 05:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 05:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 05:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 05:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 05:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 05:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 05:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 05:06:14 AM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/08/2026 05:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 05:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 05:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 05:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 05:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 05:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 06:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 06:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 06:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 06:06:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/08/2026 06:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 06:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 06:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 06:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 06:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 06:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 06:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 06:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 06:06:14 AM create_articles.py ln 85 JWT token obtained (0.54s)
INFO 04/08/2026 06:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 06:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 06:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 06:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 06:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/08/2026 06:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 07:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 07:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 07:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 07:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 07:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 07:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 07:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 07:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 07:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 07:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 07:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 07:06:14 AM create_articles.py ln 85 JWT token obtained (0.54s)
INFO 04/08/2026 07:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 07:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 07:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 07:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 08:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 08:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 08:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 08:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 08:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 08:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 08:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 08:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/08/2026 08:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 08:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 08:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 08:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 08:06:14 AM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/08/2026 08:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 08:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 08:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 08:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 08:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 09:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 09:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 09:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 09:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 09:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 09:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 09:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 09:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 09:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/08/2026 09:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 09:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 09:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 09:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 09:06:14 AM create_articles.py ln 85 JWT token obtained (0.54s)
INFO 04/08/2026 09:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 09:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 09:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 09:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 09:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 09:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 10:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 10:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 10:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 10:07:10 AM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/08/2026 10:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 10:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 10:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 10:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 10:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/08/2026 10:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 10:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 10:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 10:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 10:07:14 AM create_articles.py ln 85 JWT token obtained (0.81s)
INFO 04/08/2026 10:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 10:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 10:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 10:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 10:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/08/2026 10:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 11:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 11:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 11:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 11:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 11:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 11:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 11:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 11:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 11:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 11:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 11:06:14 AM create_articles.py ln 85 JWT token obtained (0.82s)
INFO 04/08/2026 11:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 11:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 11:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 11:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 11:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:55:06 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 11:55:07 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 11:55:07 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/08/2026 11:55:08 AM user.py ln 62 Login response status code: 200
INFO 04/08/2026 11:55:08 AM user.py ln 63 Login response headers: {'Date': 'Wed, 08 Apr 2026 11:55:07 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/08/2026 11:55:08 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/08/2026 11:55:08 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY0OTMwOCwibmJmIjoxNzc1NjQ5MzA4LCJleHAiOjE3NzYyNTQxMDgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.kN97EymV-U0OU5Za9ZUvd7iFCsTQ1FeLPM9wtjtnCN8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/08/2026 11:55:08 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY0OTMwOCwibmJmIjoxNzc1NjQ5MzA4LCJleHAiOjE3NzYyNTQxMDgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.kN97EymV-U0OU5Za9ZUvd7iFCsTQ1FeLPM9wtjtnCN8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/08/2026 11:55:08 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/08/2026 12:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 12:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 12:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 12:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 12:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 12:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 12:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 12:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 12:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.13s)
INFO 04/08/2026 12:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 12:06:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 12:06:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 12:06:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 12:06:15 PM create_articles.py ln 85 JWT token obtained (1.01s)
INFO 04/08/2026 12:06:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 12:06:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 12:06:15 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 12:06:15 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 12:06:15 PM create_articles.py ln 92 Characters fetched and filtered (0.38s)
INFO 04/08/2026 12:06:15 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 12:43:56 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 12:43:58 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 12:43:58 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/08/2026 12:43:58 PM user.py ln 62 Login response status code: 200
INFO 04/08/2026 12:43:58 PM user.py ln 63 Login response headers: {'Date': 'Wed, 08 Apr 2026 12:43:58 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/08/2026 12:43:58 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/08/2026 12:43:58 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY1MjIzOCwibmJmIjoxNzc1NjUyMjM4LCJleHAiOjE3NzYyNTcwMzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.H3zUDEH3T1lbHS-tOl0oVWcfiVb63stmE8ba8BMmbhk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/08/2026 12:43:58 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY1MjIzOCwibmJmIjoxNzc1NjUyMjM4LCJleHAiOjE3NzYyNTcwMzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.H3zUDEH3T1lbHS-tOl0oVWcfiVb63stmE8ba8BMmbhk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/08/2026 12:43:58 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/08/2026 01:00:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 01:00:10 PM cron_common.py ln 214 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 01:00:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 01:00:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 01:00:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 01:00:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 01:00:10 PM cron_common.py ln 270 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/08/2026 01:00:10 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 01:00:10 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 01:00:10 PM cron_common.py ln 331 Single character mode: Hawk
INFO 04/08/2026 01:00:10 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/08/2026 01:00:10 PM cron_common.py ln 368 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/08/2026 01:00:10 PM cron_common.py ln 371 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/08/2026 01:00:11 PM cron_common.py ln 384 Character articles: 78
INFO 04/08/2026 01:00:11 PM create_articles.py ln 118 Character articles loaded (0.45s)
INFO 04/08/2026 01:00:11 PM create_articles.py ln 120 Setup complete (0.95s total)
INFO 04/08/2026 01:00:11 PM create_articles.py ln 132 Creating article for character: Hawk
INFO 04/08/2026 01:00:11 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260408_130011_news_Hawk.log
INFO 04/08/2026 01:00:11 PM article_creation_service.py ln 786 Article creation started for character: Hawk
INFO 04/08/2026 01:00:11 PM article_creation_service.py ln 786 WordPress authentication successful (0.31s)
INFO 04/08/2026 01:00:11 PM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/08/2026 01:00:12 PM article_creation_service.py ln 786 Loaded 78 articles for character (0.43s)
INFO 04/08/2026 01:00:12 PM article_creation_service.py ln 786 Got 27 categories and 62 tags (0.15s)
INFO 04/08/2026 01:00:12 PM article_creation_service.py ln 786 Searching for 'latest headline news' (topic: news)
INFO 04/08/2026 01:00:12 PM chat.py ln 133 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/08/2026 01:00:12 PM chat.py ln 137 Tavily search will filter to past day
INFO 04/08/2026 01:00:15 PM chat.py ln 149 Tavily search for 'latest headline news' completed
INFO 04/08/2026 01:00:15 PM chat.py ln 154 Found 5 results
INFO 04/08/2026 01:00:15 PM article_creation_service.py ln 786 Found 5 search results (2.80s)
INFO 04/08/2026 01:00:15 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260408_130011_news_Hawk_search.md
INFO 04/08/2026 01:00:15 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/08/2026 01:00:49 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 01:00:49 PM article_creation_service.py ln 786 Generated article - Hawk’s Wednesday Brief: Two-week Iran ceasefire window jolts markets; Pakistan urges pause; AWS and Robinhood chiefs weigh in; NYC adds Rikers treatment units (34.87s)
INFO 04/08/2026 01:00:50 PM article_creation_service.py ln 786 Created WP post 1023 (0.09s)
INFO 04/08/2026 01:00:53 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 01:00:53 PM wp.py ln 802 Prompt: Create a featured image that visually represents the key themes in the article: depict a tense Middle East scene with symbolic elements such as a U.S. and Iranian flag separated by an hourglass signifying the two-week ceasefire window, set against a backdrop of fluctuating financial charts, oil barrels, and gold bars to represent market reactions. Inset smaller visuals of New York City’s skyline with Rikers Island highlighted, alongside icons for AI and retail investing (such as cloud symbols and stock market graphs), conveying the combination of geopolitics, financial markets, corporate innovation, and local reform. The mood should be tense yet hopeful, emphasizing the precarious balance of diplomacy and economic stakes.
INFO 04/08/2026 01:01:16 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/08/2026 01:01:16 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/08/2026 01:01:16 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-08.jpeg
INFO 04/08/2026 01:01:16 PM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-08.jpeg
INFO 04/08/2026 01:01:16 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NjUzMjExLCJuYmYiOjE3NzU2NTMyMTEsImV4cCI6MTc3NjI1ODAxMSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iwZo54vcyYO7kinlrehVNlTdwHMT8tpF6TPuscTyHws
INFO 04/08/2026 01:01:16 PM image.py ln 197 filename is 2026-04-08.webp
INFO 04/08/2026 01:01:16 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-08.webp'>}
INFO 04/08/2026 01:01:17 PM article_creation_service.py ln 786 Featured image posted (27.41s)
INFO 04/08/2026 01:01:17 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 530.13 KB
INFO 04/08/2026 01:01:25 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 01:01:25 PM wp.py ln 873 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create a dynamic and visually engaging image that complements the existing featured piece while maintaining a similar mood and color palette. The new image should portray the tension and intrigue surrounding international negotiations and economic markets.
**Key elements to include:**
1. **Color Palette:** Utilize warm amber and deep red tones to echo the emotional weight of the ceasefire situation, combined with metallic golds and greens to signify market fluctuations and financial themes.
2. **Theme:** Focus on the interconnectedness of global politics and economics. Instead of showing an hourglass, feature a world globe surrounded by various icons representing peace talks (like doves or olive branches) and energy resources (like oil rigs and renewable energy symbols).
3. **Scenes and Perspectives:** Display scenes from multiple regions — perhaps an illustrative skyline of Tehran juxtaposed with a New York City skyline, but ensure they are stylized rather than realistic. Integrate stylized digital graphs with upward and downward trends that signify market reactions and volatility emanating from these geopolitical shifts.
4. **Symbolism:** Integrate visual metaphors for hope and caution, such as a sunrise indicating new possibilities or a cloud representing uncertainty, to reflect the narrative of a fragile peace and ongoing negotiations.
5. **Text Elements:** Incorporate brief phrases related to peace talks and market impacts, such as “New Beginnings” or “Market Reaction”, but keep them subtle to avoid cluttering the image.
Ensure the overall composition maintains a harmonious balance of elements, conveying the gravity of the situation while also subtly hinting at potential optimism for resolution and economic stability.
INFO 04/08/2026 01:01:50 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/08/2026 01:01:50 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/08/2026 01:01:50 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-08-1.jpeg
INFO 04/08/2026 01:01:50 PM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-08-1.jpeg
INFO 04/08/2026 01:01:50 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1NjUzMjExLCJuYmYiOjE3NzU2NTMyMTEsImV4cCI6MTc3NjI1ODAxMSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iwZo54vcyYO7kinlrehVNlTdwHMT8tpF6TPuscTyHws
INFO 04/08/2026 01:01:51 PM image.py ln 197 filename is 2026-04-08-1.webp
INFO 04/08/2026 01:01:51 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-08-1.webp'>}
INFO 04/08/2026 01:01:51 PM article_creation_service.py ln 786 Secondary image uploaded (34.08s)
INFO 04/08/2026 01:01:51 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/08/2026 01:01:51 PM wp.py ln 933 Post content updated successfully for post 1023
INFO 04/08/2026 01:01:51 PM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/08/2026 01:01:55 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/08/2026 01:02:08 PM chat.py ln 361 AI comment: # Accuracy Assessment
The article accurately represents the information from its primary source (Source 1, CNBC). The key claims align well with the video segments described:
- **Trump's warning and two-week window**: Source 1 explicitly references "Pakistan seeks 2-week pause after Trump warns 'whole civilization will die' if no deal by deadline" and "President Trump warns 'a whole civilization will die tonight' if Iran doesn't make a deal" – matching the article's opening.
- **Corporate voices**: AWS CEO Matt Garman's quote about "there isn't just one winner" in AI and Robinhood CEO's sta
INFO 04/08/2026 01:02:08 PM chat.py ln 540 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/08/2026 01:02:08 PM article_creation_service.py ln 786 Fact-check comment posted (16.48s)
INFO 04/08/2026 01:02:08 PM article_creation_service.py ln 786 Article creation completed successfully (total: 116.76s)
INFO 04/08/2026 01:02:08 PM create_articles.py ln 168 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/08/2026 01:02:08 PM create_articles.py ln 184 Successfully generated articles for 1 character(s)
INFO 04/08/2026 01:02:08 PM create_articles.py ln 186 Fact-checking was performed inline during article creation
INFO 04/08/2026 01:02:08 PM create_articles.py ln 187 Script completed (117.72s total)
INFO 04/08/2026 01:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 01:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 01:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 01:06:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/08/2026 01:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 01:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 01:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 01:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 01:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/08/2026 01:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 01:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 01:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 01:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 01:06:14 PM create_articles.py ln 85 JWT token obtained (0.81s)
INFO 04/08/2026 01:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 01:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 01:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 01:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 01:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 01:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 02:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 02:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 02:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 02:06:10 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/08/2026 02:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 02:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 02:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 02:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 02:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/08/2026 02:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 02:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 02:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 02:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 02:06:14 PM create_articles.py ln 85 JWT token obtained (0.52s)
INFO 04/08/2026 02:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 02:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 02:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 02:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 02:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.37s)
INFO 04/08/2026 02:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 02:17:18 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 02:17:18 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/08/2026 02:17:18 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/08/2026 02:17:18 PM user.py ln 62 Login response status code: 200
INFO 04/08/2026 02:17:18 PM user.py ln 63 Login response headers: {'Date': 'Wed, 08 Apr 2026 14:17:18 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/08/2026 02:17:18 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/08/2026 02:17:18 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY1NzgzOCwibmJmIjoxNzc1NjU3ODM4LCJleHAiOjE3NzYyNjI2MzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.5ds_r0LQVAy3gsjDKBoiHtKwyTkWxJWaH-Hm84eYu7Y","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/08/2026 02:17:18 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTY1NzgzOCwibmJmIjoxNzc1NjU3ODM4LCJleHAiOjE3NzYyNjI2MzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.5ds_r0LQVAy3gsjDKBoiHtKwyTkWxJWaH-Hm84eYu7Y', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/08/2026 02:17:18 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/08/2026 03:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 03:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 03:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 03:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 03:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 03:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 03:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 03:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/08/2026 03:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 03:06:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 03:06:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 03:06:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 03:06:14 PM create_articles.py ln 85 JWT token obtained (0.55s)
INFO 04/08/2026 03:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 03:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 03:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 03:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 03:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.30s)
INFO 04/08/2026 03:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 04:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 04:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 04:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 04:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 04:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 04:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 04:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 04:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 04:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/08/2026 04:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 04:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 04:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 04:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 04:06:14 PM create_articles.py ln 85 JWT token obtained (0.54s)
INFO 04/08/2026 04:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 04:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 04:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 04:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 04:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 04:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 05:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 05:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 05:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 05:06:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/08/2026 05:06:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 05:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 05:06:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 05:06:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 05:06:11 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/08/2026 05:06:11 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 05:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 05:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 05:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 05:06:14 PM create_articles.py ln 85 JWT token obtained (0.53s)
INFO 04/08/2026 05:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 05:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 05:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 05:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 05:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 05:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 06:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 06:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] wp_news_categories=[8] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 06:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 06:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 06:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 06:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 06:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 06:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 06:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/08/2026 06:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 06:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 06:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] wp_news_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 06:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 06:07:14 PM create_articles.py ln 85 JWT token obtained (0.80s)
INFO 04/08/2026 06:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 06:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 06:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 06:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 06:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.32s)
INFO 04/08/2026 06:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 06:48:10 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/08/2026 07:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 07:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 07:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 07:07:10 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/08/2026 07:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 07:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:07:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 07:07:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 07:07:11 PM create_articles.py ln 92 Characters fetched and filtered (0.35s)
INFO 04/08/2026 07:07:11 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 07:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 07:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 07:07:14 PM create_articles.py ln 85 JWT token obtained (0.41s)
INFO 04/08/2026 07:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 07:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 07:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 07:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 07:14:26 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:14:27 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:14:27 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:14:27 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:14:27 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:14:28 PM drupal.py ln 485 Fetched 0 widgets for target_id 7
INFO 04/08/2026 07:14:28 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/08/2026 07:18:00 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:18:00 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:18:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:18:00 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:29:57 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:29:58 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:29:58 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:29:58 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:29:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:34:07 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:34:07 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:34:07 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 07:34:08 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'enX6O24A9fFas1jn2gwAUJCTILaAURTiOmekFNE7ZCY', 'logout_token': 'zn9eCfm0GO8yWs3AxGar_vdB8hSfAhjQMBvnyLJ2osQ'}
INFO 04/08/2026 07:34:08 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 07:34:08 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:34:08 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:34:09 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:34:09 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:34:24 PM article.py ln 71 Article 17756768649304154: Stored request for 'Angus' [options: research]
INFO 04/08/2026 07:34:24 PM article.py ln 110 Article 17756768649304154: Starting stream for 'Angus' on site 'dev'
INFO 04/08/2026 07:34:24 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260408_193424_dev_Angus.log
INFO 04/08/2026 07:34:24 PM article_creation_service.py ln 786 Article creation started for character: Angus
INFO 04/08/2026 07:34:25 PM article_creation_service.py ln 786 WordPress authentication successful (0.32s)
INFO 04/08/2026 07:34:25 PM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/08/2026 07:34:25 PM article_creation_service.py ln 786 Loaded 12 articles for character (0.10s)
INFO 04/08/2026 07:34:25 PM article_creation_service.py ln 786 Got 9 categories and 32 tags (0.11s)
INFO 04/08/2026 07:34:25 PM article_creation_service.py ln 786 Searching for 'Latest Angular news and updates' (topic: general)
INFO 04/08/2026 07:34:25 PM chat.py ln 129 Tavily search will ONLY include domains: ['angular.dev', 'github.com', 'stackoverflow.com', 'medium.com', 'dev.to', 'blog.angular.dev']
INFO 04/08/2026 07:34:25 PM chat.py ln 137 Tavily search will filter to past month
INFO 04/08/2026 07:34:36 PM chat.py ln 149 Tavily search for 'Latest Angular news and updates' completed
INFO 04/08/2026 07:34:36 PM chat.py ln 154 Found 5 results
INFO 04/08/2026 07:34:36 PM article_creation_service.py ln 786 Found 5 search results (11.08s)
INFO 04/08/2026 07:34:36 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260408_193424_dev_Angus_search.md
INFO 04/08/2026 07:34:36 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/08/2026 07:34:56 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Generated article - Angular 21 & 22: Ushering in the Signal-First Era and AI-Ready Web Apps (20.06s)
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Created WP post 796 (0.10s)
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Featured image generation skipped
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Secondary image generation skipped
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Fact-checking skipped (disabled)
INFO 04/08/2026 07:34:56 PM article_creation_service.py ln 786 Article creation completed successfully (total: 31.83s)
INFO 04/08/2026 07:34:56 PM article.py ln 194 Article 17756768649304154: Complete - 'Angular 21 & 22: Ushering in the Signal-First Era and AI-Ready Web Apps' (WP post 796, model: OpenAI gpt-4.1)
INFO 04/08/2026 07:36:19 PM article.py ln 71 Article 177567697945702: Stored request for 'Angus' [options: featured-image, secondary-image, research, fact-check]
INFO 04/08/2026 07:36:19 PM article.py ln 110 Article 177567697945702: Starting stream for 'Angus' on site 'dev'
INFO 04/08/2026 07:36:19 PM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260408_193619_dev_Angus.log
INFO 04/08/2026 07:36:19 PM article_creation_service.py ln 786 Article creation started for character: Angus
INFO 04/08/2026 07:36:19 PM article_creation_service.py ln 786 WordPress authentication successful (0.32s)
INFO 04/08/2026 07:36:19 PM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/08/2026 07:36:19 PM article_creation_service.py ln 786 Loaded 12 articles for character (0.09s)
INFO 04/08/2026 07:36:20 PM article_creation_service.py ln 786 Got 9 categories and 32 tags (0.11s)
INFO 04/08/2026 07:36:20 PM article_creation_service.py ln 786 Searching for 'Latest Angular news and updates' (topic: general)
INFO 04/08/2026 07:36:20 PM chat.py ln 129 Tavily search will ONLY include domains: ['angular.dev', 'github.com', 'stackoverflow.com', 'medium.com', 'dev.to', 'blog.angular.dev']
INFO 04/08/2026 07:36:20 PM chat.py ln 137 Tavily search will filter to past month
INFO 04/08/2026 07:36:29 PM chat.py ln 149 Tavily search for 'Latest Angular news and updates' completed
INFO 04/08/2026 07:36:29 PM chat.py ln 154 Found 5 results
INFO 04/08/2026 07:36:29 PM article_creation_service.py ln 786 Found 5 search results (8.94s)
INFO 04/08/2026 07:36:29 PM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260408_193619_dev_Angus_search.md
INFO 04/08/2026 07:36:29 PM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/08/2026 07:37:13 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 07:37:13 PM article_creation_service.py ln 786 Generated article - Angular 22 and the New Era: Signals, AI Tooling, and Vitest (44.13s)
INFO 04/08/2026 07:37:13 PM article_creation_service.py ln 786 Created WP post 798 (0.13s)
INFO 04/08/2026 07:37:15 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 07:37:15 PM wp.py ln 802 Prompt: Prompt for featured image generation:
"Create a dynamic, modern illustration representing Angular's technological evolution: Show the Angular logo at the center, surrounded by abstract signals or data flows radiating outwards. Integrate subtle visual elements representing AI (like a neural network pattern or circuit-like lines), code forms and UI shapes to hint at forms and components, and testing/checkmark symbols to represent Vitest integration. Style should be sleek and tech-forward, using Angular's signature red with cool blues and whites for a futuristic, enterprise-ready aesthetic. The overall feel should convey innovation, speed, and next-generation web development."
INFO 04/08/2026 07:37:38 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/08/2026 07:37:38 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/08/2026 07:37:38 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-08.jpeg
INFO 04/08/2026 07:37:38 PM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-08.jpeg
INFO 04/08/2026 07:37:38 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU2NzY5NzksIm5iZiI6MTc3NTY3Njk3OSwiZXhwIjoxNzc2MjgxNzc5LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.yUqjtmF29-RpmTuNg1SpnPMWQq6JZwpCDVLGL-4NZV4
INFO 04/08/2026 07:37:39 PM image.py ln 197 filename is 2026-04-08.webp
INFO 04/08/2026 07:37:39 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-08.webp'>}
INFO 04/08/2026 07:37:40 PM article_creation_service.py ln 786 Featured image posted (27.49s)
INFO 04/08/2026 07:37:40 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 368.17 KB
INFO 04/08/2026 07:37:48 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/08/2026 07:37:48 PM wp.py ln 873 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create an abstract composition that embodies the themes of modern web development and innovative technology reflected in the Angular 22 article. Utilize a color palette that mirrors the vibrant reds and blues of the featured image, emphasizing sharp, glowing lines and geometric shapes that convey speed and efficiency.
Incorporate elements like stylized coding symbols, circuit patterns, and abstract representations of AI and data flow, but avoid using the Angular logo. Instead, represent a generic coding environment or toolset that highlights the concepts of seamless integration and enhanced developer experience. The overall mood should convey excitement and forward-thinking, suggesting a bright future in software development without duplicating the specific content or logo found in the original image.
INFO 04/08/2026 07:38:11 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/08/2026 07:38:11 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/08/2026 07:38:11 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-08-1.jpeg
INFO 04/08/2026 07:38:11 PM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-08-1.jpeg
INFO 04/08/2026 07:38:11 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU2NzY5NzksIm5iZiI6MTc3NTY3Njk3OSwiZXhwIjoxNzc2MjgxNzc5LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.yUqjtmF29-RpmTuNg1SpnPMWQq6JZwpCDVLGL-4NZV4
INFO 04/08/2026 07:38:12 PM image.py ln 197 filename is 2026-04-08-1.webp
INFO 04/08/2026 07:38:12 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-08-1.webp'>}
INFO 04/08/2026 07:38:12 PM article_creation_service.py ln 786 Secondary image uploaded (31.70s)
INFO 04/08/2026 07:38:12 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/08/2026 07:38:12 PM wp.py ln 933 Post content updated successfully for post 798
INFO 04/08/2026 07:38:12 PM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/08/2026 07:38:14 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/08/2026 07:38:23 PM chat.py ln 361 AI comment: # Fact-Check Assessment: Angular 22 Article
The article accurately represents information from the provided sources. The key claims align well with the source material:
**Verified Claims:**
- Signal-based forms reaching maturity in v22 with fine-grained updates (Source 2 explicitly confirms this)
- Selectorless components as a new feature (Source 2 discusses this)
- Model Context Protocol (MCP) for AI tooling integration (Sources 2, 3, and 4 all confirm MCP implementation)
- Vitest as the new default test runner (Sources 3 and 5 confirm this transition)
- Angular skills for AI agents (Source
INFO 04/08/2026 07:38:23 PM chat.py ln 540 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/08/2026 07:38:23 PM article_creation_service.py ln 786 Fact-check comment posted (11.10s)
INFO 04/08/2026 07:38:23 PM article_creation_service.py ln 786 Article creation completed successfully (total: 124.15s)
INFO 04/08/2026 07:38:23 PM article.py ln 194 Article 177567697945702: Complete - 'Angular 22 and the New Era: Signals, AI Tooling, and Vitest' (WP post 798, model: OpenAI gpt-4.1)
INFO 04/08/2026 07:42:44 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:42:44 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:42:44 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 07:42:45 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'Gzc331KAQ8Eu9J5XxJfzo_64Aus2aDjN9XhZpnygWtI', 'logout_token': 'i_lw0pUPDYsP0OdFstG-HTDDrYtS245XmUkIohpPXS4'}
INFO 04/08/2026 07:42:46 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 07:42:46 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:42:46 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:42:46 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:42:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 07:43:28 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:43:28 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:43:28 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 07:43:29 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'XUb7RxnpdleTuXzAI_b29ljxBKUVElRrnRgcDvJfcEk', 'logout_token': 'HsA3EA50NntRM5eR96DOkG95sPiApENowQublkcefC4'}
INFO 04/08/2026 07:43:30 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 07:43:30 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 07:43:30 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 07:43:31 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 07:43:31 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 08:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 08:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 08:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 08:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 08:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 08:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 08:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.33s)
INFO 04/08/2026 08:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 08:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 08:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 08:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 08:07:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/08/2026 08:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 08:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 08:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 08:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 08:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 08:18:48 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:18:48 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:18:48 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:18:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:18:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:18:49 PM drupal.py ln 485 Fetched 0 widgets for target_id 8
INFO 04/08/2026 08:18:49 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/08/2026 08:18:55 PM user.py ln 35 User login attempt - site: chat-news.turmansolutions.ai, username: John, site_config: cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:18:55 PM user.py ln 42 Login request URL: https://news.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/08/2026 08:18:55 PM user.py ln 62 Login response status code: 200
INFO 04/08/2026 08:18:55 PM user.py ln 63 Login response headers: {'Date': 'Wed, 08 Apr 2026 20:18:55 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://news.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/08/2026 08:18:55 PM user.py ln 64 Login response content length: 341 bytes
INFO 04/08/2026 08:18:55 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1Njc5NTM1LCJuYmYiOjE3NzU2Nzk1MzUsImV4cCI6MTc3NjI4NDMzNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.F-TY2MkJGpAxmBS1EOuEh-dOHxrtBB3cVT75S7v2ocY","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/08/2026 08:18:55 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1Njc5NTM1LCJuYmYiOjE3NzU2Nzk1MzUsImV4cCI6MTc3NjI4NDMzNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.F-TY2MkJGpAxmBS1EOuEh-dOHxrtBB3cVT75S7v2ocY', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/08/2026 08:18:55 PM user.py ln 100 Login successful for John on https://news.turmansolutions.ai
INFO 04/08/2026 08:19:05 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:19:05 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:19:05 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:19:05 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:27:31 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:27:31 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:27:31 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:27:31 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:27:31 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:29:51 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:29:51 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:29:51 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 08:29:51 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'YZC3yZN34i7n3UxivzkqSusCrf_p13At5_oRdgIUZQ4', 'logout_token': 'GogGvicbdBdrBsk9_LlSVQFaKVS4xawXW7-06t8Q3Fk'}
INFO 04/08/2026 08:29:52 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 08:29:52 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:29:52 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:29:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:29:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:37:35 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:37:35 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:37:35 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 08:37:35 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'lKiySfPzOUh_fHaGcrLJp-bpLcrXaakK8ibV8y8Fki8', 'logout_token': '5SqtCz0eLhSREiFpcQaDFfvbqRMb2wQIOdg0SHqae6I'}
INFO 04/08/2026 08:37:36 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 08:37:36 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:37:36 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:37:36 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:37:36 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 08:40:36 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:40:36 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:40:36 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/08/2026 08:40:37 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'a90fsyVe_zlHnksy_qWh7m5xfRzvVFJ5rtVzfOdlHtw', 'logout_token': '4DGHiNH9Ytv5_GLVK4Uavnp320o9Fa2wQXsO9C2-K1c'}
INFO 04/08/2026 08:40:37 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/08/2026 08:40:37 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 08:40:37 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 08:40:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 08:40:38 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 09:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 09:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 09:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 09:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 09:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 09:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 09:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 09:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 09:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.37s)
INFO 04/08/2026 09:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 09:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 09:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 09:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 09:07:14 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/08/2026 09:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 09:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 09:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 09:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 09:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.31s)
INFO 04/08/2026 09:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 10:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 10:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 10:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 10:06:10 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/08/2026 10:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 10:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 10:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 10:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 10:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.20s)
INFO 04/08/2026 10:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 10:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 10:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 10:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 10:06:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/08/2026 10:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 10:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 10:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 10:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 10:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 10:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 11:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/08/2026 11:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 11:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/08/2026 11:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/08/2026 11:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/08/2026 11:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/08/2026 11:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/08/2026 11:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/08/2026 11:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 11:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/08/2026 11:06:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/08/2026 11:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 11:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/08/2026 11:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/08/2026 11:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/08/2026 11:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/08/2026 11:07:39 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 11:07:39 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 11:07:39 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 11:07:39 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:07:40 PM drupal.py ln 485 Fetched 0 widgets for target_id 7
INFO 04/08/2026 11:07:40 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/08/2026 11:46:00 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/08/2026 11:47:06 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 11:47:07 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/08/2026 11:47:07 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/08/2026 11:47:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/08/2026 11:47:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:47:07 PM drupal.py ln 485 Fetched 0 widgets for target_id 7
INFO 04/08/2026 11:47:07 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/08/2026 11:48:03 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 11:48:03 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 11:48:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 11:48:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:48:04 PM drupal.py ln 485 Fetched 0 widgets for target_id 8
INFO 04/08/2026 11:48:04 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/08/2026 11:48:10 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 11:48:11 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/08/2026 11:48:11 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/08/2026 11:48:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/08/2026 11:48:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/08/2026 11:48:11 PM drupal.py ln 485 Fetched 0 widgets for target_id 8
INFO 04/08/2026 11:48:11 PM drupal.py ln 485 Fetched 15 widgets for target_id 4
INFO 04/09/2026 12:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 12:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 12:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 12:06:10 AM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/09/2026 12:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 12:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 12:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 12:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 12:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/09/2026 12:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 12:06:14 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 12:06:14 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 12:06:14 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 12:06:14 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 12:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 12:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 12:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 12:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 12:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 12:06:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 01:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 01:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 01:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 01:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 01:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 01:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 01:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 01:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 01:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 01:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 01:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 01:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 01:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 01:07:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 01:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 01:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 01:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 01:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 01:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 01:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 02:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 02:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 02:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 02:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 02:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 02:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 02:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 02:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 02:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/09/2026 02:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 02:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 02:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 02:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 02:07:13 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/09/2026 02:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 02:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 02:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 02:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 02:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 02:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 03:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 03:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 03:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 03:07:10 AM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/09/2026 03:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 03:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 03:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 03:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 03:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 03:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 03:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 03:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 03:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 03:07:14 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/09/2026 03:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 03:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 03:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 03:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 03:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 03:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 04:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 04:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 04:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 04:07:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/09/2026 04:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 04:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 04:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 04:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 04:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/09/2026 04:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 04:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 04:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 04:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 04:07:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 04:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 04:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 04:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 04:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 04:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 04:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 05:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 05:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 05:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 05:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 05:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 05:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 05:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 05:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 05:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/09/2026 05:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 05:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 05:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 05:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 05:07:14 AM create_articles.py ln 85 JWT token obtained (0.40s)
INFO 04/09/2026 05:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 05:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 05:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 05:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 05:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 05:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 06:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 06:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 06:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 06:06:10 AM create_articles.py ln 85 JWT token obtained (0.46s)
INFO 04/09/2026 06:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 06:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 06:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 06:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 06:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 06:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 06:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 06:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 06:06:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 06:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 06:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 06:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 06:06:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 06:06:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 06:06:13 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 07:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 07:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 07:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 07:06:10 AM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/09/2026 07:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 07:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 07:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 07:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 07:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/09/2026 07:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 07:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 07:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 07:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 07:06:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 07:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 07:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 07:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 07:06:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 07:06:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 07:06:13 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 08:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 08:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 08:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 08:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 08:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 08:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 08:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 08:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 08:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/09/2026 08:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 08:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 08:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 08:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 08:07:13 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 08:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 08:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 08:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 08:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 08:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 08:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 09:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 09:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 09:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 09:06:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/09/2026 09:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 09:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 09:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 09:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 09:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 09:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 09:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 09:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 09:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 09:06:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 09:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 09:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 09:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 09:06:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 09:06:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 09:06:13 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 10:05:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 10:05:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 10:05:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 10:05:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 10:05:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 10:05:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 10:05:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 10:05:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 10:05:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/09/2026 10:05:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 10:05:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 10:05:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 10:05:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 10:05:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 10:05:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 10:05:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 10:05:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 10:05:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 10:05:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 10:05:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 11:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 11:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 11:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 11:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 11:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 11:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 11:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 11:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 11:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.23s)
INFO 04/09/2026 11:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 11:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 11:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 11:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 11:07:14 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 11:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 11:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 11:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 11:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 11:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 11:07:14 AM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 12:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 12:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 12:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 12:07:10 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/09/2026 12:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 12:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 12:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 12:07:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 12:07:11 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/09/2026 12:07:11 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 12:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 12:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 12:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 12:07:15 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/09/2026 12:07:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 12:07:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 12:07:15 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 12:07:15 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 12:07:15 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 12:07:15 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 12:40:38 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 12:40:40 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 12:40:40 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/09/2026 12:40:40 PM user.py ln 62 Login response status code: 200
INFO 04/09/2026 12:40:40 PM user.py ln 63 Login response headers: {'Date': 'Thu, 09 Apr 2026 12:40:40 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/09/2026 12:40:40 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/09/2026 12:40:40 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTczODQ0MCwibmJmIjoxNzc1NzM4NDQwLCJleHAiOjE3NzYzNDMyNDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.kQvAECo9zAVl5GUQDIFOhmtb2ANzjpsUK_ABN0FKvz8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/09/2026 12:40:40 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTczODQ0MCwibmJmIjoxNzc1NzM4NDQwLCJleHAiOjE3NzYzNDMyNDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.kQvAECo9zAVl5GUQDIFOhmtb2ANzjpsUK_ABN0FKvz8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/09/2026 12:40:40 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/09/2026 01:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 01:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 01:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 01:06:11 PM create_articles.py ln 85 JWT token obtained (0.41s)
INFO 04/09/2026 01:06:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 01:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 01:06:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 01:06:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 01:06:11 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/09/2026 01:06:11 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 01:06:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 01:06:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 01:06:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 01:06:15 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 01:06:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 01:06:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 01:06:15 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 01:06:15 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 01:06:15 PM create_articles.py ln 92 Characters fetched and filtered (0.11s)
INFO 04/09/2026 01:06:15 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 02:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 02:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 02:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 02:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 02:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 02:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 02:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 02:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 02:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 02:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 02:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 02:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 02:07:13 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/09/2026 02:07:13 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 02:07:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 02:07:13 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 02:07:13 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 02:07:13 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 02:07:13 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 03:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 03:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 03:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 03:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 03:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 03:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 03:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 03:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 03:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/09/2026 03:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 03:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 03:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 03:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 03:07:14 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 03:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 03:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 03:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 03:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 03:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 03:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 03:46:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 04:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 04:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 04:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 04:07:10 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/09/2026 04:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 04:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 04:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 04:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 04:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/09/2026 04:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 04:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 04:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 04:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 04:07:14 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/09/2026 04:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 04:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 04:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 04:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 04:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 04:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 05:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 05:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 05:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 05:06:10 PM create_articles.py ln 85 JWT token obtained (0.42s)
INFO 04/09/2026 05:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 05:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 05:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 05:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 05:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 05:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 05:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 05:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 05:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 05:06:13 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 05:06:13 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 05:06:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 05:06:13 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 05:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 05:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 05:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 05:17:07 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 05:17:08 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 05:17:08 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/09/2026 05:17:09 PM user.py ln 62 Login response status code: 200
INFO 04/09/2026 05:17:09 PM user.py ln 63 Login response headers: {'Date': 'Thu, 09 Apr 2026 17:17:08 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/09/2026 05:17:09 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/09/2026 05:17:09 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTc1NTAyOSwibmJmIjoxNzc1NzU1MDI5LCJleHAiOjE3NzYzNTk4MjksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eKjJIsQx_RBNm2TVCvZOXZOqDXD_Mok8pca0FHYObdg","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/09/2026 05:17:09 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTc1NTAyOSwibmJmIjoxNzc1NzU1MDI5LCJleHAiOjE3NzYzNTk4MjksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eKjJIsQx_RBNm2TVCvZOXZOqDXD_Mok8pca0FHYObdg', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/09/2026 05:17:09 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/09/2026 06:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 06:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 06:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 06:06:11 PM create_articles.py ln 85 JWT token obtained (0.41s)
INFO 04/09/2026 06:06:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 06:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 06:06:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 06:06:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 06:06:11 PM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/09/2026 06:06:11 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 06:06:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 06:06:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 06:06:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 06:06:14 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/09/2026 06:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 06:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 06:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 06:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 06:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 06:06:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 06:57:56 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 07:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 07:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 07:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 07:07:10 PM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/09/2026 07:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 07:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 07:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 07:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 07:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.11s)
INFO 04/09/2026 07:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 07:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 07:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 07:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 07:07:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 07:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 07:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 07:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 07:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 07:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 07:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 07:45:37 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/09/2026 07:45:37 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 wp_post_categories=[1] drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/09/2026 07:45:37 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/09/2026 07:45:37 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 08:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 08:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 08:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 08:07:11 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 08:07:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 08:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 08:07:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 08:07:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 08:07:11 PM create_articles.py ln 92 Characters fetched and filtered (0.20s)
INFO 04/09/2026 08:07:11 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 08:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 08:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 08:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 08:07:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/09/2026 08:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 08:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 08:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 08:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 08:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 08:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 08:21:36 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 09:07:12 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 09:07:12 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 09:07:12 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 09:07:12 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/09/2026 09:07:12 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 09:07:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 09:07:12 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 09:07:12 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 09:07:12 PM create_articles.py ln 92 Characters fetched and filtered (0.21s)
INFO 04/09/2026 09:07:12 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 09:07:15 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 09:07:15 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 09:07:15 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 09:07:16 PM create_articles.py ln 85 JWT token obtained (0.33s)
INFO 04/09/2026 09:07:16 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 09:07:16 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 09:07:16 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 09:07:16 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 09:07:16 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 09:07:16 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 10:07:12 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 10:07:12 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 10:07:12 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 10:07:13 PM create_articles.py ln 85 JWT token obtained (0.66s)
INFO 04/09/2026 10:07:13 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 10:07:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 10:07:13 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 10:07:13 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 10:07:13 PM create_articles.py ln 92 Characters fetched and filtered (0.23s)
INFO 04/09/2026 10:07:13 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 10:07:19 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 10:07:19 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 10:07:19 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 10:07:20 PM create_articles.py ln 85 JWT token obtained (0.64s)
INFO 04/09/2026 10:07:20 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 10:07:20 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 10:07:20 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 10:07:20 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 10:07:20 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/09/2026 10:07:20 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 10:13:18 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 04/09/2026 11:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 11:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/09/2026 11:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 11:07:10 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/09/2026 11:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/09/2026 11:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 11:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/09/2026 11:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/09/2026 11:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/09/2026 11:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 11:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/09/2026 11:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/09/2026 11:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/09/2026 11:07:14 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/09/2026 11:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/09/2026 11:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/09/2026 11:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/09/2026 11:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/09/2026 11:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/09/2026 11:07:14 PM cron_common.py ln 343 No characters selected.
INFO 04/09/2026 11:11:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 11:12:03 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 wp_post_categories=[1] drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/09/2026 11:12:03 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/09/2026 11:12:03 PM user.py ln 62 Login response status code: 200
INFO 04/09/2026 11:12:03 PM user.py ln 63 Login response headers: {'Date': 'Thu, 09 Apr 2026 23:12:03 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/09/2026 11:12:03 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/09/2026 11:12:03 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTc3NjMyMywibmJmIjoxNzc1Nzc2MzIzLCJleHAiOjE3NzYzODExMjMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.KEwh5TioVuSD8aq47m-raNVD2Mw-esfTO67kK-4tIQY","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/09/2026 11:12:03 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTc3NjMyMywibmJmIjoxNzc1Nzc2MzIzLCJleHAiOjE3NzYzODExMjMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.KEwh5TioVuSD8aq47m-raNVD2Mw-esfTO67kK-4tIQY', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/09/2026 11:12:03 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/10/2026 12:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 12:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 12:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 12:07:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 12:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 12:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 12:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 12:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 12:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 12:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 12:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 12:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 12:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 12:07:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 12:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 12:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 12:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 12:07:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 12:07:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 12:07:13 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 12:07:13 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 12:07:13 AM create_articles.py ln 108 Already-posted-today filter applied (0.03s)
INFO 04/10/2026 12:07:13 AM cron_common.py ln 368 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 04/10/2026 12:07:13 AM cron_common.py ln 371 Description: You are a web developer and you write technical articles about developing software using AI coding agents.
INFO 04/10/2026 12:07:14 AM cron_common.py ln 384 Character articles: 15
INFO 04/10/2026 12:07:14 AM create_articles.py ln 118 Character articles loaded (0.14s)
INFO 04/10/2026 12:07:14 AM create_articles.py ln 120 Setup complete (0.58s total)
INFO 04/10/2026 12:07:14 AM create_articles.py ln 132 Creating article for character: Geneva
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Article log file created: /tsai/repo/api/logs/articles/20260410_000714_dev_Geneva.log
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Article creation started for character: Geneva
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 WordPress authentication successful (0.31s)
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Fetched WP users (0.06s)
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Loaded 15 articles for character (0.15s)
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Got 9 categories and 32 tags (0.11s)
INFO 04/10/2026 12:07:14 AM article_creation_service.py ln 786 Searching for 'Claude Code latest updates' (topic: general)
INFO 04/10/2026 12:07:14 AM chat.py ln 137 Tavily search will filter to past month
INFO 04/10/2026 12:07:27 AM chat.py ln 149 Tavily search for 'Claude Code latest updates' completed
INFO 04/10/2026 12:07:27 AM chat.py ln 154 Found 5 results
INFO 04/10/2026 12:07:27 AM article_creation_service.py ln 786 Found 5 search results (12.66s)
INFO 04/10/2026 12:07:27 AM article_creation_service.py ln 786 Search results written to: /tsai/repo/api/logs/articles/20260410_000714_dev_Geneva_search.md
INFO 04/10/2026 12:07:27 AM article_creation_service.py ln 786 System message prepared (0.00s)
INFO 04/10/2026 12:08:22 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/10/2026 12:08:22 AM article_creation_service.py ln 786 Generated article - Claude Code in 2026: From Better Terminal to Background Teammate (and How to Use It Safely) (55.34s)
INFO 04/10/2026 12:08:22 AM article_creation_service.py ln 786 Created WP post 803 (0.11s)
INFO 04/10/2026 12:08:27 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/10/2026 12:08:27 AM wp.py ln 802 Prompt: Prompt for Featured Image Generation:
Create a modern, tech-focused illustration that visually represents Claude Code as an intelligent, autonomous teammate working in the background of a developer’s workflow. Show a computer or laptop on a desk, running code with messages or progress notifications appearing on connected devices like a smartphone and a messaging app (e.g., Telegram). In the background, suggest abstract shapes or digital elements symbolizing automation, connectivity, and secure workflows. Include subtle warning icons or shield motifs to hint at security and safety best practices. Use a color palette that blends the feel of innovation (blues, violets) with caution (subtle orange/red accents). The scene should convey the transition from hands-on coding to background AI-powered assistance, emphasizing both productivity and vigilance.
INFO 04/10/2026 12:08:54 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/10/2026 12:08:54 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/10/2026 12:08:54 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-10.jpeg
INFO 04/10/2026 12:08:54 AM article_creation_service.py ln 786 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-10.jpeg
INFO 04/10/2026 12:08:54 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU3Nzk2MzQsIm5iZiI6MTc3NTc3OTYzNCwiZXhwIjoxNzc2Mzg0NDM0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.hnsebtNIwO7PJ2yz93E4NiGaG42F3Ikv-1SQlA6HhOY
INFO 04/10/2026 12:08:54 AM image.py ln 197 filename is 2026-04-10.webp
INFO 04/10/2026 12:08:54 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-10.webp'>}
INFO 04/10/2026 12:08:55 AM article_creation_service.py ln 786 Featured image posted (32.52s)
INFO 04/10/2026 12:08:55 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 334.87 KB
INFO 04/10/2026 12:09:02 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/10/2026 12:09:02 AM wp.py ln 873 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create a vibrant, futuristic workspace that showcases a software development environment in action, but from a different angle. The scene should feature multiple screens displaying code and relevant notifications about ongoing tasks and deployment statuses, with a focus on collaboration tools and code review feedback.
Incorporate elements like a large digital display on the wall showing statistics and graphs related to project progress, alongside a smart assistant character interacting with the screen. Use a color palette that aligns with the original image—rich blues and soft purples combined with hints of electric green and bursts of yellow to highlight notifications. Add decorative elements that suggest a high-tech atmosphere, like plants, tech devices, and glowing interfaces, ensuring a sense of productivity and innovation.
This image should convey dynamism and a collaborative spirit in technology development, contrasting the focused task execution in the original, while maintaining visual harmony.
INFO 04/10/2026 12:09:28 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/10/2026 12:09:28 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/10/2026 12:09:28 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-10-1.jpeg
INFO 04/10/2026 12:09:28 AM article_creation_service.py ln 786 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-10-1.jpeg
INFO 04/10/2026 12:09:28 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzU3Nzk2MzQsIm5iZiI6MTc3NTc3OTYzNCwiZXhwIjoxNzc2Mzg0NDM0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.hnsebtNIwO7PJ2yz93E4NiGaG42F3Ikv-1SQlA6HhOY
INFO 04/10/2026 12:09:28 AM image.py ln 197 filename is 2026-04-10-1.webp
INFO 04/10/2026 12:09:28 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-10-1.webp'>}
INFO 04/10/2026 12:09:29 AM article_creation_service.py ln 786 Secondary image uploaded (34.01s)
INFO 04/10/2026 12:09:29 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/10/2026 12:09:29 AM wp.py ln 933 Post content updated successfully for post 803
INFO 04/10/2026 12:09:29 AM article_creation_service.py ln 786 Post content updated with secondary image
INFO 04/10/2026 12:09:31 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/10/2026 12:09:42 AM chat.py ln 361 AI comment: # Fact-Check Assessment
The article accurately represents the information from its sources. Here's what I verified:
**Core claims confirmed:**
- **50+ updates in ~7 weeks**: Source [2] (Reddit) explicitly states "50+ major UPDATES" in 52 days, matching the article's "50+ updates in roughly seven weeks."
- **Key features (Dispatch, Channels, Remote Control)**: Source [1] (AI Maker guide) confirms all three features with matching descriptions—Dispatch for phone triggers, Channels for Telegram delivery, Remote Control for session persistence.
- **Security incident**: Source [4] (WIRED) confirms
INFO 04/10/2026 12:09:42 AM chat.py ln 540 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/10/2026 12:09:42 AM article_creation_service.py ln 786 Fact-check comment posted (13.14s)
INFO 04/10/2026 12:09:42 AM article_creation_service.py ln 786 Article creation completed successfully (total: 148.52s)
INFO 04/10/2026 12:09:42 AM create_articles.py ln 168 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 04/10/2026 12:09:42 AM create_articles.py ln 184 Successfully generated articles for 1 character(s)
INFO 04/10/2026 12:09:42 AM create_articles.py ln 187 Script completed (149.11s total)
INFO 04/10/2026 01:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 01:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 01:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 01:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 01:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 01:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 01:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 01:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 01:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 01:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 01:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 01:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 01:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 01:06:14 AM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/10/2026 01:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 01:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 01:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 01:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 01:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.12s)
INFO 04/10/2026 01:06:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 01:06:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 01:06:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 01:06:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 01:06:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 01:06:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 02:05:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 02:05:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 02:05:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 02:05:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 02:05:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 02:05:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 02:05:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 02:05:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 02:05:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/10/2026 02:05:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 02:05:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 02:05:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 02:05:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 02:05:13 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 02:05:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 02:05:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 02:05:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 02:05:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 02:05:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 02:05:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 02:05:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 02:05:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 02:05:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 02:05:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 02:05:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 02:51:32 AM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 wp_post_categories=[8, 9, 10, 11, 12, 13] drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 04/10/2026 03:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 03:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 03:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 03:06:10 AM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/10/2026 03:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 03:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 03:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 03:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 03:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 03:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 03:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 03:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 03:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 03:06:14 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 03:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 03:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 03:06:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 03:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 03:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 03:06:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 03:06:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 03:06:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 03:06:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 03:06:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 03:06:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 04:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 04:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 04:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 04:07:10 AM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/10/2026 04:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 04:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 04:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 04:07:11 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 04:07:11 AM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/10/2026 04:07:11 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 04:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 04:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 04:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 04:07:14 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 04:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 04:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 04:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 04:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 04:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 04:07:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 04:07:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 04:07:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 04:07:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 04:07:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 04:07:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 05:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 05:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 05:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 05:06:10 AM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/10/2026 05:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 05:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 05:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 05:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 05:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 05:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 05:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 05:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 05:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 05:06:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 05:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 05:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 05:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 05:06:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 05:06:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 05:06:13 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 05:06:13 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 05:06:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 05:06:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 05:06:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.04s)
INFO 04/10/2026 05:06:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 06:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 06:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 06:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 06:06:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 06:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 06:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 06:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 06:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/10/2026 06:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 06:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 06:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 06:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 06:06:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 06:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 06:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 06:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 06:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 06:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 06:06:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 06:06:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 06:06:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 06:06:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 06:06:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 06:06:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 07:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 07:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 07:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 07:07:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 07:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 07:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 07:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 07:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 07:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/10/2026 07:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 07:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 07:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 07:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 07:07:14 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 07:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 07:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 07:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 07:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 07:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 07:07:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 07:07:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 07:07:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 07:07:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 07:07:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 07:07:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 08:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 08:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 08:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 08:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 08:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 08:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 08:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 08:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 08:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/10/2026 08:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 08:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 08:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 08:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 08:07:13 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 08:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 08:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 08:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 08:07:13 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 08:07:13 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 08:07:13 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 08:07:13 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 08:07:13 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 08:07:13 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 08:07:13 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 08:07:13 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 09:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 09:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 09:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 09:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 09:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 09:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 09:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 09:07:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 09:07:10 AM create_articles.py ln 92 Characters fetched and filtered (0.19s)
INFO 04/10/2026 09:07:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 09:07:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 09:07:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 09:07:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 09:07:13 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 09:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 09:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 09:07:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 09:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 09:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 09:07:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 09:07:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 09:07:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 09:07:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 09:07:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 09:07:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 10:06:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 10:06:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 10:06:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 10:06:10 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 10:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 10:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 10:06:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 10:06:10 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 10:06:10 AM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/10/2026 10:06:10 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 10:06:13 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 10:06:13 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 10:06:13 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 10:06:13 AM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 10:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 10:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 10:06:13 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 10:06:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 10:06:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 10:06:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 10:06:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 10:06:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 10:06:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 10:06:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 10:06:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 11:07:10 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 11:07:10 AM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 11:07:10 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 11:07:10 AM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 11:07:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 11:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:07:10 AM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 11:07:11 AM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 11:07:11 AM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 11:07:11 AM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 11:07:14 AM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 11:07:14 AM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:07:14 AM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 11:07:14 AM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 11:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:07:14 AM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 11:07:14 AM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 11:07:14 AM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 11:07:14 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 11:07:14 AM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 11:07:14 AM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 11:07:14 AM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 11:07:14 AM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 11:07:14 AM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 12:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 12:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 12:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 12:06:11 PM create_articles.py ln 85 JWT token obtained (0.61s)
INFO 04/10/2026 12:06:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 12:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 12:06:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 12:06:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 12:06:11 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/10/2026 12:06:11 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 12:06:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 12:06:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 12:06:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 12:06:14 PM create_articles.py ln 85 JWT token obtained (0.34s)
INFO 04/10/2026 12:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 12:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 12:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 12:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 12:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 12:06:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 12:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 12:06:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 12:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 12:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 12:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 01:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 01:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 01:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 01:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 01:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 01:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 01:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 01:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 01:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.23s)
INFO 04/10/2026 01:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 01:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 01:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 01:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 01:07:14 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 01:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 01:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 01:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 01:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 01:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 01:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 01:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 01:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 01:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 01:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 01:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 02:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 02:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 02:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 02:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 02:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 02:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 02:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 02:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/10/2026 02:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 02:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 02:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 02:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 02:07:14 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 02:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 02:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 02:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 02:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 02:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 02:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 02:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 02:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 02:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 02:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 02:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 03:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 03:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 03:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 03:06:10 PM create_articles.py ln 85 JWT token obtained (0.35s)
INFO 04/10/2026 03:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 03:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 03:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 03:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 03:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 03:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 03:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 03:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 03:06:13 PM create_articles.py ln 85 JWT token obtained (0.32s)
INFO 04/10/2026 03:06:13 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 03:06:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 03:06:13 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 03:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 03:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 03:06:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 03:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 03:06:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 03:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 03:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.04s)
INFO 04/10/2026 03:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 04:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 04:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 04:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 04:06:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 04:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 04:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 04:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 04:06:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 04:06:11 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 04:06:11 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 04:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 04:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 04:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 04:06:14 PM create_articles.py ln 85 JWT token obtained (0.33s)
INFO 04/10/2026 04:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 04:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 04:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 04:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 04:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.11s)
INFO 04/10/2026 04:06:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 04:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 04:06:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 04:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 04:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.09s)
INFO 04/10/2026 04:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 05:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 05:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 05:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 05:07:11 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/10/2026 05:07:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 05:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 05:07:11 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 05:07:11 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 05:07:11 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 05:07:11 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 05:07:14 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 05:07:14 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 05:07:14 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 05:07:14 PM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/10/2026 05:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 05:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 05:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 05:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 05:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/10/2026 05:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 05:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 05:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 05:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 05:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 05:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 06:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 06:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 06:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 06:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 06:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 06:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 06:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 06:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 06:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.18s)
INFO 04/10/2026 06:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 06:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 06:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 06:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 06:07:14 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 06:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 06:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 06:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 06:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 06:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 06:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 06:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 06:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 06:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 06:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 06:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 07:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 07:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 07:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 07:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 07:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 07:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 07:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 07:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 07:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.14s)
INFO 04/10/2026 07:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 07:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 07:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 07:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 07:07:13 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 07:07:13 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 07:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 07:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 07:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 07:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 07:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 07:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 07:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 07:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 07:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 07:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 08:06:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 08:06:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 08:06:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 08:06:10 PM create_articles.py ln 85 JWT token obtained (0.37s)
INFO 04/10/2026 08:06:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 08:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 08:06:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 08:06:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 08:06:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/10/2026 08:06:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 08:06:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 08:06:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 08:06:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 08:06:14 PM create_articles.py ln 85 JWT token obtained (0.45s)
INFO 04/10/2026 08:06:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 08:06:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 08:06:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 08:06:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 08:06:14 PM create_articles.py ln 92 Characters fetched and filtered (0.15s)
INFO 04/10/2026 08:06:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 08:06:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 08:06:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 08:06:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 08:06:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.09s)
INFO 04/10/2026 08:06:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 08:31:33 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 09:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 09:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 09:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 09:07:10 PM create_articles.py ln 85 JWT token obtained (0.36s)
INFO 04/10/2026 09:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 09:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 09:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 09:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 09:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.17s)
INFO 04/10/2026 09:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 09:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 09:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 09:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 09:07:14 PM create_articles.py ln 85 JWT token obtained (0.39s)
INFO 04/10/2026 09:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 09:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 09:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 09:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 09:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.10s)
INFO 04/10/2026 09:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 09:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 09:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 09:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 09:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.08s)
INFO 04/10/2026 09:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 10:07:10 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 10:07:10 PM cron_common.py ln 214 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 wp_post_categories=[5] drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 10:07:10 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 10:07:10 PM create_articles.py ln 85 JWT token obtained (0.38s)
INFO 04/10/2026 10:07:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 10:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 10:07:10 PM cron_common.py ln 270 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 10:07:10 PM cron_common.py ln 283 filtered characters: 15
INFO 04/10/2026 10:07:10 PM create_articles.py ln 92 Characters fetched and filtered (0.16s)
INFO 04/10/2026 10:07:10 PM cron_common.py ln 343 No characters selected.
INFO 04/10/2026 10:07:13 PM create_articles.py ln 75 Services initialized (0.00s)
INFO 04/10/2026 10:07:13 PM cron_common.py ln 214 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 wp_post_categories=[1] drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 10:07:13 PM create_articles.py ln 80 Site config loaded (0.00s)
INFO 04/10/2026 10:07:14 PM create_articles.py ln 85 JWT token obtained (0.43s)
INFO 04/10/2026 10:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 10:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 10:07:14 PM cron_common.py ln 270 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 10:07:14 PM cron_common.py ln 283 filtered characters: 12
INFO 04/10/2026 10:07:14 PM create_articles.py ln 92 Characters fetched and filtered (0.09s)
INFO 04/10/2026 10:07:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 10:07:14 PM create_articles.py ln 100 Characters selected (0.00s)
INFO 04/10/2026 10:07:14 PM cron_common.py ln 409 Skipping Geneva: already posted an article today
INFO 04/10/2026 10:07:14 PM cron_common.py ln 416 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 10:07:14 PM create_articles.py ln 108 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 10:07:14 PM create_articles.py ln 111 No characters remaining after today-filter.
INFO 04/10/2026 10:54:10 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/10/2026 10:58:40 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 10:58:40 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/10/2026 10:58:40 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 10:58:41 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/10/2026 10:58:41 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:00:02 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/10/2026 11:00:02 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 11:00:02 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/10/2026 11:00:03 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'AY6Yv44YmT-djB2j_szSKuLzBoQdOhicsBqZ-Ei6p9o', 'logout_token': 'X-iJ9wK-hv8jgUJTCVzSlVGgDS-Wt5WbTq5Qkg3yIRY'}
INFO 04/10/2026 11:00:04 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/10/2026 11:00:04 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/10/2026 11:00:04 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 11:00:04 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/10/2026 11:00:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:03:03 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/10/2026 11:03:03 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 11:03:03 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/10/2026 11:03:03 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': '5ViJHLeAPgFnouYUR5jLoiXiVWgxPqHfAE8wudojV_0', 'logout_token': 'HJI-hfwnBs4oF23nLyKJhkof3uRBnyNVD3NekPIB_lA'}
INFO 04/10/2026 11:03:04 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/10/2026 11:03:04 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/10/2026 11:03:04 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/10/2026 11:03:04 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/10/2026 11:03:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:05:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/10/2026 11:05:10 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/10/2026 11:05:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/10/2026 11:05:10 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/10/2026 11:05:10 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/10/2026 11:05:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:05:10 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/10/2026 11:05:10 PM cron_common.py ln 313 filtered characters: 15
INFO 04/10/2026 11:05:10 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/10/2026 11:05:10 PM cron_common.py ln 373 No characters selected.
INFO 04/10/2026 11:05:13 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/10/2026 11:05:13 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:05:13 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/10/2026 11:05:14 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/10/2026 11:05:14 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:05:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:05:14 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/10/2026 11:05:14 PM cron_common.py ln 313 filtered characters: 12
INFO 04/10/2026 11:05:14 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/10/2026 11:05:14 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/10/2026 11:05:14 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/10/2026 11:05:14 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/10/2026 11:05:14 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/10/2026 11:05:14 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/10/2026 11:05:14 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/10/2026 11:07:03 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:07:04 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:07:04 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:07:04 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:07:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:07:04 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/10/2026 11:07:04 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/10/2026 11:07:07 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:07:07 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:12:26 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:12:26 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:12:26 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/10/2026 11:12:26 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'jGBpO6jORzGY2a0MIh52CBk_HJtQwKgU43DxDNDOfvo', 'logout_token': '4xuixf3-nNqfGQoE3cH25lvkEumCYn2_fmtkQ2eQBkE'}
INFO 04/10/2026 11:12:27 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/10/2026 11:12:27 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:12:27 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:12:27 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:12:27 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:14:17 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:14:17 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:14:17 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/10/2026 11:14:18 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'bVGZzIucc3DdzCNL9a3mg6CzkgI2tTvbm7s5-tqehPA', 'logout_token': 'iShEk2JkXETuP5qZFXcJ2w4AdlOc7WoHCDPq9Q1Nnj0'}
INFO 04/10/2026 11:14:18 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/10/2026 11:14:18 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:14:18 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:14:18 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:14:18 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/10/2026 11:15:26 PM drupal.py ln 115 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:15:26 PM drupal.py ln 117 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:15:26 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/10/2026 11:15:27 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'SANv6MPheyq5VimYdokFyWNmkDhXY0S_THPTeW5rlaE', 'logout_token': 'sLCx0EuXmtnbsZ4K69mKnrR3VQiiPLRqTz9sxHpHcVI'}
INFO 04/10/2026 11:15:27 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/10/2026 11:15:27 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/10/2026 11:15:27 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/10/2026 11:15:27 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/10/2026 11:15:27 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:10 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 12:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:10 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 12:06:10 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 12:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:10 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 12:06:10 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 12:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/11/2026 12:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 12:06:13 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:13 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 12:06:13 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:14 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 12:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 12:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:14 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 12:06:14 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 12:06:14 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 12:06:14 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 12:06:17 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:17 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 12:06:17 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:17 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/11/2026 12:06:17 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 12:06:17 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:17 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 12:06:17 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 12:06:17 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 12:06:17 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 12:47:03 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/11/2026 01:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 01:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 01:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 01:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 01:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 01:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.41s)
INFO 04/11/2026 01:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 01:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:07:07 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/11/2026 01:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 01:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 01:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 01:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/11/2026 01:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 01:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 01:07:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 01:07:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:07:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 01:07:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 01:07:11 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 01:07:11 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 02:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 02:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 02:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 02:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 02:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 02:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/11/2026 02:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 02:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 02:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 02:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 02:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 02:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 02:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 02:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 02:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 02:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 02:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 02:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 02:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 02:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 02:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 03:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:03 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/11/2026 03:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 03:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 03:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 03:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/11/2026 03:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 03:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:07 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 03:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 03:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 03:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 03:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 03:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 03:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 03:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 03:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 03:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 04:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 04:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:07:03 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 04:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 04:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 04:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 04:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/11/2026 04:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 04:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 04:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:07:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 04:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 04:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 04:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 04:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 04:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 04:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 04:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 04:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 04:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 04:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 04:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 04:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 05:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 05:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 05:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 05:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 05:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/11/2026 05:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 05:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 05:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 05:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 05:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 05:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 05:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 05:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:06:11 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 05:06:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 05:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:06:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 05:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 05:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 05:06:11 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 06:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 06:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:06:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/11/2026 06:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 06:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 06:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 06:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/11/2026 06:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 06:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 06:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 06:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 06:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 06:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 06:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 06:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 06:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 06:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:06:10 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/11/2026 06:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 06:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 06:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 06:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 06:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 06:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/11/2026 06:06:10 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/11/2026 06:06:10 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/11/2026 06:06:11 AM cron_common.py ln 414 Character articles: 79
INFO 04/11/2026 06:06:11 AM create_articles.py ln 126 Character articles loaded (0.44s)
INFO 04/11/2026 06:06:11 AM create_articles.py ln 128 Setup complete (1.01s total)
INFO 04/11/2026 06:06:11 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/11/2026 06:06:11 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260411_060611_news_Hawk.log
INFO 04/11/2026 06:06:11 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/11/2026 06:06:11 AM article_creation_service.py ln 788 WordPress authentication successful (0.31s)
INFO 04/11/2026 06:06:11 AM article_creation_service.py ln 788 Fetched WP users (0.06s)
INFO 04/11/2026 06:06:11 AM article_creation_service.py ln 788 Loaded 79 articles for character (0.48s)
INFO 04/11/2026 06:06:12 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.15s)
INFO 04/11/2026 06:06:12 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/11/2026 06:06:12 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/11/2026 06:06:12 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/11/2026 06:06:13 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/11/2026 06:06:13 AM chat.py ln 159 Found 5 results
INFO 04/11/2026 06:06:13 AM article_creation_service.py ln 788 Found 5 search results (1.60s)
INFO 04/11/2026 06:06:13 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260411_060611_news_Hawk_search.md
INFO 04/11/2026 06:06:13 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/11/2026 06:07:02 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/11/2026 06:07:02 AM article_creation_service.py ln 788 Generated article - Hawk’s Saturday Brief: Tesla’s Dutch green light for supervised self‑driving; markets weigh Iran risk and sticky inflation; Prince Harry sued by his own charity; Nightline’s true‑crime to TV‑revival mix (48.76s)
INFO 04/11/2026 06:07:02 AM article_creation_service.py ln 788 Created WP post 1028 (0.10s)
INFO 04/11/2026 06:07:06 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/11/2026 06:07:06 AM wp.py ln 802 Prompt: Prompt for featured image generation:
Create a collage-style featured image representing the key topics in the article: 1) a stylized map of the Netherlands with a futuristic Tesla car and a glowing “approved” symbol to capture Europe's first supervised self-driving software green light; 2) financial charts or oil rigs overlaid with tense silhouettes of Iran and fluctuating arrows for market risk and geopolitical tension; 3) a regal yet somber photo-realistic illustration of Prince Harry with legal documents and a subtle African theme referring to the charity lawsuit; and 4) hints of classic TV—an old television with images suggesting crime stories, Malcolm in the Middle, and the British royal fashion—a nod to Nightline’s news mix. The overall tone should be modern, dynamic, and newsy, with balanced visual weight to all topics.
INFO 04/11/2026 06:07:29 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/11/2026 06:07:29 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/11/2026 06:07:29 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-11.jpeg
INFO 04/11/2026 06:07:29 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-11.jpeg
INFO 04/11/2026 06:07:29 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1ODg3NTcxLCJuYmYiOjE3NzU4ODc1NzEsImV4cCI6MTc3NjQ5MjM3MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.EXpJW0E4XWvA6MkJv2f3Wqj9pSK78Fpxyyz-vZagZmQ
INFO 04/11/2026 06:07:30 AM image.py ln 197 filename is 2026-04-11.webp
INFO 04/11/2026 06:07:30 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-11.webp'>}
INFO 04/11/2026 06:07:30 AM article_creation_service.py ln 788 Featured image posted (28.34s)
INFO 04/11/2026 06:07:30 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 560.95 KB
INFO 04/11/2026 06:07:35 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/11/2026 06:07:35 AM wp.py ln 873 Secondary Image Prompt: ### Prompt for a Complementary Image
Create an illustration that captures the essence of geopolitical tensions and technological advancements, featuring a rich and vibrant color palette similar to the original image. Show a futuristic cityscape that incorporates symbols of technology and energy, such as wind farms, solar panels, and electric vehicles, set against a dramatic sunset sky.
In the foreground, include an abstract representation of stock market trends using upward and downward arrows, blending seamlessly with images of the Earth or map outlines to symbolize global interconnections.
Also, integrate elements that hint at cultural narratives, like an old television showing snippets of vintage crime shows or classic comedies, juxtaposed with headlines of modern news impacting society. Ensure the composition conveys the blend of optimism in technological progress and the underlying currents of economic uncertainty, inviting viewers to reflect on the duality of contemporary issues.
INFO 04/11/2026 06:07:56 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/11/2026 06:07:57 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/11/2026 06:07:57 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-11-1.jpeg
INFO 04/11/2026 06:07:57 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-11-1.jpeg
INFO 04/11/2026 06:07:57 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1ODg3NTcxLCJuYmYiOjE3NzU4ODc1NzEsImV4cCI6MTc3NjQ5MjM3MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.EXpJW0E4XWvA6MkJv2f3Wqj9pSK78Fpxyyz-vZagZmQ
INFO 04/11/2026 06:07:57 AM image.py ln 197 filename is 2026-04-11-1.webp
INFO 04/11/2026 06:07:57 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-11-1.webp'>}
INFO 04/11/2026 06:07:57 AM article_creation_service.py ln 788 Secondary image uploaded (26.85s)
INFO 04/11/2026 06:07:57 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/11/2026 06:07:57 AM wp.py ln 933 Post content updated successfully for post 1028
INFO 04/11/2026 06:07:57 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/11/2026 06:07:59 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/11/2026 06:08:10 AM chat.py ln 366 AI comment: The article accurately represents the information from the provided sources. The key claims align well with the source material:
**Tesla's Dutch approval** is confirmed by Source 1, which reports the Netherlands granted approval for Tesla's supervised self-driving software as Europe's first such authorization. **Market commentary** matches Source 4 (CNBC video), which features the exact analysts quoted—Mike Wilson discussing the market "playbook" resembling pre-war conditions, Amos Hochstein calling it "fantasy" to expect Iran to relinquish Strait of Hormuz leverage, Peter Boockvar forecastin
INFO 04/11/2026 06:08:10 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/11/2026 06:08:10 AM article_creation_service.py ln 788 Fact-check comment posted (12.63s)
INFO 04/11/2026 06:08:10 AM article_creation_service.py ln 788 Article creation completed successfully (total: 119.37s)
INFO 04/11/2026 06:08:10 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/11/2026 06:08:10 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/11/2026 06:08:10 AM create_articles.py ln 204 Script completed (120.39s total)
INFO 04/11/2026 07:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 07:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 07:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 07:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 07:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 07:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/11/2026 07:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 07:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 07:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 07:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 07:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 07:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 07:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 07:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 07:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 07:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 07:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 07:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 07:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 07:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 07:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/11/2026 07:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/11/2026 07:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/11/2026 07:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/11/2026 08:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 08:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 08:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 08:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 08:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 08:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/11/2026 08:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 08:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 08:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 08:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 08:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 08:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 08:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 08:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 08:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 08:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 08:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 08:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 08:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 08:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 08:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 08:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 08:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/11/2026 08:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/11/2026 08:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/11/2026 08:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/11/2026 09:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 09:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 09:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 09:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 09:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 09:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/11/2026 09:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 09:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 09:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 09:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 09:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 09:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 09:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 09:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 09:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 09:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 09:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 09:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 09:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 09:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 09:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 09:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 09:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/11/2026 09:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/11/2026 09:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/11/2026 09:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/11/2026 10:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 10:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:04 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/11/2026 10:07:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 10:07:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 10:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 10:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/11/2026 10:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 10:07:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 10:07:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:08 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/11/2026 10:07:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 10:07:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 10:07:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 10:07:08 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 10:07:08 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 10:07:11 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:11 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 10:07:11 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:12 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 10:07:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 10:07:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 10:07:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 10:07:12 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 10:07:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 10:07:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 10:07:12 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/11/2026 10:07:12 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/11/2026 10:07:12 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/11/2026 10:07:12 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/11/2026 11:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 11:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:07:03 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/11/2026 11:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 11:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 11:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 11:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/11/2026 11:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 11:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:07:07 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 11:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 11:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 11:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 11:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 11:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 11:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 11:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 11:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 11:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 11:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 11:07:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/11/2026 11:07:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/11/2026 11:07:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/11/2026 11:07:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/11/2026 11:07:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/11/2026 11:07:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/11/2026 11:20:52 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 11:20:55 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 11:20:55 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/11/2026 11:20:55 AM user.py ln 62 Login response status code: 200
INFO 04/11/2026 11:20:55 AM user.py ln 63 Login response headers: {'Date': 'Sat, 11 Apr 2026 11:20:55 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/11/2026 11:20:55 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/11/2026 11:20:55 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkwNjQ1NSwibmJmIjoxNzc1OTA2NDU1LCJleHAiOjE3NzY1MTEyNTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ySC3b_Ww6OsUvXJFYO-FXElsOfFKmdzHihdAxTGUVbY","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/11/2026 11:20:55 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkwNjQ1NSwibmJmIjoxNzc1OTA2NDU1LCJleHAiOjE3NzY1MTEyNTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ySC3b_Ww6OsUvXJFYO-FXElsOfFKmdzHihdAxTGUVbY', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/11/2026 11:20:55 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/11/2026 11:23:29 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 12:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 12:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 12:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 12:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 12:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 12:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/11/2026 12:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 12:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 12:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:07 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/11/2026 12:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 12:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 12:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 12:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 12:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 12:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 12:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 12:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 12:06:10 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 12:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 12:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 12:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 12:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 12:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 12:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 01:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 01:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 01:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 01:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 01:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/11/2026 01:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 01:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 01:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 01:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 01:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 01:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 01:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 01:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 01:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 01:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 01:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 01:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 01:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 01:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 01:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 01:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 01:17:34 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/11/2026 01:19:49 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 01:26:47 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 01:26:47 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/11/2026 01:26:47 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 01:26:47 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 01:26:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 02:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 02:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 02:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 02:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 02:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/11/2026 02:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 02:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 02:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:07 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/11/2026 02:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 02:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 02:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 02:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 02:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 02:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 02:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 02:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 02:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 02:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 02:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 02:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 02:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 02:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 03:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 03:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 03:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 03:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 03:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/11/2026 03:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 03:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 03:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 03:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 03:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 03:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 03:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 03:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 03:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 03:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 03:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 03:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 03:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 03:31:00 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:31:02 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:31:02 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:31:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:31:02 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:32:47 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:32:47 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:32:47 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/11/2026 03:32:48 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': '9ct7kvZjub1nZo7K4bFQsZQGDixQwUEv8cX8F3dmOy4', 'logout_token': 'HpGahThKq8uPrkqmh-XPnjCy8ynYC0mbpoOjqMD-noU'}
INFO 04/11/2026 03:32:48 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/11/2026 03:32:48 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:32:48 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:32:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:32:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:33:25 PM article.py ln 71 Article 17759216052355003: Stored request for 'Hawk' [options: research]
INFO 04/11/2026 03:33:25 PM article.py ln 110 Article 17759216052355003: Starting stream for 'Hawk' on site 'news'
INFO 04/11/2026 03:33:25 PM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260411_153325_news_Hawk.log
INFO 04/11/2026 03:33:25 PM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/11/2026 03:33:25 PM article_creation_service.py ln 788 WordPress authentication successful (0.38s)
INFO 04/11/2026 03:33:25 PM article_creation_service.py ln 788 Fetched WP users (0.06s)
INFO 04/11/2026 03:33:26 PM article_creation_service.py ln 788 Loaded 79 articles for character (0.44s)
INFO 04/11/2026 03:33:26 PM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.15s)
INFO 04/11/2026 03:33:26 PM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/11/2026 03:33:26 PM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/11/2026 03:33:26 PM chat.py ln 139 Tavily search will filter to past day
INFO 04/11/2026 03:33:27 PM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/11/2026 03:33:27 PM chat.py ln 159 Found 5 results
INFO 04/11/2026 03:33:27 PM article_creation_service.py ln 788 Found 5 search results (1.38s)
INFO 04/11/2026 03:33:27 PM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260411_153325_news_Hawk_search.md
INFO 04/11/2026 03:33:27 PM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/11/2026 03:34:00 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Generated article - Hawk’s Saturday Brief: Tesla wins first EU nod for supervised self‑driving; markets eye Iran deadline and $5 gas risk; Prince Harry sued by his own charity; Nightline’s mix; a sports‑culture note (32.54s)
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Created WP post 1033 (0.10s)
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Featured image generation skipped
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Secondary image generation skipped
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Fact-checking skipped (disabled)
INFO 04/11/2026 03:34:00 PM article_creation_service.py ln 788 Article creation completed successfully (total: 35.05s)
INFO 04/11/2026 03:34:00 PM article.py ln 194 Article 17759216052355003: Complete - 'Hawk’s Saturday Brief: Tesla wins first EU nod for supervised self‑driving; markets eye Iran deadline and $5 gas risk; Prince Harry sued by his own charity; Nightline’s mix; a sports‑culture note' (WP post 1033, model: OpenAI gpt-5)
INFO 04/11/2026 03:36:30 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:36:30 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:36:30 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/11/2026 03:36:30 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'RWnJKfS-sre5c4ms9EQZ7gmmjkB3isEgraRwJrC2gBk', 'logout_token': 'y_ZBpJ2HImZ3ZCsKAXD_-ivDuAFuuELvpNSMgnqDdd8'}
INFO 04/11/2026 03:36:30 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/11/2026 03:36:31 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:36:31 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:36:31 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:36:31 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 03:37:35 PM article.py ln 71 Article 1775921855861893: Stored request for 'Hawk' [options: research]
INFO 04/11/2026 03:37:35 PM article.py ln 110 Article 1775921855861893: Starting stream for 'Hawk' on site 'news'
INFO 04/11/2026 03:37:35 PM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260411_153735_news_Hawk.log
INFO 04/11/2026 03:37:35 PM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/11/2026 03:37:36 PM article_creation_service.py ln 788 WordPress authentication successful (0.32s)
INFO 04/11/2026 03:37:36 PM article_creation_service.py ln 788 Fetched WP users (0.06s)
INFO 04/11/2026 03:37:36 PM article_creation_service.py ln 788 Loaded 79 articles for character (0.52s)
INFO 04/11/2026 03:37:36 PM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.14s)
INFO 04/11/2026 03:37:36 PM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/11/2026 03:37:36 PM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/11/2026 03:37:36 PM chat.py ln 139 Tavily search will filter to past day
INFO 04/11/2026 03:37:37 PM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/11/2026 03:37:37 PM chat.py ln 159 Found 5 results
INFO 04/11/2026 03:37:37 PM article_creation_service.py ln 788 Found 5 search results (0.94s)
INFO 04/11/2026 03:37:37 PM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260411_153735_news_Hawk_search.md
INFO 04/11/2026 03:37:37 PM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/11/2026 03:38:07 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Generated article - Hawk’s Weekend Brief: Prince Harry faces defamation suit from his own charity; Kylie signals Bieber allegiance at Coachella; Browns eye versatile RB; NYC checks the skies (29.20s)
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Created WP post 1035 (0.11s)
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Featured image generation skipped
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Secondary image generation skipped
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Fact-checking skipped (disabled)
INFO 04/11/2026 03:38:07 PM article_creation_service.py ln 788 Article creation completed successfully (total: 31.29s)
INFO 04/11/2026 03:38:07 PM article.py ln 194 Article 1775921855861893: Complete - 'Hawk’s Weekend Brief: Prince Harry faces defamation suit from his own charity; Kylie signals Bieber allegiance at Coachella; Browns eye versatile RB; NYC checks the skies' (WP post 1035, model: OpenAI gpt-5)
INFO 04/11/2026 03:40:57 PM drupal.py ln 115 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:40:57 PM drupal.py ln 117 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:40:57 PM drupal.py ln 120 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/11/2026 03:40:57 PM drupal.py ln 139 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'Kl4Q0A1H1WN0G5bTdx6cDH6toclKvolCe3Y7hXEHIT8', 'logout_token': 'yoQURbYedg_ea0f80dj6DIwExMuG04qqsiyTGnTNlpw'}
INFO 04/11/2026 03:40:58 PM drupal.py ln 170 Node modified successfully. ({character.name})
INFO 04/11/2026 03:40:58 PM drupal.py ln 244 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/11/2026 03:40:58 PM drupal.py ln 246 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 03:40:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 03:40:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 04:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:06:04 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/11/2026 04:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 04:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 04:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 04:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 04/11/2026 04:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 04:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 04:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 04:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 04:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 04:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 04:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 04/11/2026 04:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 04:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 04:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 04:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 04:06:11 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 04:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 04:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 04:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 04:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 04:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 04:06:11 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 05:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 05:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 05:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 05:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 05:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/11/2026 05:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 05:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:07:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 05:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 05:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 05:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 05:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 05:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:07:09 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 05:07:09 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 05:07:09 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 05:07:10 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 05:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 05:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 05:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 05:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 05:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/11/2026 05:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 05:59:55 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/11/2026 06:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 06:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 06:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 06:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 06:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 06:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/11/2026 06:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 06:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 06:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:07:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 06:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 06:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 06:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 06:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 06:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 06:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 06:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 06:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 06:07:10 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 06:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 06:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 06:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 06:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 06:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 06:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:03:13 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 07:03:15 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 07:03:15 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/11/2026 07:03:15 PM user.py ln 62 Login response status code: 200
INFO 04/11/2026 07:03:15 PM user.py ln 63 Login response headers: {'Date': 'Sat, 11 Apr 2026 19:03:15 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/11/2026 07:03:15 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/11/2026 07:03:15 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkzNDE5NSwibmJmIjoxNzc1OTM0MTk1LCJleHAiOjE3NzY1Mzg5OTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.K7JGd-0mFayweU82viuLwjO0OeevzjPuS-dx4lctZsA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/11/2026 07:03:15 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkzNDE5NSwibmJmIjoxNzc1OTM0MTk1LCJleHAiOjE3NzY1Mzg5OTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.K7JGd-0mFayweU82viuLwjO0OeevzjPuS-dx4lctZsA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/11/2026 07:03:15 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/11/2026 07:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 07:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 07:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 07:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 07:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 07:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/11/2026 07:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 07:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 07:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 07:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 07:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 07:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 07:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:06:09 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 07:06:09 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 07:06:09 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 07:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 07:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 07:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 07:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 07:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 07:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 07:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 07:13:26 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 07:13:27 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 07:13:27 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/11/2026 07:13:27 PM user.py ln 62 Login response status code: 200
INFO 04/11/2026 07:13:27 PM user.py ln 63 Login response headers: {'Date': 'Sat, 11 Apr 2026 19:13:27 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/11/2026 07:13:27 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/11/2026 07:13:27 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkzNDgwNywibmJmIjoxNzc1OTM0ODA3LCJleHAiOjE3NzY1Mzk2MDcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.TyzQj0oa9EHy5BarYJlrozhikhq2cQ_HLCj15j6KIds","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/11/2026 07:13:27 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTkzNDgwNywibmJmIjoxNzc1OTM0ODA3LCJleHAiOjE3NzY1Mzk2MDcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.TyzQj0oa9EHy5BarYJlrozhikhq2cQ_HLCj15j6KIds', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/11/2026 07:13:27 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/11/2026 08:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 08:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:04 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/11/2026 08:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 08:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 08:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 08:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/11/2026 08:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 08:06:08 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:08 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 08:06:08 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:08 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/11/2026 08:06:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 08:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 08:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 08:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/11/2026 08:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 08:06:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 08:06:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 08:06:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 08:06:13 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/11/2026 08:06:13 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 08:06:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 08:06:13 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 08:06:13 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 08:06:13 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/11/2026 08:06:13 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 08:43:43 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 09:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 09:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:07:04 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/11/2026 09:07:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 09:07:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:07:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 09:07:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 09:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/11/2026 09:07:04 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 09:07:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:07:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 09:07:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:07:08 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/11/2026 09:07:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 09:07:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:07:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 09:07:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 09:07:08 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/11/2026 09:07:08 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 09:07:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 09:07:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 09:07:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 09:07:12 PM create_articles.py ln 93 JWT token obtained (0.65s)
INFO 04/11/2026 09:07:12 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 09:07:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 09:07:12 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 09:07:13 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 09:07:13 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/11/2026 09:07:13 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 09:51:43 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 10:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 10:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:04 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/11/2026 10:07:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 10:07:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 10:07:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 10:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/11/2026 10:07:04 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 10:07:08 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:08 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 10:07:08 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:08 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/11/2026 10:07:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 10:07:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 10:07:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 10:07:08 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/11/2026 10:07:08 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 10:07:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 10:07:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 10:07:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 10:07:12 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/11/2026 10:07:12 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 10:07:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 10:07:12 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 10:07:13 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 10:07:13 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/11/2026 10:07:13 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:03:13 PM drupal.py ln 528 Fetched 3 shared widgets across 1 pages
INFO 04/11/2026 11:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/11/2026 11:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/11/2026 11:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/11/2026 11:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/11/2026 11:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/11/2026 11:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/11/2026 11:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/11/2026 11:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:06:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/11/2026 11:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/11/2026 11:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/11/2026 11:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 11:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/11/2026 11:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/11/2026 11:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/11/2026 11:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/11/2026 11:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/11/2026 11:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/11/2026 11:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/11/2026 11:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/11/2026 11:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/11/2026 11:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/11/2026 11:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/11/2026 11:10:51 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 11:10:52 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/11/2026 11:10:52 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/11/2026 11:10:53 PM user.py ln 62 Login response status code: 200
INFO 04/11/2026 11:10:53 PM user.py ln 63 Login response headers: {'Date': 'Sat, 11 Apr 2026 23:10:52 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/11/2026 11:10:53 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/11/2026 11:10:53 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTk0OTA1MywibmJmIjoxNzc1OTQ5MDUzLCJleHAiOjE3NzY1NTM4NTMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.OJNyQOrMQisPoF8yIUS0qY6QTIoUpExYAHzTxNHNJ5g","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/11/2026 11:10:53 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NTk0OTA1MywibmJmIjoxNzc1OTQ5MDUzLCJleHAiOjE3NzY1NTM4NTMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.OJNyQOrMQisPoF8yIUS0qY6QTIoUpExYAHzTxNHNJ5g', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/11/2026 11:10:53 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/12/2026 12:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:06:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 12:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:06:04 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/12/2026 12:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 12:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 12:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 12:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/12/2026 12:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 12:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 12:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 12:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 12:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 12:06:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 12:06:08 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 12:06:08 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 12:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 12:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:06:11 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 12:06:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 12:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:06:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 12:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 12:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 12:06:11 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 01:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 01:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 01:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 01:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 01:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/12/2026 01:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 01:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 01:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 01:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 01:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 01:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 01:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 01:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:10 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/12/2026 01:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 01:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 01:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 01:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 01:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 02:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 02:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 02:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 02:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 02:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/12/2026 02:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 02:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:07:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 02:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 02:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 02:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 02:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 02:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 02:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 02:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 02:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 02:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 02:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 02:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 03:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 03:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 03:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 03:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 03:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 03:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 03:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:06:07 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 04/12/2026 03:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 03:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 03:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 03:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 03:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 03:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 03:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 03:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 03:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 03:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 03:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 04:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 04:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 04:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 04:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 04:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 04:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 04:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:07 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/12/2026 04:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 04:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 04:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 04:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/12/2026 04:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 04:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 04:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 04:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 04:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 04:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 04:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 05:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 05:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 05:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 05:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 05:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 04/12/2026 05:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 05:07:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:07 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 05:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 05:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 05:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 05:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 05:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 05:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:10 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/12/2026 05:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 05:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 05:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 05:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 05:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 06:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 06:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 06:06:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/12/2026 06:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 06:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 06:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 06:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 06:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 06:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 06:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 06:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 06:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 06:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 06:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 06:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 06:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 06:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 06:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 06:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 06:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 06:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 06:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 06:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 06:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 06:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 06:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 06:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 06:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 06:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/12/2026 06:06:10 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/12/2026 06:06:10 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/12/2026 06:06:11 AM cron_common.py ln 414 Character articles: 80
INFO 04/12/2026 06:06:11 AM create_articles.py ln 126 Character articles loaded (0.43s)
INFO 04/12/2026 06:06:11 AM create_articles.py ln 128 Setup complete (0.95s total)
INFO 04/12/2026 06:06:11 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/12/2026 06:06:11 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260412_060611_news_Hawk.log
INFO 04/12/2026 06:06:11 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/12/2026 06:06:11 AM article_creation_service.py ln 788 WordPress authentication successful (0.31s)
INFO 04/12/2026 06:06:11 AM article_creation_service.py ln 788 Fetched WP users (0.05s)
INFO 04/12/2026 06:06:12 AM article_creation_service.py ln 788 Loaded 80 articles for character (0.43s)
INFO 04/12/2026 06:06:12 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.15s)
INFO 04/12/2026 06:06:12 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/12/2026 06:06:12 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/12/2026 06:06:12 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/12/2026 06:06:13 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/12/2026 06:06:13 AM chat.py ln 159 Found 5 results
INFO 04/12/2026 06:06:13 AM article_creation_service.py ln 788 Found 5 search results (1.22s)
INFO 04/12/2026 06:06:13 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260412_060611_news_Hawk_search.md
INFO 04/12/2026 06:06:13 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/12/2026 06:07:51 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/12/2026 06:07:51 AM article_creation_service.py ln 788 Generated article - Hawk’s Weekend Brief: U.S.–Iran talks under strain, Artemis II’s ‘super splash,’ NYC machete attack, India’s agri vow, and Jerusalem’s Holy Fire (97.98s)
INFO 04/12/2026 06:07:51 AM article_creation_service.py ln 788 Created WP post 1036 (0.10s)
INFO 04/12/2026 06:07:53 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/12/2026 06:07:53 AM wp.py ln 802 Prompt: Prompt for Featured Image Generation:
Create a dynamic news collage reflecting the major global events from the article. The image should include:
- A symbolic handshake or tense negotiation table to represent U.S.–Iran peace talks, with subtle Middle Eastern architecture in the background.
- A NASA astronaut capsule making a dramatic splashdown in the ocean, referencing Artemis II’s "super splash."
- An ambulance and police tape near New York’s Grand Central Terminal, hinting at the machete attack incident.
- Lush green Indian farmland with young farmers working and military insignia subtly present, representing India’s commitment to agriculture despite defense priorities.
- A glowing Holy Fire ceremony in Jerusalem’s ancient church, evoking spirituality amid tension.
Blend the elements in a visually balanced, contemporary news magazine style, with vibrant yet serious color tones.
INFO 04/12/2026 06:08:19 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/12/2026 06:08:19 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/12/2026 06:08:19 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-12.jpeg
INFO 04/12/2026 06:08:19 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-12.jpeg
INFO 04/12/2026 06:08:19 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1OTczOTcxLCJuYmYiOjE3NzU5NzM5NzEsImV4cCI6MTc3NjU3ODc3MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.F9XwpuBEUxtxa1ZIbzAGcdAoLau9eG5cR47a6zKCgcI
INFO 04/12/2026 06:08:20 AM image.py ln 197 filename is 2026-04-12.webp
INFO 04/12/2026 06:08:20 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-12.webp'>}
INFO 04/12/2026 06:08:20 AM article_creation_service.py ln 788 Featured image posted (29.41s)
INFO 04/12/2026 06:08:20 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 577.25 KB
INFO 04/12/2026 06:08:24 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/12/2026 06:08:24 AM wp.py ln 873 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create an image that represents global unity and hope amidst challenges. The scene should depict a diverse group of people from various cultures engaged in dialogue and collaboration, emphasizing themes of peace and resilience. In the background, soft, warm colors should suggest a sunrise, symbolizing new beginnings. Include elements like flags from different countries subtly waving in the breeze, and a serene landscape featuring fields of crops and water bodies, reflecting the interconnectedness of agriculture and diplomacy. The overall mood should evoke a sense of optimism and cooperation, with a gentle yet inspiring atmosphere that complements the themes of the original featured image.
INFO 04/12/2026 06:08:44 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/12/2026 06:08:45 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/12/2026 06:08:45 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-12-1.jpeg
INFO 04/12/2026 06:08:45 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-12-1.jpeg
INFO 04/12/2026 06:08:45 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc1OTczOTcxLCJuYmYiOjE3NzU5NzM5NzEsImV4cCI6MTc3NjU3ODc3MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.F9XwpuBEUxtxa1ZIbzAGcdAoLau9eG5cR47a6zKCgcI
INFO 04/12/2026 06:08:45 AM image.py ln 197 filename is 2026-04-12-1.webp
INFO 04/12/2026 06:08:45 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-12-1.webp'>}
INFO 04/12/2026 06:08:45 AM article_creation_service.py ln 788 Secondary image uploaded (24.75s)
INFO 04/12/2026 06:08:45 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/12/2026 06:08:45 AM wp.py ln 933 Post content updated successfully for post 1036
INFO 04/12/2026 06:08:45 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/12/2026 06:08:48 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/12/2026 06:08:56 AM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information from its source material. Each major claim can be verified against the provided sources:
**Verified claims:**
- U.S.–Iran peace talks described as "high stakes" with VP JD Vance present and concerns about the ceasefire fraying (Source 1, 5)
- Israeli strikes in Lebanon testing the ceasefire framework (Source 5)
- Manhattan machete attack near Grand Central Terminal with three victims, suspect shot by police (Source 2, 4, 5)
- Artemis II crew's nine-day mission ending in splashdown, with astronaut reflections (Source 1,
INFO 04/12/2026 06:08:56 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/12/2026 06:08:56 AM article_creation_service.py ln 788 Fact-check comment posted (10.47s)
INFO 04/12/2026 06:08:56 AM article_creation_service.py ln 788 Article creation completed successfully (total: 164.96s)
INFO 04/12/2026 06:08:56 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/12/2026 06:08:56 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/12/2026 06:08:56 AM create_articles.py ln 204 Script completed (165.91s total)
INFO 04/12/2026 07:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 07:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 07:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 07:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 07:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 07:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 07:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 07:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/12/2026 07:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 07:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 07:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 07:07:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 07:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 07:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 07:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 07:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 07:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 07:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 07:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 07:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 07:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 07:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 07:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 07:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 07:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 07:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 07:07:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 07:07:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 07:07:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/12/2026 07:07:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/12/2026 07:07:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/12/2026 07:07:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/12/2026 08:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 08:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:03 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 08:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 08:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 08:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 08:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/12/2026 08:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 08:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 08:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 08:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 08:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 08:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 08:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 08:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 08:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 08:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:10 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 08:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 08:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 08:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 08:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 08:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 08:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 08:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/12/2026 08:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/12/2026 08:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/12/2026 08:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/12/2026 09:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 09:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 09:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 09:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 09:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 09:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/12/2026 09:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 09:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 09:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:07:07 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 09:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 09:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 09:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 09:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 09:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 09:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 09:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 09:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 09:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 09:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 09:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 09:07:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 09:07:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 09:07:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/12/2026 09:07:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/12/2026 09:07:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/12/2026 09:07:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/12/2026 10:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 10:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/12/2026 10:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 10:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 10:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 10:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 10:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 10:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 10:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:07 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/12/2026 10:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 10:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 10:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 10:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 10:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 10:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 10:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:10 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/12/2026 10:06:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 10:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 10:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 10:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 10:06:11 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 10:06:11 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 10:06:11 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/12/2026 10:06:11 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/12/2026 10:06:11 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/12/2026 10:06:11 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/12/2026 11:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 11:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 11:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 11:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 11:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 11:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/12/2026 11:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 11:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 11:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 11:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 11:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 11:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 11:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 11:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 11:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 11:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 11:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 11:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 11:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 11:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 11:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/12/2026 11:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/12/2026 11:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/12/2026 11:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/12/2026 11:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/12/2026 11:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/12/2026 12:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 12:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 12:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 12:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 12:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 12:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/12/2026 12:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 12:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 12:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:07:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 12:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 12:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 12:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 12:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 12:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 12:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 12:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 12:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 12:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 12:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 12:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 12:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 12:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 12:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 12:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 01:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 01:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 01:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 01:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 01:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/12/2026 01:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 01:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:07 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/12/2026 01:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 01:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 01:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 01:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 01:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 01:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 01:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 01:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 01:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 01:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 01:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 01:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 01:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 01:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 01:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 02:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:06:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/12/2026 02:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 02:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 02:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 02:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/12/2026 02:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 02:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:06:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 02:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 02:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 02:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 02:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 02:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 02:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 02:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 02:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 02:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 02:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 02:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 02:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 02:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 02:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 02:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 03:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 03:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 03:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 03:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 03:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/12/2026 03:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 03:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:07:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 03:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 03:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 03:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 03:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 03:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 03:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 03:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 03:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 03:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 03:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 03:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 03:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 03:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 03:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 03:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 04:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 04:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 04:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 04:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 04:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 04:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 04:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 04:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 04:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 04:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 04:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 04:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 04:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 04:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 04:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 04:06:10 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 04:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 04:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 04:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 04:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 04:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 04:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:04 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 05:07:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:05 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/12/2026 05:07:05 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 05:07:05 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:05 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 05:07:05 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 05:07:05 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/12/2026 05:07:05 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:08 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:08 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 05:07:08 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:09 PM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 04/12/2026 05:07:09 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 05:07:09 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:09 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 05:07:09 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 05:07:09 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/12/2026 05:07:09 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 05:07:13 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 05:07:13 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 05:07:13 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 05:07:13 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/12/2026 05:07:14 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 05:07:14 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 05:07:14 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 05:07:14 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 05:07:14 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/12/2026 05:07:14 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 06:21:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:21:10 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 06:21:10 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 06:21:10 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 04/12/2026 06:21:10 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/12/2026 06:21:14 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:21:14 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 06:21:14 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 06:21:14 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 04/12/2026 06:21:14 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/12/2026 06:21:17 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 06:21:17 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 06:21:17 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 06:21:17 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.02s)
ERROR 04/12/2026 06:21:17 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/12/2026 07:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 07:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 07:07:03 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/12/2026 07:07:03 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/12/2026 07:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 07:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 07:07:06 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/12/2026 07:07:06 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/12/2026 07:07:09 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 07:07:09 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 07:07:09 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/12/2026 07:07:09 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 04/12/2026 07:07:09 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/12/2026 07:58:38 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/12/2026 07:58:38 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/12/2026 07:58:38 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/12/2026 07:58:39 PM user.py ln 62 Login response status code: 200
INFO 04/12/2026 07:58:39 PM user.py ln 63 Login response headers: {'Date': 'Sun, 12 Apr 2026 19:58:38 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/12/2026 07:58:39 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/12/2026 07:58:39 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjAyMzkxOSwibmJmIjoxNzc2MDIzOTE5LCJleHAiOjE3NzY2Mjg3MTksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EaqafpXa4UZ6UvLqEBjCckGyZvmhySZc76lIDD2YiLA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/12/2026 07:58:39 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjAyMzkxOSwibmJmIjoxNzc2MDIzOTE5LCJleHAiOjE3NzY2Mjg3MTksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EaqafpXa4UZ6UvLqEBjCckGyZvmhySZc76lIDD2YiLA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/12/2026 07:58:39 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/12/2026 07:58:41 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/12/2026 07:58:41 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/12/2026 07:58:41 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/12/2026 07:58:42 PM user.py ln 62 Login response status code: 200
INFO 04/12/2026 07:58:42 PM user.py ln 63 Login response headers: {'Date': 'Sun, 12 Apr 2026 19:58:41 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/12/2026 07:58:42 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/12/2026 07:58:42 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjAyMzkyMiwibmJmIjoxNzc2MDIzOTIyLCJleHAiOjE3NzY2Mjg3MjIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.2zcXd8EZFPcZEzAuXZ-Mq2xqav3Eodppoak3-6Qcolc","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/12/2026 07:58:42 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjAyMzkyMiwibmJmIjoxNzc2MDIzOTIyLCJleHAiOjE3NzY2Mjg3MjIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.2zcXd8EZFPcZEzAuXZ-Mq2xqav3Eodppoak3-6Qcolc', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/12/2026 07:58:42 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/12/2026 08:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 08:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/12/2026 08:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 08:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 08:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 08:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/12/2026 08:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 08:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 08:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:07 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/12/2026 08:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 08:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 08:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 08:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 08:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 08:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 08:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 08:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 08:06:11 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/12/2026 08:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 08:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 08:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 08:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 08:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 08:06:11 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 09:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 09:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:06:03 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/12/2026 09:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 09:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 09:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 09:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/12/2026 09:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 09:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 09:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 09:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 09:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 09:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 09:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 09:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 09:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 09:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 09:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 09:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 09:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 09:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 09:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 09:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 09:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 09:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 10:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 10:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/12/2026 10:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 10:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 10:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 10:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/12/2026 10:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 10:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 10:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 10:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 10:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 10:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 10:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/12/2026 10:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 10:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 10:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 10:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 10:06:10 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/12/2026 10:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 10:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 10:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 10:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 10:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/12/2026 10:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 11:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/12/2026 11:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/12/2026 11:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/12/2026 11:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/12/2026 11:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/12/2026 11:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/12/2026 11:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 11:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/12/2026 11:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/12/2026 11:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/12/2026 11:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/12/2026 11:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 11:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 04/12/2026 11:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/12/2026 11:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/12/2026 11:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/12/2026 11:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/12/2026 11:06:11 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/12/2026 11:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/12/2026 11:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/12/2026 11:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/12/2026 11:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/12/2026 11:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/12/2026 11:06:11 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 12:07:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:07:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 12:07:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:07:05 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/13/2026 12:07:05 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 12:07:05 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:07:05 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 12:07:05 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 12:07:05 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/13/2026 12:07:05 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 12:07:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:07:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 12:07:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:07:09 AM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 04/13/2026 12:07:09 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 12:07:09 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:07:09 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 12:07:09 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 12:07:09 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 12:07:09 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 12:07:13 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:07:13 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 12:07:13 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:07:13 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/13/2026 12:07:13 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 12:07:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:07:13 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 12:07:13 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 12:07:13 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/13/2026 12:07:13 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 01:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 01:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 01:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 01:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 01:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 01:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 01:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 01:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 01:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 01:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 01:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 01:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 01:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 01:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 01:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 01:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 01:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 01:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 01:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 01:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 01:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 02:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 02:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 02:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 02:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 02:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 02:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 02:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 02:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 02:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:06:07 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 02:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 02:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 02:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 02:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 02:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 02:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 02:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:06:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 02:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 02:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 02:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 02:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 02:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 03:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 03:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:04 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/13/2026 03:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 03:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 03:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 03:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/13/2026 03:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 03:06:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 03:06:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:08 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/13/2026 03:06:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 03:06:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 03:06:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 03:06:08 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 03:06:08 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 03:06:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 03:06:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:13 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/13/2026 03:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 03:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:13 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 03:06:13 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 03:06:13 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/13/2026 03:06:13 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 04:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 04:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:07:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/13/2026 04:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 04:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 04:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 04:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 04:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 04:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 04:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:07:07 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 04:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 04:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 04:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 04:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 04:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 04:07:09 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:07:09 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 04:07:09 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 04:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 04:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 04:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 04:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 04:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 05:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 05:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 05:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 05:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 05:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 05:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/13/2026 05:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 05:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 05:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:07:07 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 05:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 05:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 05:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 05:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 05:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 05:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 05:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:07:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 05:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 05:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 05:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 05:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 05:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 06:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 06:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:06:04 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/13/2026 06:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 06:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 06:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 06:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 06:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 06:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 06:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:06:07 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/13/2026 06:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 06:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 06:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 06:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 06:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 06:06:11 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:06:11 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 06:06:11 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:06:11 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/13/2026 06:06:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 06:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:06:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 06:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 06:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 06:06:11 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 06:06:11 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 06:06:11 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/13/2026 06:06:11 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/13/2026 06:06:11 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/13/2026 06:06:12 AM cron_common.py ln 414 Character articles: 81
INFO 04/13/2026 06:06:12 AM create_articles.py ln 126 Character articles loaded (0.50s)
INFO 04/13/2026 06:06:12 AM create_articles.py ln 128 Setup complete (1.08s total)
INFO 04/13/2026 06:06:12 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/13/2026 06:06:12 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260413_060612_news_Hawk.log
INFO 04/13/2026 06:06:12 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/13/2026 06:06:12 AM article_creation_service.py ln 788 WordPress authentication successful (0.35s)
INFO 04/13/2026 06:06:12 AM article_creation_service.py ln 788 Fetched WP users (0.07s)
INFO 04/13/2026 06:06:13 AM article_creation_service.py ln 788 Loaded 81 articles for character (0.48s)
INFO 04/13/2026 06:06:13 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.18s)
INFO 04/13/2026 06:06:13 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/13/2026 06:06:13 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/13/2026 06:06:13 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/13/2026 06:06:14 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/13/2026 06:06:14 AM chat.py ln 159 Found 5 results
INFO 04/13/2026 06:06:14 AM article_creation_service.py ln 788 Found 5 search results (1.08s)
INFO 04/13/2026 06:06:14 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260413_060612_news_Hawk_search.md
INFO 04/13/2026 06:06:14 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/13/2026 06:07:19 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 06:07:19 AM article_creation_service.py ln 788 Generated article - Hawk’s Monday Brief: Iran talks collapse, U.S. port blockade looms, oil jumps; NATO allies brace; Africa feels Hormuz pinch; Hungary votes (65.43s)
INFO 04/13/2026 06:07:19 AM article_creation_service.py ln 788 Created WP post 1041 (0.12s)
INFO 04/13/2026 06:07:23 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 06:07:23 AM wp.py ln 802 Prompt: Prompt for featured image generation:
"Create a dynamic, news-style composite image capturing the high-stakes geopolitical tensions of the week: show oil tankers navigating stormy waters near the Strait of Hormuz with a U.S. naval vessel patrolling nearby, symbolizing the looming American blockade of Iranian ports. In the foreground, visualize a rising graph or stock ticker indicating jumping oil prices. In the background, add faded silhouettes of worried European leaders, NATO and EU symbols, and a ballot box representing the Hungarian election, with faint outlines of Africa to evoke the continent’s economic strain. Use a dramatic, urgent tone with a muted, slightly darkened color palette to convey volatility and global consequence."
INFO 04/13/2026 06:07:46 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/13/2026 06:07:46 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/13/2026 06:07:46 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13.jpeg
INFO 04/13/2026 06:07:46 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-13.jpeg
INFO 04/13/2026 06:07:46 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MDYwMzcyLCJuYmYiOjE3NzYwNjAzNzIsImV4cCI6MTc3NjY2NTE3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.tXPWTFufX7rvrNNGu6DHGksnK4wu4IGXAxp7UgooXD8
INFO 04/13/2026 06:07:47 AM image.py ln 197 filename is 2026-04-13.webp
INFO 04/13/2026 06:07:47 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13.webp'>}
INFO 04/13/2026 06:07:47 AM article_creation_service.py ln 788 Featured image posted (28.14s)
INFO 04/13/2026 06:07:47 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 445.02 KB
INFO 04/13/2026 06:07:53 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 06:07:53 AM wp.py ln 873 Secondary Image Prompt: **Prompt for a Complementary Image:**
Create an image that captures the rising tension in global affairs while maintaining visual harmony with the featured image. The new image should depict a dramatic seascape at sunset, symbolizing the uncertainty ahead. Include silhouettes of naval ships in a tense formation, hinting at military readiness, against the backdrop of dark storm clouds.
Incorporate elements reflecting economic distress such as an oil rig in the distance and wild ocean waves suggesting turbulence in the market. Emphasize the theme of international collaboration or conflict by showing flags of NATO countries fluttering in the wind, but keep them in the background. The color palette should mirror the dark and moody tones of the featured image, utilizing deep blues, grays, and hints of orange from the sunset to evoke a sense of urgency and gravity. The overall mood should be ominous yet thought-provoking, resonating with the complexities outlined in the article.
INFO 04/13/2026 06:08:15 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/13/2026 06:08:15 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/13/2026 06:08:15 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-1.jpeg
INFO 04/13/2026 06:08:15 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-13-1.jpeg
INFO 04/13/2026 06:08:15 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MDYwMzcyLCJuYmYiOjE3NzYwNjAzNzIsImV4cCI6MTc3NjY2NTE3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.tXPWTFufX7rvrNNGu6DHGksnK4wu4IGXAxp7UgooXD8
INFO 04/13/2026 06:08:15 AM image.py ln 197 filename is 2026-04-13-1.webp
INFO 04/13/2026 06:08:15 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-1.webp'>}
INFO 04/13/2026 06:08:16 AM article_creation_service.py ln 788 Secondary image uploaded (28.78s)
INFO 04/13/2026 06:08:16 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/13/2026 06:08:16 AM wp.py ln 933 Post content updated successfully for post 1041
INFO 04/13/2026 06:08:16 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/13/2026 06:08:25 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/13/2026 06:08:34 AM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information found in the provided sources. Multiple reputable news outlets (NBC, ABC, BBC, Reuters, CNN, France24, Al Jazeera, DW) confirm the key claims:
**Verified claims:**
- U.S.-Iran ceasefire talks ended without agreement (Sources 1, 2)
- U.S. military announced a blockade of Iranian ports beginning Monday (Source 3)
- Trump reacted to the failed talks and warned oil prices could rise (Sources 1, 3)
- Pope Leo issued a peace plea amid the conflict (Source 1)
- Oil prices increased following the blockade announcement (Source
INFO 04/13/2026 06:08:34 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/13/2026 06:08:34 AM article_creation_service.py ln 788 Fact-check comment posted (17.21s)
INFO 04/13/2026 06:08:34 AM article_creation_service.py ln 788 Article creation completed successfully (total: 142.02s)
INFO 04/13/2026 06:08:34 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/13/2026 06:08:34 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/13/2026 06:08:34 AM create_articles.py ln 204 Script completed (143.11s total)
INFO 04/13/2026 06:14:35 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/13/2026 06:14:38 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/13/2026 06:14:38 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/13/2026 06:14:39 AM user.py ln 62 Login response status code: 200
INFO 04/13/2026 06:14:39 AM user.py ln 63 Login response headers: {'Date': 'Mon, 13 Apr 2026 06:14:38 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/13/2026 06:14:39 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/13/2026 06:14:39 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjA2MDg3OSwibmJmIjoxNzc2MDYwODc5LCJleHAiOjE3NzY2NjU2NzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EtbyKq0MDjMd--cp8Zsfb2WrVzQxaGbp38-nzLqt7sA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/13/2026 06:14:39 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjA2MDg3OSwibmJmIjoxNzc2MDYwODc5LCJleHAiOjE3NzY2NjU2NzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EtbyKq0MDjMd--cp8Zsfb2WrVzQxaGbp38-nzLqt7sA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/13/2026 06:14:39 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/13/2026 06:14:39 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/13/2026 06:14:39 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/13/2026 06:14:39 AM user.py ln 62 Login response status code: 200
INFO 04/13/2026 06:14:39 AM user.py ln 63 Login response headers: {'Date': 'Mon, 13 Apr 2026 06:14:39 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/13/2026 06:14:39 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/13/2026 06:14:39 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjA2MDg3OSwibmJmIjoxNzc2MDYwODc5LCJleHAiOjE3NzY2NjU2NzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EtbyKq0MDjMd--cp8Zsfb2WrVzQxaGbp38-nzLqt7sA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/13/2026 06:14:39 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjA2MDg3OSwibmJmIjoxNzc2MDYwODc5LCJleHAiOjE3NzY2NjU2NzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EtbyKq0MDjMd--cp8Zsfb2WrVzQxaGbp38-nzLqt7sA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/13/2026 06:14:39 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/13/2026 07:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 07:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:06:03 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/13/2026 07:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 07:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 07:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 07:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/13/2026 07:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 07:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 07:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 07:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 07:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 07:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 07:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 07:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 07:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 07:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 07:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 07:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 07:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 07:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 07:06:11 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 07:06:11 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 07:06:11 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/13/2026 07:06:11 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 07:06:11 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 07:06:11 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 08:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 08:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 08:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 08:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 08:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 08:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 08:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 08:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 08:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:06:07 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 08:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 08:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 08:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 08:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 08:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 08:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 08:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:06:10 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 08:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 08:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 08:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 08:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 08:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 08:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 08:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/13/2026 08:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 08:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 08:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 09:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 09:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 09:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 09:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 09:07:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 09:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/13/2026 09:07:03 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 09:07:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:07:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 09:07:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:07:07 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 09:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 09:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 09:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 09:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 09:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 09:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 09:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 09:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 09:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 09:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 09:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 09:07:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 09:07:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 09:07:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/13/2026 09:07:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 09:07:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/13/2026 09:07:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 10:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 10:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:04 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/13/2026 10:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 10:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 10:06:05 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 10:06:05 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/13/2026 10:06:05 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:06:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:06:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:09 AM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/13/2026 10:06:09 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 10:06:09 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:09 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 10:06:09 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 10:06:09 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 10:06:09 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:06:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 10:06:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:13 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 10:06:13 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 10:06:13 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:13 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 10:06:13 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 10:06:13 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/13/2026 10:06:13 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 10:06:13 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 10:06:13 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/13/2026 10:06:13 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 10:06:13 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/13/2026 10:06:13 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 11:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 11:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:06:04 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/13/2026 11:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 11:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 11:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 11:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 11:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 11:06:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:06:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 11:06:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:06:08 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 11:06:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 11:06:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:06:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 11:06:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 11:06:08 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 11:06:08 AM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 11:06:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:06:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 11:06:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:06:12 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/13/2026 11:06:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 11:06:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:06:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 11:06:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 11:06:12 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/13/2026 11:06:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/13/2026 11:06:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 11:06:12 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/13/2026 11:06:12 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 11:06:12 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 11:06:12 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 12:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 12:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:06:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/13/2026 12:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 12:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 12:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 12:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 12:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 12:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 12:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:06:07 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 12:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 12:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 12:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 12:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/13/2026 12:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 12:06:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 12:06:11 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 12:06:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 12:06:11 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 12:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 12:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 12:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 12:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 12:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/13/2026 12:06:11 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 12:06:11 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 12:06:11 PM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/13/2026 12:06:11 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/13/2026 12:06:11 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/13/2026 12:06:12 PM cron_common.py ln 414 Character articles: 35
INFO 04/13/2026 12:06:12 PM create_articles.py ln 126 Character articles loaded (0.22s)
INFO 04/13/2026 12:06:12 PM create_articles.py ln 128 Setup complete (0.80s total)
INFO 04/13/2026 12:06:12 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260413_120612_news_Dusty.log
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Article creation started for character: Dusty
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 WordPress authentication successful (0.37s)
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Fetched WP users (0.06s)
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Loaded 35 articles for character (0.23s)
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.16s)
INFO 04/13/2026 12:06:12 PM article_creation_service.py ln 788 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/13/2026 12:06:12 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com']
INFO 04/13/2026 12:06:12 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/13/2026 12:06:14 PM chat.py ln 154 Tavily search for 'Latest US extreme weather' completed
INFO 04/13/2026 12:06:14 PM chat.py ln 159 Found 5 results
INFO 04/13/2026 12:06:14 PM article_creation_service.py ln 788 Found 5 search results (1.59s)
INFO 04/13/2026 12:06:14 PM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260413_120612_news_Dusty_search.md
INFO 04/13/2026 12:06:14 PM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/13/2026 12:06:39 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 12:06:39 PM article_creation_service.py ln 788 Generated article - A Spring of Climate Extremes: Record U.S. Heat, Global Flood Disasters, and the Growing Human Cost (24.79s)
INFO 04/13/2026 12:06:39 PM article_creation_service.py ln 788 Created WP post 1046 (0.10s)
INFO 04/13/2026 12:06:41 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 12:06:41 PM wp.py ln 802 Prompt: Prompt for generating a featured image:
Create a striking, panoramic split-image that visually contrasts two scenes: On one side, depict a sun-scorched American landscape with parched earth, wilted crops, and shimmering heatwaves—symbolizing intense record-breaking heat. On the opposite side, illustrate a flooded Afghan village with muddy waters engulfing homes, distressed survivors, and distant mountains under stormy skies. In the center, subtly incorporate a globe or atmospheric pattern to emphasize global climate change connecting both crises. Convey urgency, human impact, and the extremes of recent weather disasters.
INFO 04/13/2026 12:07:05 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/13/2026 12:07:06 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/13/2026 12:07:06 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-2.jpeg
INFO 04/13/2026 12:07:06 PM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-13-2.jpeg
INFO 04/13/2026 12:07:06 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MDgxOTcyLCJuYmYiOjE3NzYwODE5NzIsImV4cCI6MTc3NjY4Njc3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.M9oqrC66P3vwNF9fv0qk72SCrezjYfOzPVguhXUYBo4
INFO 04/13/2026 12:07:06 PM image.py ln 197 filename is 2026-04-13-2.webp
INFO 04/13/2026 12:07:06 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-2.webp'>}
INFO 04/13/2026 12:07:07 PM article_creation_service.py ln 788 Featured image posted (28.02s)
INFO 04/13/2026 12:07:07 PM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 523.05 KB
INFO 04/13/2026 12:07:14 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/13/2026 12:07:14 PM wp.py ln 873 Secondary Image Prompt: **Secondary Image Prompt:**
Create a powerful visual that explores the theme of climate extremes with a focus on resilience and hope in the face of disaster. The scene should depict a rural community facing both drought and flooding, but from a different perspective than the featured image.
In the foreground, show a group of diverse community members, including men, women, and children, working together to build a sustainable structure or irrigation system. They should be surrounded by a landscape that blends the effects of their environment—dry, cracked earth on one side transitioning to areas with newly planted crops flourishing due to recent rains.
In the background, include both a bright, hopeful sky with a rainbow forming and dark clouds dissipating, symbolizing the transition from despair to hope. The color palette should encompass warmer yellows and greens alongside cooler blues and greys to create a sense of harmony with the original image while emphasizing resilience. Include elements like tools, plants, and community members supporting each other to reinforce a narrative of unity and proactive adaptation to climate change.
INFO 04/13/2026 12:07:38 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/13/2026 12:07:38 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/13/2026 12:07:38 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-3.jpeg
INFO 04/13/2026 12:07:38 PM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-13-3.jpeg
INFO 04/13/2026 12:07:38 PM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MDgxOTcyLCJuYmYiOjE3NzYwODE5NzIsImV4cCI6MTc3NjY4Njc3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.M9oqrC66P3vwNF9fv0qk72SCrezjYfOzPVguhXUYBo4
INFO 04/13/2026 12:07:38 PM image.py ln 197 filename is 2026-04-13-3.webp
INFO 04/13/2026 12:07:38 PM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-13-3.webp'>}
INFO 04/13/2026 12:07:39 PM article_creation_service.py ln 788 Secondary image uploaded (32.17s)
INFO 04/13/2026 12:07:39 PM wp.py ln 904 Inserted image after second paragraph
INFO 04/13/2026 12:07:39 PM wp.py ln 933 Post content updated successfully for post 1046
INFO 04/13/2026 12:07:39 PM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/13/2026 12:07:41 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/13/2026 12:07:50 PM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information from its source material. The key claims are well-supported:
**U.S. Record Heat (Source 1):** The article correctly states that March 2026 was "the most abnormally hot month ever recorded across the continental United States" with "132 years of climate recordkeeping" and notes that "six of the ten most abnormally hot months" occurred in the last decade. The source confirms March's persistent heat was so intense it registered as "the most abnormally hot month in 132 years of records" and that "six of the nation's top 10
INFO 04/13/2026 12:07:50 PM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/13/2026 12:07:50 PM article_creation_service.py ln 788 Fact-check comment posted (11.19s)
INFO 04/13/2026 12:07:50 PM article_creation_service.py ln 788 Article creation completed successfully (total: 98.81s)
INFO 04/13/2026 12:07:50 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/13/2026 12:07:50 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/13/2026 12:07:50 PM create_articles.py ln 204 Script completed (99.61s total)
INFO 04/13/2026 01:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 01:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:04 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/13/2026 01:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 01:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 01:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 01:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 01:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 01:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 01:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:08 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/13/2026 01:06:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 01:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 01:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 01:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 01:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 01:06:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 01:06:11 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 01:06:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 01:06:11 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 01:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 01:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 01:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 01:06:12 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 01:06:12 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 01:06:12 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 01:06:12 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 01:06:12 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/13/2026 01:06:12 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 01:06:12 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 01:06:12 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 02:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 02:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:07:04 PM create_articles.py ln 93 JWT token obtained (0.78s)
INFO 04/13/2026 02:07:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 02:07:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:07:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 02:07:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 02:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/13/2026 02:07:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 02:07:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:07:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 02:07:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:07:07 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 02:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 02:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 02:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 02:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 02:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 02:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 02:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 02:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 02:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 02:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 02:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 02:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 02:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 02:07:10 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 02:07:10 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 02:07:10 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/13/2026 02:07:10 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 02:07:10 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 02:07:10 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 03:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 03:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 03:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 03:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 03:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 03:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/13/2026 03:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 03:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 03:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 03:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 03:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 03:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 03:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/13/2026 03:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 03:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 03:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 03:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 03:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 03:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 03:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 03:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 03:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 03:06:10 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 03:06:10 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 03:06:10 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/13/2026 03:06:10 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 03:06:10 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 03:06:10 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 04:06:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:06:04 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 04:06:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:06:04 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 04:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 04:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 04:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 04:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 04:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 04:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 04:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:06:08 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 04:06:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 04:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 04:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 04:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 04:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 04:06:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 04:06:11 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 04:06:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 04:06:11 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 04:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 04:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 04:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 04:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 04:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 04:06:11 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 04:06:11 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 04:06:11 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/13/2026 04:06:11 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 04:06:11 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/13/2026 04:06:11 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 05:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 05:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 05:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 05:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 05:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 05:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/13/2026 05:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 05:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 05:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 05:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 05:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 05:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 05:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/13/2026 05:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 05:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 05:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 05:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 05:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 05:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 05:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 05:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 05:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 05:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/13/2026 05:06:10 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/13/2026 05:06:10 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/13/2026 05:06:10 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/13/2026 05:06:10 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/13/2026 05:06:10 PM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/13/2026 05:06:10 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/13/2026 06:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 06:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 06:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 06:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 06:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 06:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 06:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 06:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 06:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:07:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 06:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 06:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 06:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 06:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 06:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 06:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 06:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 06:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 06:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 06:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 06:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 06:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 06:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 06:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 06:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 07:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 07:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 07:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 07:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 07:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 07:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/13/2026 07:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 07:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 07:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:07:07 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/13/2026 07:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 07:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 07:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 07:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 07:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 07:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 07:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 07:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 07:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 07:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 07:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 07:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 07:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 07:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 07:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 08:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 08:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:07:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 08:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 08:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 08:07:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 08:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/13/2026 08:07:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 08:07:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:07:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 08:07:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:07:07 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/13/2026 08:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 08:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 08:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 08:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 08:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 08:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 08:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 08:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 08:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 08:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 08:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 08:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 08:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 08:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 08:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 09:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 09:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:06:03 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 09:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 09:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 09:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 09:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/13/2026 09:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 09:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 09:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 09:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 09:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 09:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 09:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 09:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 09:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 09:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 09:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 09:06:10 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/13/2026 09:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 09:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 09:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 09:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 09:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 09:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:06:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:04 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 10:06:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:04 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/13/2026 10:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 10:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 10:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 10:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 10:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:06:08 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:08 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:06:08 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:08 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 04/13/2026 10:06:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 10:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 10:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 10:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/13/2026 10:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:06:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 10:06:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 10:06:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 10:06:12 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/13/2026 10:06:12 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 10:06:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:06:12 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 10:06:12 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 10:06:12 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 10:06:12 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 10:41:27 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/13/2026 10:47:42 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:47:43 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/13/2026 10:47:43 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:47:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 10:47:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:47:51 PM user.py ln 35 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:47:51 PM user.py ln 42 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/13/2026 10:47:51 PM user.py ln 62 Login response status code: 200
INFO 04/13/2026 10:47:51 PM user.py ln 63 Login response headers: {'Date': 'Mon, 13 Apr 2026 22:47:51 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/13/2026 10:47:51 PM user.py ln 64 Login response content length: 340 bytes
INFO 04/13/2026 10:47:51 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzYxMjA0NzEsIm5iZiI6MTc3NjEyMDQ3MSwiZXhwIjoxNzc2NzI1MjcxLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.3C7jbCnXS9Q6vzjOF-HPuYS1qRi2f4EYMJ45BIVqksg","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/13/2026 10:47:51 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzYxMjA0NzEsIm5iZiI6MTc3NjEyMDQ3MSwiZXhwIjoxNzc2NzI1MjcxLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.3C7jbCnXS9Q6vzjOF-HPuYS1qRi2f4EYMJ45BIVqksg', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/13/2026 10:47:51 PM user.py ln 100 Login successful for John on https://dev.turmansolutions.ai
INFO 04/13/2026 10:47:53 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/13/2026 10:47:53 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 10:47:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 10:47:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 10:47:54 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/13/2026 10:47:54 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/13/2026 11:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/13/2026 11:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:07:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/13/2026 11:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/13/2026 11:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/13/2026 11:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/13/2026 11:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/13/2026 11:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 11:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/13/2026 11:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:07:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/13/2026 11:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/13/2026 11:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/13/2026 11:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 11:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/13/2026 11:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/13/2026 11:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/13/2026 11:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/13/2026 11:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/13/2026 11:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/13/2026 11:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/13/2026 11:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/13/2026 11:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/13/2026 11:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/13/2026 11:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/13/2026 11:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 12:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 12:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:07:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/14/2026 12:07:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 12:07:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:07:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 12:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 12:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 12:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 12:07:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:07:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 12:07:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:07:07 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 12:07:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 12:07:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:07:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 12:07:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 12:07:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 12:07:07 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 12:07:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:07:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 12:07:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:07:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 12:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 12:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:07:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 12:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 12:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 12:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:05:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:05:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 01:05:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:05:03 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 01:05:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 01:05:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:05:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 01:05:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 01:05:03 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/14/2026 01:05:03 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:05:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:05:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:05:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:05:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 01:05:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 01:05:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:05:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 01:05:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 01:05:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 01:05:07 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:05:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:05:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 01:05:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:05:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 01:05:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 01:05:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:05:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 01:05:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 01:05:10 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 01:05:10 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:46:32 AM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:46:33 AM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/14/2026 01:46:33 AM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:46:33 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 01:46:33 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:46:33 AM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/14/2026 01:46:33 AM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/14/2026 01:46:40 AM user.py ln 111 logout called. request is token='xxx'
INFO 04/14/2026 01:46:41 AM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:46:49 AM user.py ln 35 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:46:49 AM user.py ln 42 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/14/2026 01:46:50 AM user.py ln 62 Login response status code: 200
INFO 04/14/2026 01:46:50 AM user.py ln 63 Login response headers: {'Date': 'Tue, 14 Apr 2026 01:46:49 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/14/2026 01:46:50 AM user.py ln 64 Login response content length: 340 bytes
INFO 04/14/2026 01:46:50 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzYxMzEyMTAsIm5iZiI6MTc3NjEzMTIxMCwiZXhwIjoxNzc2NzM2MDEwLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.iI3rCwnfRS7APatRM4Xo9KUkYLFL-YLd7ZWuI87-QVI","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/14/2026 01:46:50 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzYxMzEyMTAsIm5iZiI6MTc3NjEzMTIxMCwiZXhwIjoxNzc2NzM2MDEwLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.iI3rCwnfRS7APatRM4Xo9KUkYLFL-YLd7ZWuI87-QVI', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/14/2026 01:46:50 AM user.py ln 100 Login successful for John on https://dev.turmansolutions.ai
INFO 04/14/2026 01:46:50 AM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/14/2026 01:46:50 AM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:46:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 01:46:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:46:50 AM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/14/2026 01:46:50 AM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/14/2026 02:07:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 02:07:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:04 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/14/2026 02:07:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 02:07:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 02:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 02:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/14/2026 02:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:07:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 02:07:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:08 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 02:07:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 02:07:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 02:07:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 02:07:08 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 02:07:08 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:07:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 02:07:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:12 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/14/2026 02:07:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 02:07:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 02:07:13 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 02:07:13 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 02:07:13 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 03:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 03:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:04 AM create_articles.py ln 93 JWT token obtained (0.72s)
INFO 04/14/2026 03:06:05 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 03:06:05 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:05 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 03:06:05 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 03:06:05 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/14/2026 03:06:05 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 03:06:09 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:09 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 03:06:09 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:09 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/14/2026 03:06:09 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 03:06:09 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:09 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 03:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 03:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/14/2026 03:06:10 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 03:06:13 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:13 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 03:06:13 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:14 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/14/2026 03:06:14 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 03:06:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:14 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 03:06:14 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 03:06:14 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/14/2026 03:06:14 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 04:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:06:03 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 04:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 04:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 04:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 04:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 04:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:06:07 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:06:07 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 04:06:07 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:06:07 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 04:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 04:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 04:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 04:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 04:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 04:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:06:11 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 04:06:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 04:06:11 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:06:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 04:06:11 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 04:06:11 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 04:06:11 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 05:07:05 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:07:05 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 05:07:05 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:07:06 AM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 04/14/2026 05:07:06 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 05:07:06 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:07:06 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 05:07:06 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 05:07:06 AM create_articles.py ln 100 Characters fetched and filtered (0.29s)
INFO 04/14/2026 05:07:06 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 05:07:11 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:07:11 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 05:07:11 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:07:12 AM create_articles.py ln 93 JWT token obtained (0.95s)
INFO 04/14/2026 05:07:12 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 05:07:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:07:12 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 05:07:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 05:07:12 AM create_articles.py ln 100 Characters fetched and filtered (0.40s)
INFO 04/14/2026 05:07:12 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 05:07:17 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:07:17 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 05:07:17 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:07:18 AM create_articles.py ln 93 JWT token obtained (0.80s)
INFO 04/14/2026 05:07:18 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 05:07:18 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:07:18 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 05:07:18 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 05:07:18 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/14/2026 05:07:18 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:07:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 06:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:07:04 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/14/2026 06:07:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 06:07:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:07:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 06:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 06:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/14/2026 06:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:07:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:07:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 06:07:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:07:08 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/14/2026 06:07:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 06:07:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:07:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 06:07:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 06:07:08 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 06:07:08 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:07:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:07:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 06:07:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:07:12 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/14/2026 06:07:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 06:07:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:07:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 06:07:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 06:07:12 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/14/2026 06:07:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 06:07:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 06:07:12 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/14/2026 06:07:12 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/14/2026 06:07:12 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/14/2026 06:07:13 AM cron_common.py ln 414 Character articles: 82
INFO 04/14/2026 06:07:13 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 04/14/2026 06:07:13 AM create_articles.py ln 128 Setup complete (1.13s total)
INFO 04/14/2026 06:07:13 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/14/2026 06:07:13 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260414_060713_news_Hawk.log
INFO 04/14/2026 06:07:13 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/14/2026 06:07:14 AM article_creation_service.py ln 788 WordPress authentication successful (0.61s)
INFO 04/14/2026 06:07:14 AM article_creation_service.py ln 788 Fetched WP users (0.05s)
INFO 04/14/2026 06:07:14 AM article_creation_service.py ln 788 Loaded 82 articles for character (0.54s)
INFO 04/14/2026 06:07:14 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.19s)
INFO 04/14/2026 06:07:14 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/14/2026 06:07:14 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/14/2026 06:07:14 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/14/2026 06:07:16 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/14/2026 06:07:16 AM chat.py ln 159 Found 5 results
INFO 04/14/2026 06:07:16 AM article_creation_service.py ln 788 Found 5 search results (1.33s)
INFO 04/14/2026 06:07:16 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260414_060713_news_Hawk_search.md
INFO 04/14/2026 06:07:16 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/14/2026 06:08:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/14/2026 06:08:07 AM article_creation_service.py ln 788 Generated article - Hawk’s Tuesday Brief: U.S. blocks Iranian ports as markets whipsaw; Trump–Pope feud escalates over AI image; severe weather and a viral road landing (51.82s)
INFO 04/14/2026 06:08:08 AM article_creation_service.py ln 788 Created WP post 1051 (0.16s)
INFO 04/14/2026 06:08:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/14/2026 06:08:10 AM wp.py ln 802 Prompt: Create a dynamic, split-screen featured image to capture the day’s major news: on one side, depict U.S. Navy warships enforcing a blockade near an Iranian port, with oil tankers held back and tense skies overhead. On the other side, illustrate a digital confrontation between Donald Trump and the Vatican—Trump holding a stylized AI-generated “Jesus” image facing a silhouette of a Pope figure under the dome of St. Peter’s Basilica, with tense energy and social media icons in the background. Below these prominent scenes, include subtle visual nods to wild weather (storm clouds over a Midwest landscape), a small plane landing on an Arizona road, and volatile stock market charts. Make the overall composition urgent, informative, and news-driven.
INFO 04/14/2026 06:08:36 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/14/2026 06:08:36 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/14/2026 06:08:36 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-14.jpeg
INFO 04/14/2026 06:08:36 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-14.jpeg
INFO 04/14/2026 06:08:36 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MTQ2ODM0LCJuYmYiOjE3NzYxNDY4MzQsImV4cCI6MTc3Njc1MTYzNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.FwU2Pe_nd36SNmjHTOIxVsOvMw33gbQFoYugq8cnRTI
INFO 04/14/2026 06:08:36 AM image.py ln 197 filename is 2026-04-14.webp
INFO 04/14/2026 06:08:36 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-14.webp'>}
INFO 04/14/2026 06:08:37 AM article_creation_service.py ln 788 Featured image posted (29.16s)
INFO 04/14/2026 06:08:37 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 383.98 KB
INFO 04/14/2026 06:08:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/14/2026 06:08:43 AM wp.py ln 873 Secondary Image Prompt: **Prompt for a Complementary Image:**
Create a dynamic and thought-provoking image that reflects the tension and complexity of global events, similar to the featured image's dramatic mood and color palette. The image should prominently feature a trade ship navigating turbulent waters under a dark, stormy sky, symbolizing global economic conflicts. In the background, include shadowy images of world leaders engaging in dialogue, hinting at deep diplomatic discussions.
On the other side of the image, depict a peaceful suburban life disrupted by a news broadcast showing severe weather alerts, symbolizing the impact of natural disasters on daily life. Soft, warm colors should transition into darker tones as the eye moves from the serene suburban scene to the tumultuous ocean.
Incorporate elements like news feeds or notifications subtly in the sky, suggesting the omnipresent influence of social media and information flow, mirroring the thematic undertones of the original artwork. Aim for a visually cohesive piece that captures the duality of crisis and normalcy, emphasizing the interconnectedness of today's world.
INFO 04/14/2026 06:09:08 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/14/2026 06:09:08 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/14/2026 06:09:08 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-14-1.jpeg
INFO 04/14/2026 06:09:08 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-14-1.jpeg
INFO 04/14/2026 06:09:08 AM image.py ln 189 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MTQ2ODM0LCJuYmYiOjE3NzYxNDY4MzQsImV4cCI6MTc3Njc1MTYzNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.FwU2Pe_nd36SNmjHTOIxVsOvMw33gbQFoYugq8cnRTI
INFO 04/14/2026 06:09:08 AM image.py ln 197 filename is 2026-04-14-1.webp
INFO 04/14/2026 06:09:08 AM image.py ln 208 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-14-1.webp'>}
INFO 04/14/2026 06:09:09 AM article_creation_service.py ln 788 Secondary image uploaded (31.87s)
INFO 04/14/2026 06:09:09 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/14/2026 06:09:09 AM wp.py ln 933 Post content updated successfully for post 1051
INFO 04/14/2026 06:09:09 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/14/2026 06:09:11 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/14/2026 06:09:19 AM chat.py ln 366 AI comment: The article accurately represents the information from its sources. The major stories—the U.S. naval blockade of Iranian ports, Trump's AI Jesus image controversy and feud with Pope Leo, Rep. Swalwell's resignation, the cruise ship murder case, the Chick-fil-A shooting, the attack on Sam Altman's home, and the Arizona plane landing—all appear in the ABC World News Tonight broadcast summary and supporting NBC sources.
The oil market dynamics are correctly sourced to Yahoo Finance, which reported prices sliding below $100 after initially jumping, tied to ceasefire developments and Strait of Hor
INFO 04/14/2026 06:09:19 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/14/2026 06:09:19 AM article_creation_service.py ln 788 Fact-check comment posted (9.83s)
INFO 04/14/2026 06:09:19 AM article_creation_service.py ln 788 Article creation completed successfully (total: 125.64s)
INFO 04/14/2026 06:09:19 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/14/2026 06:09:19 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/14/2026 06:09:19 AM create_articles.py ln 204 Script completed (126.78s total)
INFO 04/14/2026 07:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 07:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:06:04 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/14/2026 07:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 07:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 07:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 07:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/14/2026 07:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 07:06:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:06:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 07:06:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:06:08 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/14/2026 07:06:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 07:06:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:06:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 07:06:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 07:06:08 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 07:06:08 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 07:06:12 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:06:12 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 07:06:12 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:06:12 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/14/2026 07:06:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 07:06:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:06:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 07:06:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 07:06:12 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/14/2026 07:06:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 07:06:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 07:06:13 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/14/2026 07:06:13 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/14/2026 07:06:13 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/14/2026 07:06:13 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/14/2026 08:07:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:07:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 08:07:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:07:05 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/14/2026 08:07:05 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 08:07:05 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:07:05 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 08:07:05 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 08:07:05 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/14/2026 08:07:05 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 08:07:09 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:07:09 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 08:07:09 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:07:10 AM create_articles.py ln 93 JWT token obtained (0.63s)
INFO 04/14/2026 08:07:10 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 08:07:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:07:10 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 08:07:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 08:07:10 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/14/2026 08:07:10 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 08:07:14 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:07:14 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 08:07:14 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:07:14 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/14/2026 08:07:14 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 08:07:14 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:07:14 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 08:07:14 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 08:07:14 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 08:07:14 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 08:07:14 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 08:07:14 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/14/2026 08:07:14 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/14/2026 08:07:14 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/14/2026 08:07:14 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/14/2026 09:07:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:07:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 09:07:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:07:04 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/14/2026 09:07:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 09:07:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:07:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 09:07:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 09:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 04/14/2026 09:07:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 09:07:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:07:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 09:07:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:07:08 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/14/2026 09:07:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 09:07:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:07:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 09:07:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 09:07:08 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 09:07:08 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 09:07:11 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:07:11 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 09:07:11 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:07:12 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/14/2026 09:07:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 09:07:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:07:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 09:07:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 09:07:12 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 09:07:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 09:07:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 09:07:12 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/14/2026 09:07:12 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/14/2026 09:07:12 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/14/2026 09:07:12 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/14/2026 09:57:29 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 10:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:04 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 10:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:04 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/14/2026 10:06:04 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 10:06:04 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:04 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 10:06:04 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 10:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/14/2026 10:06:04 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 10:06:08 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:08 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 10:06:08 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:08 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 10:06:08 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 10:06:08 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:08 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 10:06:08 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 10:06:08 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 10:06:08 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 10:06:11 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:11 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 10:06:11 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:12 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 10:06:12 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 10:06:12 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:12 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 10:06:12 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 10:06:12 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 10:06:12 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 10:06:12 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 10:06:12 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/14/2026 10:06:12 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/14/2026 10:06:12 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/14/2026 10:06:12 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/14/2026 11:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:06:03 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 11:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:06:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/14/2026 11:06:03 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 11:06:03 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:06:03 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 11:06:03 AM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 11:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/14/2026 11:06:03 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:06:06 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:06:06 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 11:06:06 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:06:07 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/14/2026 11:06:07 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 11:06:07 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:06:07 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 11:06:07 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 11:06:07 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 11:06:07 AM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:06:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:06:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 11:06:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:06:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 11:06:10 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 11:06:10 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:06:10 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 11:06:10 AM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 11:06:10 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 11:06:10 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/14/2026 11:06:10 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/14/2026 11:06:10 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/14/2026 11:06:10 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/14/2026 11:06:10 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/14/2026 11:06:10 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/14/2026 11:44:13 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 11:44:15 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 11:44:15 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/14/2026 11:44:15 AM user.py ln 62 Login response status code: 200
INFO 04/14/2026 11:44:15 AM user.py ln 63 Login response headers: {'Date': 'Tue, 14 Apr 2026 11:44:15 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/14/2026 11:44:15 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/14/2026 11:44:15 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE2NzA1NSwibmJmIjoxNzc2MTY3MDU1LCJleHAiOjE3NzY3NzE4NTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ta7gaI6bJUIvqEuXkcvnSMOIfQ2kk3chX34pS9McKCk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/14/2026 11:44:15 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE2NzA1NSwibmJmIjoxNzc2MTY3MDU1LCJleHAiOjE3NzY3NzE4NTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ta7gaI6bJUIvqEuXkcvnSMOIfQ2kk3chX34pS9McKCk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/14/2026 11:44:15 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/14/2026 12:01:21 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 12:01:23 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 12:01:23 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/14/2026 12:01:23 PM user.py ln 62 Login response status code: 200
INFO 04/14/2026 12:01:23 PM user.py ln 63 Login response headers: {'Date': 'Tue, 14 Apr 2026 12:01:23 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/14/2026 12:01:23 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/14/2026 12:01:23 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE2ODA4MywibmJmIjoxNzc2MTY4MDgzLCJleHAiOjE3NzY3NzI4ODMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ul8z_R4WWYyrMfJXDnS6SwyWb8RjinfSUim2FXPbLNA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/14/2026 12:01:23 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE2ODA4MywibmJmIjoxNzc2MTY4MDgzLCJleHAiOjE3NzY3NzI4ODMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ul8z_R4WWYyrMfJXDnS6SwyWb8RjinfSUim2FXPbLNA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/14/2026 12:01:23 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/14/2026 12:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 12:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:06:04 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/14/2026 12:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 12:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 12:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 12:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 12:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 12:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 12:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:06:08 PM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/14/2026 12:06:08 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 12:06:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:06:08 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 12:06:08 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 12:06:08 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/14/2026 12:06:08 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 12:06:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 12:06:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 12:06:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 12:06:12 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/14/2026 12:06:12 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 12:06:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 12:06:12 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 12:06:12 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 12:06:12 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/14/2026 12:06:12 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 01:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 01:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 01:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 01:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 01:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/14/2026 01:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 01:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 01:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 01:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 01:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 01:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 01:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 01:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 01:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 01:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 01:06:10 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 01:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 01:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 01:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 01:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 01:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 01:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 02:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 02:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 02:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 02:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 02:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/14/2026 02:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 02:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:07 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 02:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 02:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 02:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 02:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 02:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 02:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 02:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 02:07:10 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/14/2026 02:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 02:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 02:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 02:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 02:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/14/2026 02:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 02:38:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 02:38:41 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 02:38:41 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/14/2026 02:38:41 PM user.py ln 62 Login response status code: 200
INFO 04/14/2026 02:38:41 PM user.py ln 63 Login response headers: {'Date': 'Tue, 14 Apr 2026 14:38:41 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/14/2026 02:38:41 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/14/2026 02:38:41 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE3NzUyMSwibmJmIjoxNzc2MTc3NTIxLCJleHAiOjE3NzY3ODIzMjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.uV6qUnpfaQAVL68esbUE065jO6kqmoM4LzNE6mGmNfU","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/14/2026 02:38:41 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE3NzUyMSwibmJmIjoxNzc2MTc3NTIxLCJleHAiOjE3NzY3ODIzMjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.uV6qUnpfaQAVL68esbUE065jO6kqmoM4LzNE6mGmNfU', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/14/2026 02:38:41 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/14/2026 03:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 03:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:03 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 03:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 03:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 03:06:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 03:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/14/2026 03:06:03 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 03:06:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 03:06:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/14/2026 03:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 03:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 03:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 03:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 03:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 03:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 03:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 03:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 03:06:10 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/14/2026 03:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 03:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 03:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 03:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 03:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 03:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 04:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:07:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 04:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 04:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 04:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 04:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 04:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 04:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:07:07 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 04:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 04:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 04:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 04:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 04:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 04:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 04:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 04:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 04:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 04:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 04:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 04:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 04:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 04:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 04:33:29 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 05:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 05:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:06:03 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 05:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 05:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 05:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 05:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/14/2026 05:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 05:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 05:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 05:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 05:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 05:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 05:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 05:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 05:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 05:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 05:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 05:06:10 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/14/2026 05:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 05:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 05:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 05:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 05:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 05:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:06:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:06:04 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 06:06:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:06:05 PM create_articles.py ln 93 JWT token obtained (0.49s)
INFO 04/14/2026 06:06:05 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 06:06:05 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:06:05 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 06:06:05 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 06:06:05 PM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 04/14/2026 06:06:05 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:06:10 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 06:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:06:10 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/14/2026 06:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 06:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:06:10 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 06:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 06:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 06:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:06:15 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 06:06:15 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 06:06:15 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 06:06:15 PM create_articles.py ln 93 JWT token obtained (0.49s)
INFO 04/14/2026 06:06:15 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 06:06:16 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 06:06:16 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 06:06:16 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 06:06:16 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/14/2026 06:06:16 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 06:49:53 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 06:49:55 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/14/2026 06:49:55 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/14/2026 06:49:55 PM user.py ln 62 Login response status code: 200
INFO 04/14/2026 06:49:55 PM user.py ln 63 Login response headers: {'Date': 'Tue, 14 Apr 2026 18:49:55 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/14/2026 06:49:55 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/14/2026 06:49:55 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE5MjU5NSwibmJmIjoxNzc2MTkyNTk1LCJleHAiOjE3NzY3OTczOTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fUIK8ee8Tz_4kGovvdYzb4pj99dxzxVMxd6l3iurloU","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/14/2026 06:49:55 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjE5MjU5NSwibmJmIjoxNzc2MTkyNTk1LCJleHAiOjE3NzY3OTczOTUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fUIK8ee8Tz_4kGovvdYzb4pj99dxzxVMxd6l3iurloU', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/14/2026 06:49:55 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/14/2026 07:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 07:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:07:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 07:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 07:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 07:07:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 07:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 07:07:04 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 07:07:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:07:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 07:07:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:07:07 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/14/2026 07:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 07:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 07:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 07:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 07:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 07:07:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 07:07:11 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 07:07:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 07:07:11 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 07:07:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 07:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 07:07:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 07:07:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 07:07:11 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 07:07:11 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 08:06:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:06:04 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 08:06:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:06:04 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/14/2026 08:06:04 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 08:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 08:06:05 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 08:06:05 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/14/2026 08:06:05 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 08:06:09 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:06:09 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 08:06:09 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:06:09 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 08:06:09 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 08:06:09 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:06:09 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 08:06:09 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 08:06:09 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/14/2026 08:06:09 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 08:06:13 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 08:06:13 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 08:06:13 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 08:06:13 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/14/2026 08:06:13 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 08:06:13 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 08:06:13 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 08:06:14 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 08:06:14 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 08:06:14 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 09:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 09:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:06:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 09:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 09:06:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:06:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 09:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 09:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/14/2026 09:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 09:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 09:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 09:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 09:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 09:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 09:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 09:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 09:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 09:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 09:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 09:06:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 09:06:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 09:06:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 09:06:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 09:06:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 09:06:10 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 09:06:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 10:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 10:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 10:06:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 10:06:04 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:04 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 10:06:04 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 10:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/14/2026 10:06:04 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 10:06:07 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:07 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 10:06:07 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:07 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 10:06:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 10:06:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 10:06:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 10:06:07 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 10:06:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 10:06:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 10:06:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 10:06:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 10:06:10 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 10:06:11 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 10:06:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 10:06:11 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 10:06:11 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 10:06:11 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 10:06:11 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:03:35 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 11:03:36 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/14/2026 11:03:36 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 11:03:36 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 11:03:36 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:03:37 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/14/2026 11:03:37 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/14/2026 11:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:07:03 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/14/2026 11:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:07:03 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/14/2026 11:07:03 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/14/2026 11:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:07:03 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/14/2026 11:07:03 PM cron_common.py ln 313 filtered characters: 15
INFO 04/14/2026 11:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/14/2026 11:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:07:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:07:06 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/14/2026 11:07:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:07:07 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/14/2026 11:07:07 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/14/2026 11:07:07 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:07:07 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/14/2026 11:07:07 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 11:07:07 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/14/2026 11:07:07 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:07:10 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/14/2026 11:07:10 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/14/2026 11:07:10 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/14/2026 11:07:10 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/14/2026 11:07:10 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/14/2026 11:07:10 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/14/2026 11:07:10 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/14/2026 11:07:10 PM cron_common.py ln 313 filtered characters: 12
INFO 04/14/2026 11:07:10 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/14/2026 11:07:10 PM cron_common.py ln 373 No characters selected.
INFO 04/14/2026 11:11:25 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/14/2026 11:15:48 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/15/2026 12:07:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:07:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 12:07:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:07:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 12:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 12:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 12:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 12:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.39s)
INFO 04/15/2026 12:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 12:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 12:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:07:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 12:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 12:07:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:07:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 12:07:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 12:07:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 12:07:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 12:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 12:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 12:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 12:07:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 12:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 12:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 12:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 01:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:05:45 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/15/2026 01:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 01:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 01:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 01:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/15/2026 01:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 01:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:05:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 01:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 01:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 01:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/15/2026 01:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 02:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:06:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 02:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 02:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 02:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 02:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/15/2026 02:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 02:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 02:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 02:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 02:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 02:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 02:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 02:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 02:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 02:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 02:06:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 02:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 02:06:51 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 03:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 03:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 03:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 03:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 03:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 03:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/15/2026 03:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 03:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 03:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 03:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 03:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 03:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 03:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 03:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 03:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 03:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 03:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 04:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:45 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/15/2026 04:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 04:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 04:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 04:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/15/2026 04:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 04:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 04:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 04:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 04:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 04:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 04:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 04:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:51 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 04:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 04:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 04:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 04:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 04:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 05:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 05:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 05:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 05:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 05:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/15/2026 05:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 05:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 05:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 05:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 05:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 05:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 05:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 05:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 05:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 05:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 05:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 05:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 05:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 06:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:46 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/15/2026 06:06:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 06:06:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 06:06:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 06:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 04/15/2026 06:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:50 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/15/2026 06:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 06:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 06:06:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 06:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 06:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 06:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:55 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 06:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 06:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 06:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 06:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/15/2026 06:06:55 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 06:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 06:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/15/2026 06:06:55 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/15/2026 06:06:55 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/15/2026 06:06:56 AM cron_common.py ln 414 Character articles: 83
INFO 04/15/2026 06:06:56 AM create_articles.py ln 126 Character articles loaded (0.79s)
INFO 04/15/2026 06:06:56 AM create_articles.py ln 128 Setup complete (1.44s total)
INFO 04/15/2026 06:06:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/15/2026 06:06:56 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260415_060656_news_Hawk.log
INFO 04/15/2026 06:06:56 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/15/2026 06:06:57 AM article_creation_service.py ln 788 WordPress authentication successful (0.40s)
INFO 04/15/2026 06:06:57 AM article_creation_service.py ln 788 Fetched WP users (0.07s)
INFO 04/15/2026 06:06:58 AM article_creation_service.py ln 788 Loaded 83 articles for character (0.90s)
INFO 04/15/2026 06:06:58 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.18s)
INFO 04/15/2026 06:06:58 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/15/2026 06:06:58 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/15/2026 06:06:58 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/15/2026 06:06:59 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/15/2026 06:06:59 AM chat.py ln 159 Found 5 results
INFO 04/15/2026 06:06:59 AM article_creation_service.py ln 788 Found 5 search results (1.42s)
INFO 04/15/2026 06:06:59 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260415_060656_news_Hawk_search.md
INFO 04/15/2026 06:06:59 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/15/2026 06:08:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/15/2026 06:08:07 AM article_creation_service.py ln 788 Generated article - Hawk’s Wednesday Brief: Trump doubles down on Iran blockade threat as talks floated; IMF trims outlook; Manila quells health rumors; culture notes from Nightline (67.58s)
INFO 04/15/2026 06:08:07 AM article_creation_service.py ln 788 Created WP post 1056 (0.16s)
INFO 04/15/2026 06:08:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/15/2026 06:08:10 AM wp.py ln 802 Prompt: Prompt for featured image generation:
Create a dynamic, split-panel illustration representing the major global themes of the article: On the left, depict tense naval standoff imagery—U.S. Navy and Iranian ships in the Strait of Hormuz, with a backdrop hinting at diplomatic talks (shaking hands, flags of the U.S. and Iran slightly blurred behind the ships). At the center, overlay global financial data graphics—stock tickers or declining IMF charts—to symbolize economic anxiety. On the right, show contrasting scenes: Manila’s presidential palace with a reassuring leader addressing the public on screen; Asian farmers using smartphones or tablets in agricultural fields, referencing AI and technology in rural life. Along the top or bottom, incorporate cultural cues (music notes, a film reel, or celebrity silhouettes) to nod to pop culture and media highlights. Use a newsy, modern color palette.
INFO 04/15/2026 06:08:33 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/15/2026 06:08:34 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/15/2026 06:08:34 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-15.jpeg
INFO 04/15/2026 06:08:34 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-15.jpeg
INFO 04/15/2026 06:08:34 AM image.py ln 213 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MjMzMjE3LCJuYmYiOjE3NzYyMzMyMTcsImV4cCI6MTc3NjgzODAxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0._OV_wwdJ_wlST1j500xtsWYjxI_daEEdHl_vDDrZhkg
INFO 04/15/2026 06:08:34 AM image.py ln 221 filename is 2026-04-15.webp
INFO 04/15/2026 06:08:34 AM image.py ln 232 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-15.webp'>}
INFO 04/15/2026 06:08:35 AM article_creation_service.py ln 788 Featured image posted (28.28s)
INFO 04/15/2026 06:08:35 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 403.16 KB
INFO 04/15/2026 06:08:48 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/15/2026 06:08:48 AM wp.py ln 873 Secondary Image Prompt: ### Prompt for Secondary Image Generation
Create a complementary image that reflects the mood and thematic elements of the featured artwork, which highlights the geopolitical tension and economic concerns highlighted in the article. The secondary image should maintain a similar color palette with deep blues, earthy greens, and vibrant accents to match the existing tones.
**Content:**
- **Setting:** A bustling trading port, capturing a diverse group of people engaging in trade and commerce.
- **Focus Characters:**
- A businessperson in formal attire engaged with a dock worker, discussing shipping logistics.
- A small group of local farmers collaborating to unload fresh produce from a small vessel, symbolizing the impact of global tensions on local economies.
- **Background:** Cargo ships in the harbor, with flags representing various nations, emphasizing international trade dynamics. A backdrop of a vibrant marketplace bustling with activity, with signs displaying various currencies and goods.
**Mood:** The atmosphere should convey both the vibrancy of commerce and the underlying tensions of international relations, with a subtle sense of optimism amidst uncertainty. Use dynamic visual elements, like the motion of waves and soaring birds, to capture the fluidity of trade and communication.
**Thematic Links:**
- Reference to technology in agriculture (like smartphones or digital displays) to represent innovation.
- Subtle visual cues representing economic graphs or trends, similar to the downward trend included in the featured image, reflecting market concerns visually intertwined with the human element of trade.
This new image should resonate emotionally and visually with the featured one while providing a fresh perspective on global economic interconnectivity amidst conflict.
INFO 04/15/2026 06:09:17 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/15/2026 06:09:17 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/15/2026 06:09:17 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-15-1.jpeg
INFO 04/15/2026 06:09:17 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-15-1.jpeg
INFO 04/15/2026 06:09:17 AM image.py ln 213 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MjMzMjE3LCJuYmYiOjE3NzYyMzMyMTcsImV4cCI6MTc3NjgzODAxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0._OV_wwdJ_wlST1j500xtsWYjxI_daEEdHl_vDDrZhkg
INFO 04/15/2026 06:09:17 AM image.py ln 221 filename is 2026-04-15-1.webp
INFO 04/15/2026 06:09:17 AM image.py ln 232 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-15-1.webp'>}
INFO 04/15/2026 06:09:18 AM article_creation_service.py ln 788 Secondary image uploaded (43.15s)
INFO 04/15/2026 06:09:18 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/15/2026 06:09:18 AM wp.py ln 933 Post content updated successfully for post 1056
INFO 04/15/2026 06:09:18 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/15/2026 06:09:22 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/15/2026 06:09:31 AM chat.py ln 366 AI comment: # Assessment of Article Accuracy
The article accurately represents the information from the provided sources. The key claims are well-supported:
**Iran standoff**: Source 1 (CNN, 29% relevance) confirms Trump's threat to sink Iranian ships approaching the blockade and mentions exploration of a second round of in-person talks with Iran. Source 4 (NBC News) corroborates protests in Iran as the U.S. blockades the Strait of Hormuz and mentions Trump's feud with Pope Leo.
**IMF forecast**: Source 5 (CNN, 5% relevance) confirms the IMF cut global growth forecasts, matching the article's economic
INFO 04/15/2026 06:09:31 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/15/2026 06:09:31 AM article_creation_service.py ln 788 Fact-check comment posted (13.00s)
INFO 04/15/2026 06:09:32 AM article_creation_service.py ln 788 Article creation completed successfully (total: 155.34s)
INFO 04/15/2026 06:09:32 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/15/2026 06:09:32 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/15/2026 06:09:32 AM create_articles.py ln 204 Script completed (156.80s total)
INFO 04/15/2026 07:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 07:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:05:45 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/15/2026 07:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 07:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 07:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 07:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/15/2026 07:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 07:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 07:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/15/2026 07:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 07:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/15/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 07:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 07:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:05:53 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 07:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 07:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 07:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 07:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 07:05:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 07:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 07:05:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/15/2026 07:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/15/2026 07:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/15/2026 07:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/15/2026 08:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 08:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:06:45 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/15/2026 08:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 08:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 08:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 08:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/15/2026 08:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 08:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 08:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 08:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/15/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/15/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 08:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 08:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 08:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/15/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/15/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/15/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/15/2026 09:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 09:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 09:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 09:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 09:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 09:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/15/2026 09:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:05:50 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/15/2026 09:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 09:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 09:05:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 09:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/15/2026 09:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 09:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 09:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:05:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 09:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 09:05:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 09:05:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 09:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 09:05:54 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 09:05:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 09:05:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/15/2026 09:05:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/15/2026 09:05:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/15/2026 09:05:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/15/2026 09:41:13 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/15/2026 09:53:11 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/15/2026 10:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 10:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 10:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 10:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 10:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 10:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/15/2026 10:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 10:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 10:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 10:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 10:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 10:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 10:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 10:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 10:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 10:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 10:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 10:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 10:05:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 10:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 10:05:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 10:05:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 10:05:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/15/2026 10:05:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/15/2026 10:05:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/15/2026 10:05:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/15/2026 11:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 11:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 11:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 11:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 11:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 11:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/15/2026 11:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 11:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 11:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 11:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 11:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 11:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 11:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 11:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 11:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 11:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 11:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/15/2026 11:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/15/2026 11:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/15/2026 11:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/15/2026 11:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/15/2026 11:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/15/2026 12:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 12:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 12:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 12:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 12:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 12:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/15/2026 12:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 12:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 12:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 12:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 12:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 12:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 12:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 12:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 12:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 12:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 12:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 12:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 12:21:02 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/15/2026 01:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:07:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 01:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:07:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 01:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 01:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 01:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 01:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/15/2026 01:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 01:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:07:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 01:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 01:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 01:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 01:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 01:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 01:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 01:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 01:07:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 01:07:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 01:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 01:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 01:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 01:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 01:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 01:20:30 PM drupal.py ln 244 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/15/2026 01:20:30 PM drupal.py ln 246 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 01:20:30 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 01:20:30 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:07:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 02:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:07:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 02:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 02:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 02:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 02:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/15/2026 02:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 02:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:07:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 02:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 02:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:07:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 02:07:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 02:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 02:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 02:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 02:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 02:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 02:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 02:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 02:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 02:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 02:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 02:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 02:22:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/15/2026 02:30:45 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/15/2026 03:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 03:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 03:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 03:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 03:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 03:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/15/2026 03:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 03:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 03:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 03:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 03:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 03:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 03:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 03:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 03:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 03:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 03:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 03:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 04:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 04:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 04:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 04:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/15/2026 04:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 04:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 04:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 04:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 04:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 04:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 04:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 04:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 04:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/15/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 04:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 05:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 05:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 05:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 05:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 05:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/15/2026 05:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 05:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 05:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 05:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 05:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 05:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 05:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 05:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 06:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:46 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 06:06:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 06:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 06:06:47 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 06:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.34s)
INFO 04/15/2026 06:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:50 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/15/2026 06:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 06:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 06:06:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 06:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 06:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 06:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 06:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 06:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 06:06:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 06:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 06:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 06:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 06:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 06:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 06:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 07:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:07:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 07:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:07:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 07:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 07:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 07:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 07:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/15/2026 07:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 07:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 07:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:07:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 07:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 07:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 07:07:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 07:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 07:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 07:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 07:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 07:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 07:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 07:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 07:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 07:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 07:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 07:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 07:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 08:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 08:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 08:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 08:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 08:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 08:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/15/2026 08:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 08:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 08:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 08:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 08:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 08:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 08:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 08:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 08:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 08:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 08:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/15/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 08:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 09:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 09:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/15/2026 09:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 09:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 09:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 09:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/15/2026 09:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 09:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 09:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:06:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 09:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 09:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 09:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 09:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/15/2026 09:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 09:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 09:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 09:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 09:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 10:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 10:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 10:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 10:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 10:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 10:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/15/2026 10:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 10:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 10:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 10:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 10:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 11:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/15/2026 11:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/15/2026 11:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/15/2026 11:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/15/2026 11:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/15/2026 11:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/15/2026 11:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 11:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/15/2026 11:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:48 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/15/2026 11:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/15/2026 11:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/15/2026 11:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 11:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 11:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/15/2026 11:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/15/2026 11:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/15/2026 11:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/15/2026 11:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/15/2026 11:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/15/2026 11:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/15/2026 11:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/15/2026 11:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/15/2026 11:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/15/2026 11:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 12:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 12:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:06:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 12:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 12:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 12:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 12:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/16/2026 12:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 12:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 12:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:06:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 12:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 12:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 12:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 12:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 12:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 12:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 12:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 12:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 12:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 01:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 01:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 01:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 01:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 01:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/16/2026 01:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 01:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 01:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 01:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 01:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 01:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 01:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 01:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 01:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 01:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 02:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 02:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 02:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 02:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 02:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/16/2026 02:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 02:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:05:48 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/16/2026 02:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 02:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 02:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 02:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 02:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 02:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 02:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:07:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:07:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 03:07:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:07:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 03:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 03:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 03:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 03:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/16/2026 03:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 03:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:07:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 03:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 03:07:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:07:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 03:07:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 03:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 03:07:49 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 03:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 03:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 03:07:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 03:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 03:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 03:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 04:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 04:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 04:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 04:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 04:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/16/2026 04:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 04:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 04:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 04:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 04:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 04:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 04:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 04:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 04:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 04:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 04:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 04:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 04:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 05:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 05:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 05:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 05:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 05:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 04/16/2026 05:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 05:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:06:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 05:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 05:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 05:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 05:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 05:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 05:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 05:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 05:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 05:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 05:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 05:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 06:03:20 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 06:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 06:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 06:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 06:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 06:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 06:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/16/2026 06:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 06:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 06:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 06:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 06:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 06:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 06:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 06:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 06:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 06:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:05:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 06:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 06:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 06:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 06:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 06:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/16/2026 06:05:52 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/16/2026 06:05:52 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/16/2026 06:05:52 AM cron_common.py ln 414 Character articles: 84
INFO 04/16/2026 06:05:52 AM create_articles.py ln 126 Character articles loaded (0.47s)
INFO 04/16/2026 06:05:52 AM create_articles.py ln 128 Setup complete (0.96s total)
INFO 04/16/2026 06:05:52 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/16/2026 06:05:52 AM article_creation_service.py ln 788 Article log file created: /tsai/repo/api/logs/articles/20260416_060552_news_Hawk.log
INFO 04/16/2026 06:05:52 AM article_creation_service.py ln 788 Article creation started for character: Hawk
INFO 04/16/2026 06:05:52 AM article_creation_service.py ln 788 WordPress authentication successful (0.31s)
INFO 04/16/2026 06:05:52 AM article_creation_service.py ln 788 Fetched WP users (0.06s)
INFO 04/16/2026 06:05:53 AM article_creation_service.py ln 788 Loaded 84 articles for character (0.47s)
INFO 04/16/2026 06:05:53 AM article_creation_service.py ln 788 Got 27 categories and 62 tags (0.15s)
INFO 04/16/2026 06:05:53 AM article_creation_service.py ln 788 Searching for 'latest headline news' (topic: news)
INFO 04/16/2026 06:05:53 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/16/2026 06:05:53 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/16/2026 06:05:55 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/16/2026 06:05:55 AM chat.py ln 159 Found 5 results
INFO 04/16/2026 06:05:55 AM article_creation_service.py ln 788 Found 5 search results (1.52s)
INFO 04/16/2026 06:05:55 AM article_creation_service.py ln 788 Search results written to: /tsai/repo/api/logs/articles/20260416_060552_news_Hawk_search.md
INFO 04/16/2026 06:05:55 AM article_creation_service.py ln 788 System message prepared (0.00s)
INFO 04/16/2026 06:07:03 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/16/2026 06:07:03 AM article_creation_service.py ln 788 Generated article - Hawk’s Thursday Brief: Pakistan channels U.S.–Iran talks as UK resists ‘Trump’s war’; Beijing fumes over blockade; oil windfall and online safety push (68.27s)
INFO 04/16/2026 06:07:03 AM article_creation_service.py ln 788 Created WP post 1061 (0.10s)
INFO 04/16/2026 06:07:06 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/16/2026 06:07:06 AM wp.py ln 802 Prompt: **Prompt for Generating a Featured Image:**
A visually dynamic collage that represents the major themes of international diplomacy, geopolitical tension, and domestic policy covered in the article. The composition features:
- The flags of Pakistan, the United States, and Iran, arranged to suggest back-channel negotiation (perhaps with a symbolic message envelope or handshake).
- The UK’s Big Ben or Downing Street in the background, with visual hints of newspaper headlines and tech icons to represent the social media child-safety crackdown.
- Oil rigs or barrels symbolizing the Gulf oil windfall and economic themes.
- The Chinese flag and shipping tankers to signal China’s pivotal role and anger over the oil blockade.
- Subtle references to humanitarian crises, such as a faded map of Sudan or distressed silhouettes.
- The overall style should be bold, newsy, and slightly dramatic, suitable for a daily international news briefing.
Ideal for use as a featured image on a global affairs newsletter or news website.
INFO 04/16/2026 06:07:28 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/16/2026 06:07:28 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/16/2026 06:07:28 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-16.jpeg
INFO 04/16/2026 06:07:28 AM article_creation_service.py ln 788 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-16.jpeg
INFO 04/16/2026 06:07:28 AM image.py ln 213 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MzE5NTUyLCJuYmYiOjE3NzYzMTk1NTIsImV4cCI6MTc3NjkyNDM1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.1UvIf3ya7UNin2TfOy7Nl51UUASiDNIv18bErK7_Yfw
INFO 04/16/2026 06:07:29 AM image.py ln 221 filename is 2026-04-16.webp
INFO 04/16/2026 06:07:29 AM image.py ln 232 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-16.webp'>}
INFO 04/16/2026 06:07:29 AM article_creation_service.py ln 788 Featured image posted (26.48s)
INFO 04/16/2026 06:07:29 AM wp.py ln 823 Using vision analysis for secondary image. Featured image base64 size: 482.53 KB
INFO 04/16/2026 06:07:35 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/16/2026 06:07:35 AM wp.py ln 873 Secondary Image Prompt: ### Prompt for Generating a Complementary Image:
Create an image that conveys the complex dynamics of international diplomacy, focusing on the themes of conflict resolution and humanitarian concerns. The color palette should feature muted earth tones with hints of blue and olive green, similar to the featured image.
**Content Elements:**
1. **Diplomatic Discussions**: Depict two figures from different backgrounds engaged in a dialogue over a table surrounded by maps and documents, symbolizing negotiation. Include hints of Pakistan and the U.S. in the background, perhaps through subtle flag motifs or landmarks.
2. **Humanitarian Themes**: Integrate an image of a family or individuals looking towards the horizon, representing hope and resilience. They should be set against a backdrop of a cityscape, illustrating the juxtaposition between conflict and the everyday lives affected by it.
3. **Natural Resources**: Add abstract representations of oil reserves or shipping pathways, subtly woven into the background to signify the economic stakes involved, without overwhelming the humanitarian focus.
4. **Background Elements**: Include a distant view of military vessels in calmer waters, symbolic of both conflict and the possibility for peace, incorporating elements that suggest international shipping routes.
This image should evoke a sense of cautious optimism, mirroring the ongoing international negotiations while reflecting the human impact behind the headlines.
INFO 04/16/2026 06:08:01 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/16/2026 06:08:01 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/16/2026 06:08:01 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-16-1.jpeg
INFO 04/16/2026 06:08:01 AM article_creation_service.py ln 788 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-16-1.jpeg
INFO 04/16/2026 06:08:01 AM image.py ln 213 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2MzE5NTUyLCJuYmYiOjE3NzYzMTk1NTIsImV4cCI6MTc3NjkyNDM1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.1UvIf3ya7UNin2TfOy7Nl51UUASiDNIv18bErK7_Yfw
INFO 04/16/2026 06:08:01 AM image.py ln 221 filename is 2026-04-16-1.webp
INFO 04/16/2026 06:08:01 AM image.py ln 232 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-16-1.webp'>}
INFO 04/16/2026 06:08:02 AM article_creation_service.py ln 788 Secondary image uploaded (32.40s)
INFO 04/16/2026 06:08:02 AM wp.py ln 904 Inserted image after second paragraph
INFO 04/16/2026 06:08:02 AM wp.py ln 933 Post content updated successfully for post 1061
INFO 04/16/2026 06:08:02 AM article_creation_service.py ln 788 Post content updated with secondary image
INFO 04/16/2026 06:08:04 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/16/2026 06:08:16 AM chat.py ln 366 AI comment: # Accuracy Assessment
The article accurately represents the information from its source material. The key claims are well-supported:
**Pakistan mediation role**: Source 1 (BBC) confirms the i paper's headline "China flexes its muscles in Gulf-as Trump seeks deal with Iran" and notes Pakistan's involvement. Source 2 (CNN) directly reports "US has message for Iran, says Pakistan is a key mediator in talks," matching the article's opening claim.
**UK political statements**: Source 1 provides direct quotes from UK front pages showing PM Starmer vowing not to be "dragged into" Trump's war and Ch
INFO 04/16/2026 06:08:16 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/16/2026 06:08:16 AM article_creation_service.py ln 788 Fact-check comment posted (14.15s)
INFO 04/16/2026 06:08:16 AM article_creation_service.py ln 788 Article creation completed successfully (total: 144.00s)
INFO 04/16/2026 06:08:16 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/16/2026 06:08:16 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/16/2026 06:08:16 AM create_articles.py ln 204 Script completed (144.96s total)
INFO 04/16/2026 07:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 07:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 07:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 07:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 07:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 07:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/16/2026 07:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 07:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 07:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:06:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 07:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 07:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 07:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 07:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 07:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 07:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 07:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 07:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 07:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 07:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 07:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 07:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/16/2026 07:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/16/2026 07:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/16/2026 07:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/16/2026 08:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 08:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 08:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 08:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 08:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 08:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/16/2026 08:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 08:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 08:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 08:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 08:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 08:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 08:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 08:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 08:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 08:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 08:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 08:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 08:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 08:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 08:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 08:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 08:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/16/2026 08:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/16/2026 08:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/16/2026 08:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/16/2026 09:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 09:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 09:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 09:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 09:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 09:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/16/2026 09:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 09:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 09:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 09:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 09:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 09:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 09:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 09:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 09:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 09:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 09:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 09:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 09:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/16/2026 09:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/16/2026 09:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/16/2026 09:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/16/2026 10:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 10:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 10:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 10:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 10:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 10:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/16/2026 10:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 10:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 10:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 10:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 10:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 10:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 10:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 10:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 10:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 10:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 10:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 10:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 10:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 10:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/16/2026 10:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/16/2026 10:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/16/2026 10:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/16/2026 11:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 11:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:45 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/16/2026 11:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 11:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 11:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 11:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 04/16/2026 11:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 11:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 11:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 11:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 11:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 11:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 11:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 11:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 11:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 11:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 11:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/16/2026 11:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/16/2026 11:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/16/2026 11:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/16/2026 11:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/16/2026 11:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/16/2026 12:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 12:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 12:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 12:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 12:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 12:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/16/2026 12:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 12:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 12:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 12:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 12:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 12:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 12:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 12:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 12:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 12:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 12:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 12:05:51 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 12:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 12:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 12:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 01:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 01:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 01:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 01:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 01:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/16/2026 01:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 01:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 01:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 01:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 01:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 01:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 01:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 01:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 01:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 01:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 01:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 01:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:07:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 02:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:07:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 02:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 02:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 02:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 02:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/16/2026 02:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 02:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:07:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 02:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 02:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 02:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 02:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 02:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 02:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 02:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 02:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 02:07:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/16/2026 02:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 02:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 02:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 02:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 02:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 02:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 03:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 03:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 03:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 03:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 03:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/16/2026 03:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 03:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 03:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 03:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 03:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 03:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 03:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 03:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 04:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 04:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 04:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 04:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/16/2026 04:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 04:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 04:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 04:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 04:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 04:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 04:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 04:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 04:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 04:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 05:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 05:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 05:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 05:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 05:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/16/2026 05:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 05:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:05:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/16/2026 05:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 05:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 05:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/16/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 05:39:20 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:21 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:21 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:39:21 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:39:21 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:39:21 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:39:21 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:39:21 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE2MSwibmJmIjoxNzc2MzYxMTYxLCJleHAiOjE3NzY5NjU5NjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.XpsMxg2qehr_8sZePWu8R_0CRaa7_FQ5BNsMI90iUDk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:39:21 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE2MSwibmJmIjoxNzc2MzYxMTYxLCJleHAiOjE3NzY5NjU5NjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.XpsMxg2qehr_8sZePWu8R_0CRaa7_FQ5BNsMI90iUDk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:39:21 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:39:24 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:24 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:24 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:39:25 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:39:25 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:39:24 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:39:25 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:39:25 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE2NSwibmJmIjoxNzc2MzYxMTY1LCJleHAiOjE3NzY5NjU5NjUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.5p0QE27EJaAYeyRJEUeW_ZKLGirH88E9AF8lLUJXZ7c","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:39:25 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE2NSwibmJmIjoxNzc2MzYxMTY1LCJleHAiOjE3NzY5NjU5NjUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.5p0QE27EJaAYeyRJEUeW_ZKLGirH88E9AF8lLUJXZ7c', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:39:25 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:39:29 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:29 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:29 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:39:30 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:39:30 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:39:29 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:39:30 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:39:30 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE3MCwibmJmIjoxNzc2MzYxMTcwLCJleHAiOjE3NzY5NjU5NzAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.OeqIprLdFjq_1FHAb38X1ZGPGToaZI1zqZ-_DbcKD-o","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:39:30 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE3MCwibmJmIjoxNzc2MzYxMTcwLCJleHAiOjE3NzY5NjU5NzAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.OeqIprLdFjq_1FHAb38X1ZGPGToaZI1zqZ-_DbcKD-o', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:39:30 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:39:34 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:34 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:34 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:39:34 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:39:34 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:39:34 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:39:34 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:39:34 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE3NCwibmJmIjoxNzc2MzYxMTc0LCJleHAiOjE3NzY5NjU5NzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.CwNPwjG1nG8QbtWGdalZEk78zzK2OoVeLD46CGcC-Ac","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:39:34 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE3NCwibmJmIjoxNzc2MzYxMTc0LCJleHAiOjE3NzY5NjU5NzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.CwNPwjG1nG8QbtWGdalZEk78zzK2OoVeLD46CGcC-Ac', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:39:34 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:39:53 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:54 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:39:54 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:39:54 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:39:54 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:39:54 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:39:54 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:39:54 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE5NCwibmJmIjoxNzc2MzYxMTk0LCJleHAiOjE3NzY5NjU5OTQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.2QpNxH6LKzf7E6MEtkR3JhG5WaIaLB1lEG74K5emvfk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:39:54 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTE5NCwibmJmIjoxNzc2MzYxMTk0LCJleHAiOjE3NzY5NjU5OTQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.2QpNxH6LKzf7E6MEtkR3JhG5WaIaLB1lEG74K5emvfk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:39:54 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:40:10 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:10 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:10 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:40:11 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:40:11 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:40:10 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:40:11 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:40:11 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTIxMSwibmJmIjoxNzc2MzYxMjExLCJleHAiOjE3NzY5NjYwMTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.SJHmnVwyA6vmewtZIoHgvsbde81yIsw_aL68SjRG5yM","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:40:11 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTIxMSwibmJmIjoxNzc2MzYxMjExLCJleHAiOjE3NzY5NjYwMTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.SJHmnVwyA6vmewtZIoHgvsbde81yIsw_aL68SjRG5yM', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:40:11 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:40:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:39 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:39 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:40:40 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:40:40 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:40:39 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:40:40 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:40:40 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTI0MCwibmJmIjoxNzc2MzYxMjQwLCJleHAiOjE3NzY5NjYwNDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Z8QidITBAB34YLFUZbEiJsQdQnpw7HuFqyAPfYlTF4k","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:40:40 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTI0MCwibmJmIjoxNzc2MzYxMjQwLCJleHAiOjE3NzY5NjYwNDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Z8QidITBAB34YLFUZbEiJsQdQnpw7HuFqyAPfYlTF4k', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:40:40 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 05:40:42 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:42 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 05:40:42 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 05:40:43 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 05:40:43 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 17:40:42 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 05:40:43 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 05:40:43 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTI0MywibmJmIjoxNzc2MzYxMjQzLCJleHAiOjE3NzY5NjYwNDMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.cFYPM5k39YFXiGEwSxcPa-ImK8k8A1sCW1brBKN9T-I","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 05:40:43 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2MTI0MywibmJmIjoxNzc2MzYxMjQzLCJleHAiOjE3NzY5NjYwNDMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.cFYPM5k39YFXiGEwSxcPa-ImK8k8A1sCW1brBKN9T-I', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 05:40:43 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 06:02:29 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/16/2026 06:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 06:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 06:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 06:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 06:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 06:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/16/2026 06:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 06:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 06:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (1.22s)
INFO 04/16/2026 06:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 06:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 06:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 07:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 07:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 07:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 07:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 07:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 07:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/16/2026 07:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 07:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 07:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 07:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 07:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 07:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 07:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 07:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/16/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 07:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 08:04:33 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 08:04:34 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 08:04:34 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 08:04:34 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 08:04:34 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 20:04:34 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 08:04:34 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 08:04:34 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2OTg3NCwibmJmIjoxNzc2MzY5ODc0LCJleHAiOjE3NzY5NzQ2NzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.M1yS7VIoZiIBgAeZv_6KcygVx0yhL71WWXNVKJNbXHk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 08:04:34 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM2OTg3NCwibmJmIjoxNzc2MzY5ODc0LCJleHAiOjE3NzY5NzQ2NzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.M1yS7VIoZiIBgAeZv_6KcygVx0yhL71WWXNVKJNbXHk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 08:04:34 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 08:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 08:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/16/2026 08:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 08:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 08:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 08:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/16/2026 08:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 08:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 08:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/16/2026 08:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 08:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 08:05:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 08:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 08:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 08:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 08:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/16/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 08:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/16/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 09:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 09:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:46 PM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 04/16/2026 09:06:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 09:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 09:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 09:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/16/2026 09:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 09:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 09:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:51 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/16/2026 09:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 09:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:51 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 09:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 09:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 09:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 09:06:55 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/16/2026 09:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 09:06:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 09:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 09:06:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 09:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/16/2026 09:06:55 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:07:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 10:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:07:46 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/16/2026 10:07:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 10:07:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:07:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 10:07:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 10:07:46 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/16/2026 10:07:46 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:07:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:07:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 10:07:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:07:50 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/16/2026 10:07:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 10:07:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:07:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 10:07:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 10:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/16/2026 10:07:50 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 10:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 10:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 10:07:54 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/16/2026 10:07:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 10:07:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 10:07:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 10:07:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 10:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/16/2026 10:07:55 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 10:11:47 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 10:11:48 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/16/2026 10:11:48 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/16/2026 10:11:49 PM user.py ln 62 Login response status code: 200
INFO 04/16/2026 10:11:49 PM user.py ln 63 Login response headers: {'Date': 'Thu, 16 Apr 2026 22:11:48 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/16/2026 10:11:49 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/16/2026 10:11:49 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM3NzUwOSwibmJmIjoxNzc2Mzc3NTA5LCJleHAiOjE3NzY5ODIzMDksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.B5U978YVR2NvbEo3vip1joMmdOr2pev7g9NNTfit5a8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/16/2026 10:11:49 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjM3NzUwOSwibmJmIjoxNzc2Mzc3NTA5LCJleHAiOjE3NzY5ODIzMDksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.B5U978YVR2NvbEo3vip1joMmdOr2pev7g9NNTfit5a8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/16/2026 10:11:49 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/16/2026 11:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/16/2026 11:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:46 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/16/2026 11:06:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/16/2026 11:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/16/2026 11:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/16/2026 11:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/16/2026 11:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/16/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:50 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/16/2026 11:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/16/2026 11:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/16/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/16/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/16/2026 11:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/16/2026 11:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/16/2026 11:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/16/2026 11:06:54 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/16/2026 11:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/16/2026 11:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/16/2026 11:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/16/2026 11:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/16/2026 11:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/16/2026 11:06:54 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 12:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 12:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 12:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 12:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 12:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 12:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/17/2026 12:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 12:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 12:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 12:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 12:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 12:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 12:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 12:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 12:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 12:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/17/2026 12:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 01:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 01:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 01:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 01:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 01:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 01:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 01:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 01:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 01:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 01:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 01:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 01:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 01:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 01:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 01:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 01:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 01:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 01:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 02:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 02:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 02:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 02:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 02:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 02:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 02:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 02:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 02:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:05:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 02:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 02:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 02:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 02:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 02:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 02:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 02:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:05:51 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 02:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 02:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 03:07:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:07:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 03:07:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:07:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 03:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 03:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 03:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 03:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 03:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 03:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 03:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:07:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 03:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 03:07:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:07:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 03:07:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 03:07:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 03:07:48 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 03:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 03:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:07:51 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/17/2026 03:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 03:07:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 03:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 03:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/17/2026 03:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 04:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 04:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 04:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 04:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 04:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 04:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 04:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 04:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 04:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 04:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 04:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 04:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 04:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 04:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 04:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 04:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 04:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 04:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:32:40 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:32:41 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:32:41 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 04:32:41 AM user.py ln 62 Login response status code: 200
INFO 04/17/2026 04:32:41 AM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 04:32:41 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 04:32:41 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 04:32:41 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQwMDM2MSwibmJmIjoxNzc2NDAwMzYxLCJleHAiOjE3NzcwMDUxNjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.KsKOiT22Zt0n4X0GmIjmG1l4v0RiyVWndmWYk4k8djI","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 04:32:41 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQwMDM2MSwibmJmIjoxNzc2NDAwMzYxLCJleHAiOjE3NzcwMDUxNjEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.KsKOiT22Zt0n4X0GmIjmG1l4v0RiyVWndmWYk4k8djI', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 04:32:41 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 05:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 05:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:45 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/17/2026 05:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 05:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 05:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 05:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 05:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 05:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 05:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/17/2026 05:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 05:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/17/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 05:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 06:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 06:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:05:45 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/17/2026 06:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 06:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 06:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 06:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 06:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 06:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 06:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/17/2026 06:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 06:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 06:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 06:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 06:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 06:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 06:05:52 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/17/2026 06:05:52 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/17/2026 06:05:53 AM cron_common.py ln 414 Character articles: 85
INFO 04/17/2026 06:05:53 AM create_articles.py ln 126 Character articles loaded (0.57s)
INFO 04/17/2026 06:05:53 AM create_articles.py ln 128 Setup complete (1.03s total)
INFO 04/17/2026 06:05:53 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/17/2026 06:05:53 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260417_060553_news_Hawk.log
INFO 04/17/2026 06:05:53 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/17/2026 06:05:53 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 04/17/2026 06:05:53 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/17/2026 06:05:54 AM article_creation_service.py ln 766 Loaded 85 articles for character (0.55s)
INFO 04/17/2026 06:05:54 AM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.16s)
INFO 04/17/2026 06:05:54 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/17/2026 06:05:54 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/17/2026 06:05:54 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/17/2026 06:05:55 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/17/2026 06:05:55 AM chat.py ln 159 Found 5 results
INFO 04/17/2026 06:05:55 AM article_creation_service.py ln 766 Found 5 search results (1.25s)
INFO 04/17/2026 06:05:55 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260417_060553_news_Hawk_search.md
INFO 04/17/2026 06:05:55 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/17/2026 06:06:48 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 06:06:48 AM article_creation_service.py ln 766 Generated article - Hawk’s Friday Brief: Israel–Lebanon ceasefire lands as Midwest reels; Fed warns on war drag; DHS shake‑up and markets’ supply‑shock calculus (52.44s)
INFO 04/17/2026 06:06:48 AM article_creation_service.py ln 766 Created WP post 1066 (0.10s)
INFO 04/17/2026 06:06:52 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 06:06:52 AM wp.py ln 811 Prompt: Prompt for featured image generation:
Create a visually dynamic, news-driven collage that captures the main themes of the article. The image should include: a map or outline showing the Israel–Lebanon border with a white dove or peace symbol overlay to represent the ceasefire; storm clouds or tornadoes over the Midwest US to signify severe weather; Wall Street or stock market imagery (like graphs or a digital ticker) showing volatility; and faint icons hinting at the Department of Homeland Security (such as a badge or the US flag), representing political shake-ups. The overall aesthetic should be urgent yet polished, conveying the interconnectedness of global diplomacy, domestic crises, and economic markets. Use a cool, semi-muted color palette with some flashes of red or orange for emphasis.
INFO 04/17/2026 06:07:16 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/17/2026 06:07:16 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/17/2026 06:07:16 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17.jpeg
INFO 04/17/2026 06:07:16 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-17.jpeg
INFO 04/17/2026 06:07:16 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDA1OTUzLCJuYmYiOjE3NzY0MDU5NTMsImV4cCI6MTc3NzAxMDc1MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.CLkqtYiLo4FT9qf4ac19lN2ki3RcMMkL6hk33Q_tL_w
INFO 04/17/2026 06:07:17 AM image.py ln 230 filename is 2026-04-17.webp
INFO 04/17/2026 06:07:17 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17.webp'>}
INFO 04/17/2026 06:07:17 AM article_creation_service.py ln 766 Featured image posted (29.39s)
INFO 04/17/2026 06:07:17 AM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 345.00 KB
INFO 04/17/2026 06:07:25 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 06:07:25 AM wp.py ln 882 Secondary Image Prompt: ### Image Generation Prompt
Create a visually striking image that complements the mood and themes of the featured image depicting geopolitical tension and severe weather. The secondary image should focus on a different perspective of these interconnected issues.
**Prompt Details:**
1. **Theme and Mood:** Capture a sense of hope amid turmoil, similar to the underlying message of the ceasefire. Use a mix of stormy and serene elements to embody conflict and resolution.
2. **Color Palette:** Use deep blues and grays to represent the turbulent weather and blend these with warm golden hues that suggest sunlight breaking through the clouds, symbolizing peace and hope.
3. **Content:**
- Show a peaceful rural landscape with a calm sky where the conflict between Israel and Lebanon is represented metaphorically (e.g., olive branches intertwined with storm clouds).
- Include imagery of crops or farmland thriving despite the looming storm clouds, symbolizing resilience amidst chaos.
- Integrate subtle elements like abstract charts representing market fluctuations, symbolizing economic stability despite geopolitical unrest.
4. **Perspective:** Aim for a panoramic view that showcases both nature’s beauty and the impacts of storms, capturing the duality of serenity and strife in a single cohesive landscape.
This imagery should reflect the complexity of current events, illustrating that even amidst turmoil, there are signs of hope and growth.
INFO 04/17/2026 06:07:46 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/17/2026 06:07:47 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/17/2026 06:07:47 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-1.jpeg
INFO 04/17/2026 06:07:47 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-17-1.jpeg
INFO 04/17/2026 06:07:47 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDA1OTUzLCJuYmYiOjE3NzY0MDU5NTMsImV4cCI6MTc3NzAxMDc1MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.CLkqtYiLo4FT9qf4ac19lN2ki3RcMMkL6hk33Q_tL_w
INFO 04/17/2026 06:07:47 AM image.py ln 230 filename is 2026-04-17-1.webp
INFO 04/17/2026 06:07:47 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-1.webp'>}
INFO 04/17/2026 06:07:47 AM article_creation_service.py ln 766 Secondary image uploaded (30.24s)
INFO 04/17/2026 06:07:47 AM wp.py ln 913 Inserted image after second paragraph
INFO 04/17/2026 06:07:48 AM wp.py ln 942 Post content updated successfully for post 1066
INFO 04/17/2026 06:07:48 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/17/2026 06:07:50 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/17/2026 06:07:59 AM chat.py ln 366 AI comment: # Verification Assessment
The article accurately represents the information contained in the provided sources. All major claims are supported by the NBC News and CNBC video transcripts cited:
**Verified claims include:** The Israel-Lebanon ceasefire announcement by President Trump, deadly Midwest weather, Acting ICE Director Todd Lyons' resignation, DHS Secretary Mullin's six-month goal statement, the Virginia tragedy involving former Lt. Gov. Justin Fairfax, Democrat Mejia's New Jersey House election win, singer D4vd's arrest, NY Fed President Williams' warnings about war impacts on growth
INFO 04/17/2026 06:07:59 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/17/2026 06:07:59 AM article_creation_service.py ln 766 Fact-check comment posted (11.24s)
INFO 04/17/2026 06:07:59 AM article_creation_service.py ln 766 Article creation completed successfully (total: 125.86s)
INFO 04/17/2026 06:07:59 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/17/2026 06:07:59 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/17/2026 06:07:59 AM create_articles.py ln 204 Script completed (126.90s total)
INFO 04/17/2026 06:40:25 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 06:40:27 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 06:40:27 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 06:40:27 AM user.py ln 62 Login response status code: 200
INFO 04/17/2026 06:40:27 AM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 06:40:27 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 06:40:27 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 06:40:27 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQwODAyNywibmJmIjoxNzc2NDA4MDI3LCJleHAiOjE3NzcwMTI4MjcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.MYlAHEzk4t_RV13sZLTxFQoYaNeJsTnNV-_FIsmGbXs","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 06:40:27 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQwODAyNywibmJmIjoxNzc2NDA4MDI3LCJleHAiOjE3NzcwMTI4MjcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.MYlAHEzk4t_RV13sZLTxFQoYaNeJsTnNV-_FIsmGbXs', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 06:40:27 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 07:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 07:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 07:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 07:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 07:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 07:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/17/2026 07:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 07:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 07:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:06:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 07:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 07:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/17/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 07:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 07:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 07:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 07:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/17/2026 07:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 07:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/17/2026 07:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 08:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 08:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 08:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 08:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 08:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 08:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/17/2026 08:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 08:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 08:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 08:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 08:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 08:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 08:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 08:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 08:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 08:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:05:52 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/17/2026 08:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 08:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 08:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 08:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/17/2026 08:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 08:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 08:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/17/2026 08:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 08:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/17/2026 08:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 09:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 09:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 09:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 09:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 09:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 09:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/17/2026 09:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 09:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 09:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:06:48 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/17/2026 09:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 09:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/17/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/17/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 09:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 09:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 09:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 09:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/17/2026 09:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 09:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 09:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 10:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 10:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 10:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 10:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 10:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 10:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 10:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 10:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 10:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/17/2026 10:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 10:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 10:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 10:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 10:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 10:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 10:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 04/17/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 10:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 10:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 10:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 10:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 10:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 10:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/17/2026 10:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 10:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/17/2026 10:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 11:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 11:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 11:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 11:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 11:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 11:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/17/2026 11:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 11:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 11:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 11:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 11:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 11:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/17/2026 11:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 11:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/17/2026 11:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 11:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/17/2026 11:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 12:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 12:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 12:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 12:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 12:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 12:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 12:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 12:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 12:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 12:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 12:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 12:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 12:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 12:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 12:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 12:06:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 12:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 12:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/17/2026 12:06:52 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/17/2026 12:06:52 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/17/2026 12:06:52 PM cron_common.py ln 414 Character articles: 36
INFO 04/17/2026 12:06:52 PM create_articles.py ln 126 Character articles loaded (0.22s)
INFO 04/17/2026 12:06:52 PM create_articles.py ln 128 Setup complete (0.66s total)
INFO 04/17/2026 12:06:52 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/17/2026 12:06:52 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260417_120652_news_Dusty.log
INFO 04/17/2026 12:06:52 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 04/17/2026 12:06:52 PM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/17/2026 12:06:52 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/17/2026 12:06:52 PM article_creation_service.py ln 766 Loaded 36 articles for character (0.22s)
INFO 04/17/2026 12:06:53 PM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.15s)
INFO 04/17/2026 12:06:53 PM article_creation_service.py ln 766 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/17/2026 12:06:53 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com']
INFO 04/17/2026 12:06:53 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/17/2026 12:06:55 PM chat.py ln 154 Tavily search for 'Latest US extreme weather' completed
INFO 04/17/2026 12:06:55 PM chat.py ln 159 Found 5 results
INFO 04/17/2026 12:06:55 PM article_creation_service.py ln 766 Found 5 search results (2.16s)
INFO 04/17/2026 12:06:55 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260417_120652_news_Dusty_search.md
INFO 04/17/2026 12:06:55 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/17/2026 12:07:09 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 12:07:09 PM article_creation_service.py ln 766 Generated article - April Chaos: Tornadoes, Floods, and an Unprecedented Spring Heatwave Grip the U.S. (14.20s)
INFO 04/17/2026 12:07:09 PM article_creation_service.py ln 766 Created WP post 1071 (0.09s)
INFO 04/17/2026 12:07:13 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 12:07:13 PM wp.py ln 811 Prompt: **Prompt for Featured Image Generation:**
Create a dramatic and visually engaging composite scene that illustrates the convergence of extreme weather across the United States in April. The image should include a tornado sweeping through a Midwestern landscape with damaged homes and uprooted trees, rivers overflowing with floodwaters, and emergency crews working to clear roads. To the right, transition into a cityscape under an intense spring heatwave, with a sun-drenched skyline, people seeking shade, and a heat shimmer effect. Overlay a weather map or radar in the sky showing storm systems and heatwave alerts across the Midwest and East Coast for added context. The overall color palette should contrast stormy grays and greens with the bright, oppressive yellows and oranges of a heatwave, capturing the chaos and diversity of these weather extremes.
INFO 04/17/2026 12:07:38 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/17/2026 12:07:39 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/17/2026 12:07:39 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-2.jpeg
INFO 04/17/2026 12:07:39 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-17-2.jpeg
INFO 04/17/2026 12:07:39 PM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDI3NjEyLCJuYmYiOjE3NzY0Mjc2MTIsImV4cCI6MTc3NzAzMjQxMiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.Tq865lRdSedPQ7NUek1lBVEJeYBHUgmA3HBWn0KhcMg
INFO 04/17/2026 12:07:39 PM image.py ln 230 filename is 2026-04-17-2.webp
INFO 04/17/2026 12:07:39 PM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-2.webp'>}
INFO 04/17/2026 12:07:40 PM article_creation_service.py ln 766 Featured image posted (30.76s)
INFO 04/17/2026 12:07:40 PM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 400.87 KB
INFO 04/17/2026 12:07:45 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/17/2026 12:07:45 PM wp.py ln 882 Secondary Image Prompt: ### Image Generation Prompt
**Title:** "Resilience Amidst Nature's Fury: A Community Striving to Recover"
**Description:** Create an image depicting a community scene in an area recently affected by severe weather events. Set the scene in a suburban neighborhood during the golden hour, with warm tones evoking the aftermath of a storm.
- **Foreground Elements:** Show local volunteers helping to clean up debris and restore the area. Include people of various ages and backgrounds, sharing water and snacks while working together. One person could be seen providing first aid, while others are using tools to remove fallen branches.
- **Background Elements:** Depict homes with visible signs of damage, such as missing roof shingles or broken windows, alongside healthy trees and blooming flowers, symbolizing hope and recovery. The sky should show a mix of fading storm clouds transitioning into a warm sunset, reflecting the mood of resilience and rejuvenation.
- **Color Palette:** Use warm yellows, oranges, and soft blues to create a sense of warmth and community spirit, contrasting with the recent turmoil.
- **Mood:** Capture a hopeful and optimistic atmosphere as the community comes together to heal and rebuild, demonstrating human strength in the face of environmental challenges.
This image should complement the featured chaotic weather scene by showcasing the human element and community response, reinforcing the themes of resilience and recovery amidst nature's extremes.
INFO 04/17/2026 12:08:12 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/17/2026 12:08:13 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/17/2026 12:08:13 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-3.jpeg
INFO 04/17/2026 12:08:13 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-17-3.jpeg
INFO 04/17/2026 12:08:13 PM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDI3NjEyLCJuYmYiOjE3NzY0Mjc2MTIsImV4cCI6MTc3NzAzMjQxMiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.Tq865lRdSedPQ7NUek1lBVEJeYBHUgmA3HBWn0KhcMg
INFO 04/17/2026 12:08:13 PM image.py ln 230 filename is 2026-04-17-3.webp
INFO 04/17/2026 12:08:13 PM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-17-3.webp'>}
INFO 04/17/2026 12:08:14 PM article_creation_service.py ln 766 Secondary image uploaded (33.72s)
INFO 04/17/2026 12:08:14 PM wp.py ln 913 Inserted image after second paragraph
INFO 04/17/2026 12:08:14 PM wp.py ln 942 Post content updated successfully for post 1071
INFO 04/17/2026 12:08:14 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/17/2026 12:08:16 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/17/2026 12:08:25 PM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in the AP News sources. All major claims are well-supported:
**Storm Details**: The article correctly reports over 1,000 reports of severe weather (hail, winds, tornadoes) across states from Texas through the Midwest to the Great Lakes, matching Source 1. The specific details about Wisconsin's state of emergency, three confirmed tornadoes, and Governor Tony Evers' declaration are accurate per Sources 1 and 3.
**Michigan Impacts**: The damage to two ice arenas, wind gusts near 70 mph at Ann Arbor, golf ball- a
INFO 04/17/2026 12:08:25 PM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/17/2026 12:08:25 PM article_creation_service.py ln 766 Fact-check comment posted (11.86s)
INFO 04/17/2026 12:08:25 PM article_creation_service.py ln 766 Article creation completed successfully (total: 93.62s)
INFO 04/17/2026 12:08:25 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/17/2026 12:08:25 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/17/2026 12:08:25 PM create_articles.py ln 204 Script completed (94.29s total)
INFO 04/17/2026 01:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:07:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 01:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:07:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 01:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 01:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 01:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 01:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 01:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 01:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 01:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:07:48 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/17/2026 01:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 01:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 01:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 01:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 01:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 01:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 01:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 01:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 01:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 01:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 01:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 01:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 01:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 01:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 01:07:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 01:07:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 01:07:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/17/2026 01:07:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 01:07:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 01:07:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 02:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 02:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 02:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 02:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 02:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 02:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 02:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 02:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 02:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 02:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 02:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 02:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 02:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 02:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 02:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 02:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 02:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/17/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 02:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 02:06:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 02:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 02:06:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/17/2026 02:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 02:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 02:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 02:56:44 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 02:56:45 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 02:56:45 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 02:56:46 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 02:56:46 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 14:56:45 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 02:56:46 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 02:56:46 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQzNzgwNiwibmJmIjoxNzc2NDM3ODA2LCJleHAiOjE3NzcwNDI2MDYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Xs3_huixcj5z2b9hC1ctYTyXZsjnEDhC9xARKiK8ly0","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 02:56:46 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQzNzgwNiwibmJmIjoxNzc2NDM3ODA2LCJleHAiOjE3NzcwNDI2MDYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Xs3_huixcj5z2b9hC1ctYTyXZsjnEDhC9xARKiK8ly0', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 02:56:46 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 03:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 03:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 03:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 03:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 03:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 03:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/17/2026 03:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 03:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 03:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 03:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 03:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 03:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 03:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 03:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 03:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 03:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 03:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 03:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 03:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 03:06:51 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 03:06:51 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 03:06:51 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/17/2026 03:06:51 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 03:06:51 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 03:06:51 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 04:05:41 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:05:42 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:05:42 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 04:05:42 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 04:05:42 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 16:05:42 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 04:05:42 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 04:05:42 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MTk0MiwibmJmIjoxNzc2NDQxOTQyLCJleHAiOjE3NzcwNDY3NDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.FqFqxmrl53Wbm_iQC9AUuvy0U9x5L77HcN5Q8LvgCOM","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 04:05:42 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MTk0MiwibmJmIjoxNzc2NDQxOTQyLCJleHAiOjE3NzcwNDY3NDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.FqFqxmrl53Wbm_iQC9AUuvy0U9x5L77HcN5Q8LvgCOM', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 04:05:42 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 04:05:43 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:05:43 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:05:43 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 04:05:43 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 04:05:43 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 16:05:43 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 04:05:43 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 04:05:43 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MTk0MywibmJmIjoxNzc2NDQxOTQzLCJleHAiOjE3NzcwNDY3NDMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.A1r1zIp7BKJAdhx1AdoV9J2ffe5WqGtZbiGJUnCG0NI","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 04:05:43 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MTk0MywibmJmIjoxNzc2NDQxOTQzLCJleHAiOjE3NzcwNDY3NDMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.A1r1zIp7BKJAdhx1AdoV9J2ffe5WqGtZbiGJUnCG0NI', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 04:05:43 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 04:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 04:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 04:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 04:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 04:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/17/2026 04:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 04:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 04:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 04:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 04:06:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 04:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 04:06:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/17/2026 04:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 04:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/17/2026 04:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 04:24:03 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:24:04 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:24:04 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 04:24:04 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 04:24:04 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 16:24:04 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 04:24:04 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 04:24:04 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MzA0NCwibmJmIjoxNzc2NDQzMDQ0LCJleHAiOjE3NzcwNDc4NDQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.GyI3U6bLF32IuIUt1yW5BQ9bTA0xzq-hWmPyJ0ac9uA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 04:24:04 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0MzA0NCwibmJmIjoxNzc2NDQzMDQ0LCJleHAiOjE3NzcwNDc4NDQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.GyI3U6bLF32IuIUt1yW5BQ9bTA0xzq-hWmPyJ0ac9uA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 04:24:04 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 04:51:19 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:51:21 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 04:51:21 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 04:51:21 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 04:51:21 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 16:51:21 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 04:51:21 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 04:51:21 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0NDY4MSwibmJmIjoxNzc2NDQ0NjgxLCJleHAiOjE3NzcwNDk0ODEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.jj5OCT-9RoaGBN4nMA9DWUtzC2EKn8UIg8IP6oatI88","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 04:51:21 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ0NDY4MSwibmJmIjoxNzc2NDQ0NjgxLCJleHAiOjE3NzcwNDk0ODEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.jj5OCT-9RoaGBN4nMA9DWUtzC2EKn8UIg8IP6oatI88', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 04:51:21 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/17/2026 05:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 05:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 05:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 05:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 05:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 05:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/17/2026 05:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 05:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 05:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 05:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 05:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 05:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 05:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 05:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 05:05:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 05:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 05:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 05:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 05:05:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 05:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 05:05:51 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/17/2026 05:05:51 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/17/2026 05:05:51 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/17/2026 05:05:51 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/17/2026 05:05:51 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/17/2026 05:05:51 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/17/2026 06:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 06:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 06:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 06:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 06:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 06:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/17/2026 06:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 06:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 06:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 06:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 06:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 06:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 07:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 07:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 07:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 07:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 07:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 07:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/17/2026 07:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 07:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 07:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 07:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 07:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 07:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 07:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 07:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 07:05:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 07:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 07:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 07:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 07:05:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 07:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/17/2026 07:05:51 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 08:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:07:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 08:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:07:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 08:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 08:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 08:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 08:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 08:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 08:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 08:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:07:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 08:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 08:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 08:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 08:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 08:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 08:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 08:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 08:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 08:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 08:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 08:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 08:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 08:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 08:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 08:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 09:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 09:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 09:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 09:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 09:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 09:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/17/2026 09:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 09:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 09:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 09:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 09:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 09:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 10:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 10:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 10:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 10:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 10:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 10:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/17/2026 10:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 10:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 10:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/17/2026 10:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 10:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 10:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 10:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/17/2026 10:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 10:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 10:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 10:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 10:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/17/2026 10:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 10:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 10:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 10:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 10:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 10:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/17/2026 11:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:45 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/17/2026 11:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/17/2026 11:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/17/2026 11:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/17/2026 11:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/17/2026 11:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/17/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/17/2026 11:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/17/2026 11:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/17/2026 11:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 11:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 11:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/17/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/17/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/17/2026 11:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/17/2026 11:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/17/2026 11:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/17/2026 11:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/17/2026 11:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/17/2026 11:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/17/2026 11:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/17/2026 11:46:59 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 11:47:02 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/17/2026 11:47:02 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/17/2026 11:47:02 PM user.py ln 62 Login response status code: 200
INFO 04/17/2026 11:47:02 PM user.py ln 63 Login response headers: {'Date': 'Fri, 17 Apr 2026 23:47:02 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/17/2026 11:47:02 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/17/2026 11:47:02 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ2OTYyMiwibmJmIjoxNzc2NDY5NjIyLCJleHAiOjE3NzcwNzQ0MjIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.By7BuZZuDnrQtsbIUpy5L5aasqVNSWbWQbTpiMRgYa8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/17/2026 11:47:02 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjQ2OTYyMiwibmJmIjoxNzc2NDY5NjIyLCJleHAiOjE3NzcwNzQ0MjIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.By7BuZZuDnrQtsbIUpy5L5aasqVNSWbWQbTpiMRgYa8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/17/2026 11:47:02 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/18/2026 12:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 12:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 12:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 12:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 12:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 12:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/18/2026 12:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 12:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 12:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 12:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 12:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 12:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:07:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:07:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 01:07:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:07:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 01:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 01:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 01:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 01:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/18/2026 01:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 01:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:07:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 01:07:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 01:07:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:07:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 01:07:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 01:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 01:07:49 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 01:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:07:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 01:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 01:07:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 01:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 01:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 01:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 02:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 02:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 02:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 02:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 02:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/18/2026 02:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 02:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 02:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 02:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 02:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 02:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 02:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 02:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 02:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 03:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 03:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 03:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 03:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 03:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 03:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 03:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 03:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 03:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 03:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 03:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 04:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 04:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 04:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 04:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 04:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 04:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 04:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 04:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 04:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 04:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 04:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 05:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 05:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 05:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 05:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 05:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 05:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 05:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 05:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 05:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 05:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 05:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 05:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 05:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 05:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 05:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 05:06:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 05:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 05:06:51 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 06:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:45 AM create_articles.py ln 93 JWT token obtained (0.49s)
INFO 04/18/2026 06:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 06:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 06:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 06:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/18/2026 06:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 06:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 06:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 06:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 06:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 06:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 06:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 06:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 06:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 06:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 06:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 06:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/18/2026 06:06:52 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/18/2026 06:06:52 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/18/2026 06:06:52 AM cron_common.py ln 414 Character articles: 86
INFO 04/18/2026 06:06:52 AM create_articles.py ln 126 Character articles loaded (0.49s)
INFO 04/18/2026 06:06:52 AM create_articles.py ln 128 Setup complete (0.93s total)
INFO 04/18/2026 06:06:52 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/18/2026 06:06:52 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260418_060652_news_Hawk.log
INFO 04/18/2026 06:06:52 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/18/2026 06:06:53 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/18/2026 06:06:53 AM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/18/2026 06:06:53 AM article_creation_service.py ln 766 Loaded 86 articles for character (0.56s)
INFO 04/18/2026 06:06:53 AM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.15s)
INFO 04/18/2026 06:06:53 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/18/2026 06:06:53 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/18/2026 06:06:53 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/18/2026 06:06:55 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/18/2026 06:06:55 AM chat.py ln 159 Found 5 results
INFO 04/18/2026 06:06:55 AM article_creation_service.py ln 766 Found 5 search results (1.33s)
INFO 04/18/2026 06:06:55 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260418_060652_news_Hawk_search.md
INFO 04/18/2026 06:06:55 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/18/2026 06:08:25 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/18/2026 06:08:25 AM article_creation_service.py ln 766 Generated article - Hawk’s Saturday Brief: Fragile calm on Israel–Lebanon front, Hormuz squeeze persists, Fed flags war drag—and culture notes from Val Kilmer to surrogacy at 40 (90.35s)
INFO 04/18/2026 06:08:25 AM article_creation_service.py ln 766 Created WP post 1076 (0.10s)
INFO 04/18/2026 06:08:29 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/18/2026 06:08:29 AM wp.py ln 811 Prompt: Prompt for featured image generation:
Create a dynamic and visually striking collage that represents the key themes of a global news weekly briefing. The image should include: a symbolic map segment of the Israel–Lebanon border faded into the background with olive branches indicating a fragile ceasefire; ships passing warily through the Strait of Hormuz with U.S. and Iranian naval silhouettes; stock market and financial icons (charts, arrows, Fed building) representing economic uncertainty; a police officer on horseback representing a viral NYC crime moment; a digital, slightly transparent portrait of Val Kilmer symbolizing AI in Hollywood; a DNA helix or surrogate mother figure for modern surrogacy and bioethics; and an astronaut or lunar spacecraft referencing Artemis II and the future of space travel. Use a modern, newsworthy color scheme (blues, greys, muted metallics) to unify the collage, with headline-like overlays or visual cues to evoke a sense of urgent current affairs.
INFO 04/18/2026 06:08:54 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/18/2026 06:08:54 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/18/2026 06:08:54 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-18.jpeg
INFO 04/18/2026 06:08:54 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-18.jpeg
INFO 04/18/2026 06:08:54 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDkyNDEzLCJuYmYiOjE3NzY0OTI0MTMsImV4cCI6MTc3NzA5NzIxMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.70_8y4ehqMxAPX_9QfdGu875rcuaEGLorU-b7j4Ppig
INFO 04/18/2026 06:08:55 AM image.py ln 230 filename is 2026-04-18.webp
INFO 04/18/2026 06:08:55 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-18.webp'>}
INFO 04/18/2026 06:08:55 AM article_creation_service.py ln 766 Featured image posted (30.33s)
INFO 04/18/2026 06:08:55 AM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 397.88 KB
INFO 04/18/2026 06:09:03 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/18/2026 06:09:03 AM wp.py ln 882 Secondary Image Prompt: Based on the featured image, which amalgamates themes of geopolitical tensions, economic analysis, and cultural elements, here's a detailed prompt for generating a complementary secondary image:
---
**Prompt for Secondary Image:**
Create an image that captures the essence of global convergence amid ongoing conflicts and the potential for peace. The scene should depict a peaceful negotiation roundtable, where representatives from various nations are engaged in dialogue.
1. **Composition**: At the center, include a table with flags representing the countries involved in the Israel-Lebanon situation, perhaps interspersed with symbols of peace (like olives or doves). Surround the table with diverse delegates who are deeply engaged in conversation, portraying a spirit of cooperation.
2. **Mood and Color Palette**: Use a harmonious color palette with soft blues, greens, and warm golds to evoke a sense of hope and unity, contrasting with the conflict depicted in the featured image.
3. **Background Elements**: Include hints of technology and nature in the background, such as a digital globe or abstract representations of data analytics. This signifies the interconnectedness of contemporary issues like economics and environment alongside geopolitical matters.
4. **Subtle References**: Integrate visual motifs related to cultural elements from the featured image, like symbols of arts and technology, to highlight society's evolution amid challenges.
5. **Overall Tone**: Ensure the tone is optimistic while maintaining a serious undertone, comparable to the fragile calm discussed in the featured article.
---
This prompt aims to maintain visual harmony while expanding on the themes exhibited in the original image, offering a fresh perspective on the convergence of diplomacy and global concerns.
INFO 04/18/2026 06:09:26 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/18/2026 06:09:26 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/18/2026 06:09:26 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-18-1.jpeg
INFO 04/18/2026 06:09:27 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-18-1.jpeg
INFO 04/18/2026 06:09:27 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NDkyNDEzLCJuYmYiOjE3NzY0OTI0MTMsImV4cCI6MTc3NzA5NzIxMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.70_8y4ehqMxAPX_9QfdGu875rcuaEGLorU-b7j4Ppig
INFO 04/18/2026 06:09:27 AM image.py ln 230 filename is 2026-04-18-1.webp
INFO 04/18/2026 06:09:27 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-18-1.webp'>}
INFO 04/18/2026 06:09:27 AM article_creation_service.py ln 766 Secondary image uploaded (31.86s)
INFO 04/18/2026 06:09:27 AM wp.py ln 913 Inserted image after second paragraph
INFO 04/18/2026 06:09:27 AM wp.py ln 942 Post content updated successfully for post 1076
INFO 04/18/2026 06:09:27 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/18/2026 06:09:29 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/18/2026 06:09:41 AM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information found in the provided sources. Key claims align well with the source material:
**Verified claims:**
- Israel-Lebanon 10-day ceasefire with celebrations in Sidon (Source 1)
- Strait of Hormuz tensions with Iran claiming it's "open" while U.S. maintains blockade (Sources 1, 2)
- Fed President Williams warning about war's impact on growth and inflation (Source 4)
- DHS Secretary Mullin's six-month goal statement (Source 4)
- Alcoa's Q2 outlook and China Beige Book CEO comments (Source 4)
- UK PM Starmer facing pressure ov
INFO 04/18/2026 06:09:41 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/18/2026 06:09:41 AM article_creation_service.py ln 766 Fact-check comment posted (14.04s)
INFO 04/18/2026 06:09:41 AM article_creation_service.py ln 766 Article creation completed successfully (total: 169.19s)
INFO 04/18/2026 06:09:41 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/18/2026 06:09:41 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/18/2026 06:09:41 AM create_articles.py ln 204 Script completed (170.13s total)
INFO 04/18/2026 07:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 07:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:46 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 07:06:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 07:06:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 07:06:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 07:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/18/2026 07:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:50 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/18/2026 07:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 07:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 07:06:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 07:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 07:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 07:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 07:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:53 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/18/2026 07:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 07:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 07:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 07:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 07:06:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 07:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 07:06:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/18/2026 07:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/18/2026 07:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/18/2026 07:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/18/2026 08:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 08:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:45 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 04/18/2026 08:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 08:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 08:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 08:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/18/2026 08:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 08:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 08:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/18/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 08:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 08:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 08:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 08:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/18/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/18/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/18/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/18/2026 09:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 09:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:06:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 09:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 09:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 09:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 09:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 09:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 09:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 09:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:06:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 09:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 09:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 09:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 09:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 09:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:06:51 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/18/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 09:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 09:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 09:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 09:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/18/2026 09:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/18/2026 09:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/18/2026 09:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/18/2026 10:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 10:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:05:45 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 10:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 10:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 10:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 10:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/18/2026 10:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 10:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 10:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 10:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 10:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 10:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 10:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 10:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 10:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 10:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:05:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 10:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 10:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 10:05:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 10:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 10:05:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 10:05:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 10:05:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/18/2026 10:05:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/18/2026 10:05:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/18/2026 10:05:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/18/2026 11:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 11:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 11:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 11:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 11:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 11:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 11:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 11:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 11:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 11:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 11:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 11:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 11:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 11:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 11:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 11:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 11:06:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 11:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 11:06:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/18/2026 11:06:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/18/2026 11:06:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/18/2026 11:06:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/18/2026 11:06:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/18/2026 11:06:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/18/2026 12:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 12:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 12:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 12:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 12:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 12:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/18/2026 12:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 12:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 12:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:05:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 12:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 12:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 12:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 12:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 12:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 12:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 12:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 12:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 12:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 01:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 01:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 01:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 01:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 01:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/18/2026 01:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 01:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 01:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 01:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 01:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 01:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 01:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 01:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 01:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 01:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 01:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 01:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 02:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 02:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 02:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 02:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 02:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/18/2026 02:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 02:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 02:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 02:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 02:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 02:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 02:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 02:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 02:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 02:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 02:06:51 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 02:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 02:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 02:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 02:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 02:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 02:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 03:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 03:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 03:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 03:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 03:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 03:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 03:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 03:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 03:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 03:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 03:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 03:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 03:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 03:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 03:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 03:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 03:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 03:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 04:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 04:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 04:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 04:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/18/2026 04:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 04:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 04:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 04:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 04:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 04:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 04:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 04:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 04:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 04:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 04:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 04:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 04:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 05:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 05:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 05:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 05:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 05:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/18/2026 05:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 05:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 05:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 05:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 05:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 05:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 05:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 05:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 06:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:46 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 04/18/2026 06:06:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 06:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 06:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 06:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/18/2026 06:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 06:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 06:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 06:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 06:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 06:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 06:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 06:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 06:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 06:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 06:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 06:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 06:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 07:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 07:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 07:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 07:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 07:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 07:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/18/2026 07:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 07:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 07:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 07:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 07:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 07:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 07:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 07:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 07:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 08:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 08:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/18/2026 08:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 08:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 08:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 08:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/18/2026 08:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 08:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 08:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:48 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/18/2026 08:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 08:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 08:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 08:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 08:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 08:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 08:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 08:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 08:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 09:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 09:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 09:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 09:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 09:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 09:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/18/2026 09:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 09:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 09:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 09:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 09:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 09:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 09:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 09:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 09:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 09:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 09:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 09:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 10:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:06:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 10:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:07:08 PM create_articles.py ln 93 JWT token obtained (20.55s)
INFO 04/18/2026 10:07:08 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 10:07:08 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:07:08 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 10:07:08 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 10:07:08 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/18/2026 10:07:08 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 10:07:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:07:11 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 10:07:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:07:11 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/18/2026 10:07:12 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 10:07:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:07:12 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 10:07:12 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 10:07:12 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/18/2026 10:07:12 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 10:07:15 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 10:07:15 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 10:07:15 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 10:07:15 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/18/2026 10:07:15 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 10:07:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 10:07:15 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 10:07:15 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 10:07:15 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 10:07:15 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 11:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/18/2026 11:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 11:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/18/2026 11:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/18/2026 11:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/18/2026 11:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/18/2026 11:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 11:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/18/2026 11:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/18/2026 11:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/18/2026 11:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/18/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/18/2026 11:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/18/2026 11:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/18/2026 11:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/18/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/18/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/18/2026 11:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/18/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/18/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/18/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/18/2026 11:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 12:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 12:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:45 AM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 04/19/2026 12:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 12:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 12:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 12:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/19/2026 12:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 12:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 12:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:48 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/19/2026 12:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 12:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 12:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 12:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 04/19/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 12:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/19/2026 12:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 01:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 01:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 01:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 01:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 01:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/19/2026 01:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 01:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 01:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 01:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 01:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 01:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 02:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 02:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 02:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 02:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 02:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 02:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 02:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 02:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 02:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 02:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 02:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 02:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 02:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 02:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 03:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 03:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 03:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 03:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 03:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/19/2026 03:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 03:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:05:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 03:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 03:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 03:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 03:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 03:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 03:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:05:51 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 03:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 03:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 04:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:05:45 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 04:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 04:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 04:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 04:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/19/2026 04:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 04:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 04:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 04:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 04:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 04:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:07:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:07:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 05:07:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:07:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 05:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 05:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 05:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 05:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 05:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 05:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:07:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 05:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 05:07:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:07:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 05:07:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 05:07:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 05:07:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 05:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:07:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 05:07:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 05:07:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:07:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 05:07:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 05:07:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 05:07:51 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 06:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:45 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 06:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 06:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 06:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 06:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/19/2026 06:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 06:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 06:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 06:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 06:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 06:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 06:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 06:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:51 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 06:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 06:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 06:06:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 06:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 06:06:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 06:06:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 06:06:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/19/2026 06:06:51 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/19/2026 06:06:51 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/19/2026 06:06:52 AM cron_common.py ln 414 Character articles: 87
INFO 04/19/2026 06:06:52 AM create_articles.py ln 126 Character articles loaded (0.47s)
INFO 04/19/2026 06:06:52 AM create_articles.py ln 128 Setup complete (0.96s total)
INFO 04/19/2026 06:06:52 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/19/2026 06:06:52 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260419_060652_news_Hawk.log
INFO 04/19/2026 06:06:52 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/19/2026 06:06:52 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/19/2026 06:06:52 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/19/2026 06:06:53 AM article_creation_service.py ln 766 Loaded 87 articles for character (0.58s)
INFO 04/19/2026 06:06:53 AM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.15s)
INFO 04/19/2026 06:06:53 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/19/2026 06:06:53 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/19/2026 06:06:53 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/19/2026 06:06:54 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/19/2026 06:06:54 AM chat.py ln 159 Found 5 results
INFO 04/19/2026 06:06:54 AM article_creation_service.py ln 766 Found 5 search results (1.17s)
INFO 04/19/2026 06:06:54 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260419_060652_news_Hawk_search.md
INFO 04/19/2026 06:06:54 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/19/2026 06:07:41 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/19/2026 06:07:41 AM article_creation_service.py ln 766 Generated article - Hawk’s Sunday Brief: Tornadoes tear across 10 states; jet diverts on bomb scare; tankers thread Hormuz as messaging muddles; pop singer D4vd arrested (47.14s)
INFO 04/19/2026 06:07:41 AM article_creation_service.py ln 766 Created WP post 1082 (0.09s)
INFO 04/19/2026 06:07:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/19/2026 06:07:43 AM wp.py ln 811 Prompt: Featured Image Prompt:
A dynamic collage-style illustration capturing the major news themes of the week: a powerful tornado swirling over a midwestern landscape with damaged homes below; a commercial jet surrounded by flashing emergency vehicles on a runway; a convoy of large oil tankers moving through the narrow, sunlit waters of the Strait of Hormuz, watched by military vessels; a shadowy police scene suggesting an arrest connected to music, with a faint silhouette of a pop singer; and small headline-style overlays referencing global politics and championship sports. The atmosphere is urgent and dramatic, evoking the sense of multiple major events happening simultaneously across the world.
INFO 04/19/2026 06:08:07 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/19/2026 06:08:07 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/19/2026 06:08:07 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-19.jpeg
INFO 04/19/2026 06:08:07 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-19.jpeg
INFO 04/19/2026 06:08:07 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NTc4ODEyLCJuYmYiOjE3NzY1Nzg4MTIsImV4cCI6MTc3NzE4MzYxMiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.tAC8N9rmRpdLDZsSbg-fUFv269YbOivlETAeNTvbcjo
INFO 04/19/2026 06:08:08 AM image.py ln 230 filename is 2026-04-19.webp
INFO 04/19/2026 06:08:08 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-19.webp'>}
INFO 04/19/2026 06:08:08 AM article_creation_service.py ln 766 Featured image posted (26.71s)
INFO 04/19/2026 06:08:08 AM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 510.60 KB
INFO 04/19/2026 06:08:16 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/19/2026 06:08:16 AM wp.py ln 882 Secondary Image Prompt: ### Image Generation Prompt for Complementary Image:
**Title:** "Under Stormy Whispers: The Aftermath"
**Scene Description:**
Create a dramatic outdoor scene depicting the aftermath of a tornado striking a rural community. In the foreground, show swirling debris and scattered belongings amidst partially destroyed houses. The sky should be a mix of dark, ominous clouds with hints of vibrant orange and red as the sun sets behind the destruction, mirroring the tension and turmoil of the featured image's storm.
**Color Palette:**
Use deep blues and purples for the twilight sky, with fiery oranges and reds breaking through to create a sense of urgency and emotion. Ensure the ground and debris reflect muted grays and browns, indicating the devastation.
**Elements to Include:**
- Silhouettes of emergency responders assessing the damage in the distance.
- A small group of somber residents looking on, signifying concern and recovery.
- Weather elements like residual winds moving through the scene, emphasizing the lingering threat.
- Include a distant view of a helicopter monitoring the area, tying in the theme of vigilance and response.
**Mood & Thematic Elements:**
Convey a sense of resilience amidst chaos, echoing the urgent themes of upheaval and uncertainty found in the featured image. The overall feeling should be heavy yet hopeful, illustrating the community’s strength in overcoming challenges.
INFO 04/19/2026 06:08:37 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/19/2026 06:08:37 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/19/2026 06:08:37 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-19-1.jpeg
INFO 04/19/2026 06:08:37 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-19-1.jpeg
INFO 04/19/2026 06:08:37 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NTc4ODEyLCJuYmYiOjE3NzY1Nzg4MTIsImV4cCI6MTc3NzE4MzYxMiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.tAC8N9rmRpdLDZsSbg-fUFv269YbOivlETAeNTvbcjo
INFO 04/19/2026 06:08:38 AM image.py ln 230 filename is 2026-04-19-1.webp
INFO 04/19/2026 06:08:38 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-19-1.webp'>}
INFO 04/19/2026 06:08:38 AM article_creation_service.py ln 766 Secondary image uploaded (30.03s)
INFO 04/19/2026 06:08:38 AM wp.py ln 913 Inserted image after second paragraph
INFO 04/19/2026 06:08:38 AM wp.py ln 942 Post content updated successfully for post 1082
INFO 04/19/2026 06:08:38 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/19/2026 06:08:42 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/19/2026 06:08:52 AM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information contained in the provided sources. The key claims align well with the ABC News broadcast content:
**Verified claims:**
- The tornado outbreak (35 tornadoes across 10 states, Mola Lenghi's reporting, damage from California to Vermont) matches Source 1
- The United Airlines bomb threat diversion to Pittsburgh is confirmed in Source 1
- The Strait of Hormuz situation, including White House messaging confusion and Trump's statements, appears in Source 1
- The Reuters report (Source 3) about tanker convoys—four LPG carriers
INFO 04/19/2026 06:08:52 AM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/19/2026 06:08:52 AM article_creation_service.py ln 766 Fact-check comment posted (13.78s)
INFO 04/19/2026 06:08:52 AM article_creation_service.py ln 766 Article creation completed successfully (total: 120.12s)
INFO 04/19/2026 06:08:52 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/19/2026 06:08:52 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/19/2026 06:08:52 AM create_articles.py ln 204 Script completed (121.08s total)
INFO 04/19/2026 07:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 07:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 07:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 07:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 07:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 07:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 07:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 07:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 07:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 07:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 07:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 07:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 07:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 07:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 07:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 07:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:05:51 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 07:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 07:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 07:05:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 07:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 07:05:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 07:05:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 07:05:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/19/2026 07:05:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/19/2026 07:05:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/19/2026 07:05:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/19/2026 08:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 08:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 08:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 08:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 08:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 08:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/19/2026 08:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 08:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 08:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 08:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 08:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 08:06:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 08:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 08:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 08:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 08:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:51 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 08:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 08:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 08:06:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 08:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 08:06:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 08:06:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 08:06:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/19/2026 08:06:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/19/2026 08:06:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/19/2026 08:06:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/19/2026 09:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 09:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 09:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 09:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 09:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 09:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/19/2026 09:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 09:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 09:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:48 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 09:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 09:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 09:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 09:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 09:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 09:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 09:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:51 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 09:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 09:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 09:05:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 09:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 09:05:51 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 09:05:51 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 09:05:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/19/2026 09:05:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/19/2026 09:05:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/19/2026 09:05:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/19/2026 10:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 10:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 10:06:45 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/19/2026 10:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 10:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 10:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 10:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/19/2026 10:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 10:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 10:06:48 AM create_articles.py ln 88 Site config loaded (0.01s)
INFO 04/19/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/19/2026 10:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 10:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/19/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 10:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 10:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 10:06:53 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/19/2026 10:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 10:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 10:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 10:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 10:06:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 10:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 10:06:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/19/2026 10:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/19/2026 10:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/19/2026 10:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/19/2026 11:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 11:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:06:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 11:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 11:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 11:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 11:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/19/2026 11:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 11:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 11:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:06:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 11:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 11:06:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:06:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 11:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 11:06:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/19/2026 11:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/19/2026 11:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/19/2026 11:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/19/2026 11:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/19/2026 11:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/19/2026 12:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 12:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 12:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 12:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 12:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 12:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 12:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 12:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 12:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 12:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 12:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 12:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 12:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 12:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 12:06:51 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 12:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 12:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 12:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 12:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 12:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 12:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 01:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:05:45 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/19/2026 01:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 01:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 01:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 01:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/19/2026 01:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:05:50 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 01:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 01:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 01:05:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 01:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 01:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 01:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 01:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 01:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 01:05:54 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/19/2026 01:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 01:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 01:05:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 01:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 01:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/19/2026 01:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 02:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:45 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/19/2026 02:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 02:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 02:05:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 02:05:46 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/19/2026 02:05:46 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:50 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/19/2026 02:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 02:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 02:05:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 02:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 02:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 02:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 02:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 02:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 02:05:54 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/19/2026 02:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 02:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 02:05:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 02:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 02:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/19/2026 02:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 03:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 03:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 03:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 03:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 03:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 03:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 03:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 03:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 03:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 03:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 03:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 03:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 03:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 03:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 03:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 03:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 03:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 03:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 04:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 04:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 04:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 04:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/19/2026 04:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/19/2026 04:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 04:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 04:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 05:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 05:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 05:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 05:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 05:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/19/2026 05:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 05:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 05:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 05:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 05:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 05:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 05:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 05:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 05:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 05:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 05:06:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 05:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 06:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 06:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 06:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 06:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 06:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/19/2026 06:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 06:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 06:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 06:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 06:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 06:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 06:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 06:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 06:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 06:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 06:06:51 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 06:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 06:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 06:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 06:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 06:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 06:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 07:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:07:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 07:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:07:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 07:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 07:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 07:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 07:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/19/2026 07:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 07:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 07:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:07:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 07:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 07:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 07:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 07:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 07:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 07:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 07:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 07:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 07:07:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 07:07:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 07:07:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 07:07:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 07:07:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 07:07:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 07:07:51 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 08:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 08:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 08:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 08:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 08:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 08:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/19/2026 08:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 08:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 08:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 08:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 08:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 08:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 09:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 09:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 09:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 09:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 09:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 09:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/19/2026 09:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 09:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 09:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 09:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 09:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 09:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 09:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 09:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 09:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 09:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 09:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 09:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 10:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 10:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 10:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/19/2026 10:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 10:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 10:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 10:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/19/2026 10:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 10:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 10:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 10:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/19/2026 10:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 10:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 10:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 10:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 10:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 10:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 10:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 10:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 11:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:07:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/19/2026 11:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:07:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/19/2026 11:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/19/2026 11:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/19/2026 11:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/19/2026 11:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/19/2026 11:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 11:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/19/2026 11:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:07:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/19/2026 11:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/19/2026 11:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/19/2026 11:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 11:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 11:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/19/2026 11:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/19/2026 11:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/19/2026 11:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/19/2026 11:07:51 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/19/2026 11:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/19/2026 11:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/19/2026 11:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/19/2026 11:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/19/2026 11:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/19/2026 11:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 12:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 12:05:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 12:05:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 12:05:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 12:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 12:05:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:50 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/20/2026 12:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 12:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 12:05:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 12:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 12:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 12:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 12:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 12:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 12:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 12:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 12:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:40:32 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 12:40:35 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 12:40:35 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 12:40:35 AM user.py ln 62 Login response status code: 200
INFO 04/20/2026 12:40:35 AM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 00:40:35 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 12:40:35 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 12:40:35 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjY0NTYzNSwibmJmIjoxNzc2NjQ1NjM1LCJleHAiOjE3NzcyNTA0MzUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fT1U45UiwnaPe3bQl0gxbNJCUGBSJBqahNMPWfB-MF0","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 12:40:35 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjY0NTYzNSwibmJmIjoxNzc2NjQ1NjM1LCJleHAiOjE3NzcyNTA0MzUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fT1U45UiwnaPe3bQl0gxbNJCUGBSJBqahNMPWfB-MF0', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 12:40:35 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 01:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 01:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:05:46 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 01:05:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 01:05:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:05:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 01:05:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 01:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/20/2026 01:05:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 01:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 01:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:05:50 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 01:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 01:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 01:05:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 01:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 01:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 01:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 01:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 01:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 01:05:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 01:05:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 01:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 01:05:54 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 02:07:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:07:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 02:07:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:07:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 02:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 02:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 02:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 02:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/20/2026 02:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 02:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:07:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 02:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:07:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 02:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 02:07:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:07:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 02:07:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 02:07:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 02:07:48 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 02:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:07:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 02:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:07:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 02:07:51 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 02:07:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:07:51 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 02:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 02:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 02:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 03:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 03:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:07:46 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 04/20/2026 03:07:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 03:07:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:07:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 03:07:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 03:07:46 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 04/20/2026 03:07:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 03:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 03:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:07:51 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/20/2026 03:07:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 03:07:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:07:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 03:07:51 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 03:07:51 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 03:07:51 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 03:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 03:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:07:56 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 04/20/2026 03:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 03:07:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 03:07:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 03:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 03:07:56 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 04:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 04:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 04:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 04:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 04:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 04:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 04:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:48 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/20/2026 04:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 04:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:48 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 04:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 04:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 04:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:51 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 04:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 04:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:23:17 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 04:23:20 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 04:23:20 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 04:23:21 AM user.py ln 62 Login response status code: 200
INFO 04/20/2026 04:23:21 AM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 04:23:20 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 04:23:21 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 04:23:21 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjY1OTAwMSwibmJmIjoxNzc2NjU5MDAxLCJleHAiOjE3NzcyNjM4MDEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.wActB8IGPsss7NgXuC-hClTb4W7BnlJmXeTCywf76MY","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 04:23:21 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjY1OTAwMSwibmJmIjoxNzc2NjU5MDAxLCJleHAiOjE3NzcyNjM4MDEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.wActB8IGPsss7NgXuC-hClTb4W7BnlJmXeTCywf76MY', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 04:23:21 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 05:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 05:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:06:45 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 05:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 05:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 05:06:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 05:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/20/2026 05:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:06:49 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/20/2026 05:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 05:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 05:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 05:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 05:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 05:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 05:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:06:53 AM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 04/20/2026 05:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 05:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 05:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 05:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 05:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 06:07:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:07:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 06:07:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:07:45 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/20/2026 06:07:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 06:07:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:07:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 06:07:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 06:07:45 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/20/2026 06:07:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 06:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 06:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:07:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/20/2026 06:07:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 06:07:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:07:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 06:07:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 06:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 06:07:49 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 06:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 06:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:07:53 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/20/2026 06:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 06:07:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:07:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 06:07:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 06:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 06:07:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 06:07:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 06:07:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 06:07:53 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/20/2026 06:07:53 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/20/2026 06:07:53 AM cron_common.py ln 414 Character articles: 88
INFO 04/20/2026 06:07:53 AM create_articles.py ln 126 Character articles loaded (0.57s)
INFO 04/20/2026 06:07:53 AM create_articles.py ln 128 Setup complete (1.05s total)
INFO 04/20/2026 06:07:53 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/20/2026 06:07:53 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260420_060753_news_Hawk.log
INFO 04/20/2026 06:07:53 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/20/2026 06:07:54 AM article_creation_service.py ln 766 WordPress authentication successful (0.37s)
INFO 04/20/2026 06:07:54 AM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/20/2026 06:07:54 AM article_creation_service.py ln 766 Loaded 88 articles for character (0.59s)
INFO 04/20/2026 06:07:55 AM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.18s)
INFO 04/20/2026 06:07:55 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/20/2026 06:07:55 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/20/2026 06:07:55 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/20/2026 06:07:56 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/20/2026 06:07:56 AM chat.py ln 159 Found 5 results
INFO 04/20/2026 06:07:56 AM article_creation_service.py ln 766 Found 5 search results (1.71s)
INFO 04/20/2026 06:07:56 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260420_060753_news_Hawk_search.md
INFO 04/20/2026 06:07:56 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/20/2026 06:08:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 06:08:43 AM article_creation_service.py ln 766 Generated article - Hawk’s Monday Brief: Markets cheer Hormuz opening, AI alliances sweep industry, and Seoul–Delhi put ‘special’ ties in focus (46.62s)
INFO 04/20/2026 06:08:43 AM article_creation_service.py ln 766 Created WP post 1087 (0.14s)
INFO 04/20/2026 06:08:45 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 06:08:45 AM wp.py ln 811 Prompt: Prompt for generating a featured image:
Create a dynamic and modern composite image that visually captures the major themes of the Monday market brief: A tranquil Strait of Hormuz with passing oil tankers to represent easing U.S.–Iran tensions; a soaring stock market graph to signify markets’ positive response; futuristic AI robotic arms and digital twin holograms symbolizing new industrial AI alliances; and, in the foreground, the flags of India and South Korea intertwined or their leaders shaking hands, highlighting the “Special Strategic Partnership” state visit. The overall mood should be optimistic and energetic, evoking global diplomacy, technological progress, and economic momentum.
INFO 04/20/2026 06:09:13 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/20/2026 06:09:13 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/20/2026 06:09:13 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20.jpeg
INFO 04/20/2026 06:09:13 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-20.jpeg
INFO 04/20/2026 06:09:13 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NjY1Mjc0LCJuYmYiOjE3NzY2NjUyNzQsImV4cCI6MTc3NzI3MDA3NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.RG-C-QAYWvyoUdnmCBzeUtXcBk2fYPzm4fd1jBwwn9s
INFO 04/20/2026 06:09:13 AM image.py ln 230 filename is 2026-04-20.webp
INFO 04/20/2026 06:09:13 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20.webp'>}
INFO 04/20/2026 06:09:14 AM article_creation_service.py ln 766 Featured image posted (31.02s)
INFO 04/20/2026 06:09:14 AM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 380.27 KB
INFO 04/20/2026 06:09:20 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 06:09:20 AM wp.py ln 882 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create an image that captures the spirit of international collaboration and technological advancement, featuring a broader view of a high-tech city skyline at twilight. The sky should showcase warm hues of orange and purple, mirroring the emotional tone of camaraderie and progress established in the original image.
In the foreground, incorporate elements like a diverse group of engineers and tech innovators—both men and women—gathering around a digital display that highlights data analytics and AI technology. They should be engaged in discussion about the future of technology and global partnerships, symbolizing the deepening ties between Asia and beyond.
Incorporate architectural motifs inspired by both Indian and South Korean culture in the skyline, blending traditional designs with futuristic aesthetics. Additionally, include subtle motifs like circuit patterns in the sky or holographic projections of various technologies on the buildings, enhancing the theme of innovation while complementing the original image’s focus on AI and diplomacy.
INFO 04/20/2026 06:09:44 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/20/2026 06:09:44 AM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/20/2026 06:09:44 AM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-1.jpeg
INFO 04/20/2026 06:09:44 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-20-1.jpeg
INFO 04/20/2026 06:09:44 AM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2NjY1Mjc0LCJuYmYiOjE3NzY2NjUyNzQsImV4cCI6MTc3NzI3MDA3NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.RG-C-QAYWvyoUdnmCBzeUtXcBk2fYPzm4fd1jBwwn9s
INFO 04/20/2026 06:09:44 AM image.py ln 230 filename is 2026-04-20-1.webp
INFO 04/20/2026 06:09:44 AM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-1.webp'>}
INFO 04/20/2026 06:09:45 AM article_creation_service.py ln 766 Secondary image uploaded (30.70s)
INFO 04/20/2026 06:09:45 AM wp.py ln 913 Inserted image after second paragraph
INFO 04/20/2026 06:09:45 AM wp.py ln 942 Post content updated successfully for post 1087
INFO 04/20/2026 06:09:45 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/20/2026 06:09:47 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
ERROR 04/20/2026 06:09:47 AM article_creation_service.py ln 766 Fact-check failed - Attempted to access streaming response content, without having called `read()`.
INFO 04/20/2026 06:09:47 AM article_creation_service.py ln 766 Article creation completed successfully (total: 113.89s)
INFO 04/20/2026 06:09:47 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/20/2026 06:09:47 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/20/2026 06:09:47 AM create_articles.py ln 204 Script completed (114.95s total)
INFO 04/20/2026 07:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 07:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:06:46 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/20/2026 07:06:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 07:06:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:06:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 07:06:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 07:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/20/2026 07:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 07:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:06:50 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/20/2026 07:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 07:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 07:06:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 07:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/20/2026 07:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 07:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:06:55 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/20/2026 07:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 07:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 07:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 07:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/20/2026 07:06:55 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 07:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 07:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/20/2026 07:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 07:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.10s)
INFO 04/20/2026 07:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 08:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 08:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:45 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/20/2026 08:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 08:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 08:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 08:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 08:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 08:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:53 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/20/2026 08:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 08:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 08:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 08:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 08:06:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 08:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 08:06:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/20/2026 08:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 08:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 08:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 09:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:05:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 09:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:05:45 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/20/2026 09:05:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 09:05:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:05:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 09:05:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 09:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 09:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 09:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:05:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 09:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 09:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 09:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/20/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 09:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 09:05:52 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 09:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 09:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/20/2026 09:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 09:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 09:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 10:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 10:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:06:45 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/20/2026 10:06:45 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 10:06:45 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:06:45 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 10:06:45 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 10:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 10:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 10:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:06:48 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 10:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/20/2026 10:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 10:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/20/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 10:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 10:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 10:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 10:06:53 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 10:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 10:06:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/20/2026 10:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 10:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 10:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 11:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:06:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 11:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 11:06:46 AM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/20/2026 11:06:46 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 11:06:46 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 11:06:46 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 11:06:46 AM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 11:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/20/2026 11:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 11:06:50 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/20/2026 11:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 11:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 11:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 11:06:50 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 11:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 11:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 11:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 11:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 11:06:54 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 11:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 11:06:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 11:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 11:06:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 11:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 11:06:54 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/20/2026 11:06:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 11:06:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/20/2026 11:06:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 11:06:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/20/2026 11:06:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 12:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 12:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 12:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 12:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 12:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 12:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 12:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 12:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 12:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 12:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 12:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 12:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 12:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 12:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 12:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 12:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 12:05:51 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 12:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 12:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 12:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 12:05:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 12:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 12:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/20/2026 12:05:52 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/20/2026 12:05:52 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/20/2026 12:05:52 PM cron_common.py ln 414 Character articles: 37
INFO 04/20/2026 12:05:52 PM create_articles.py ln 126 Character articles loaded (0.22s)
INFO 04/20/2026 12:05:52 PM create_articles.py ln 128 Setup complete (0.70s total)
INFO 04/20/2026 12:05:52 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/20/2026 12:05:52 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260420_120552_news_Dusty.log
INFO 04/20/2026 12:05:52 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 04/20/2026 12:05:52 PM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/20/2026 12:05:52 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/20/2026 12:05:52 PM article_creation_service.py ln 766 Loaded 37 articles for character (0.23s)
INFO 04/20/2026 12:05:53 PM article_creation_service.py ln 766 Got 27 categories and 62 tags (0.15s)
INFO 04/20/2026 12:05:53 PM article_creation_service.py ln 766 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/20/2026 12:05:53 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com']
INFO 04/20/2026 12:05:53 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/20/2026 12:05:55 PM chat.py ln 154 Tavily search for 'Latest US extreme weather' completed
INFO 04/20/2026 12:05:55 PM chat.py ln 159 Found 5 results
INFO 04/20/2026 12:05:55 PM article_creation_service.py ln 766 Found 5 search results (2.25s)
INFO 04/20/2026 12:05:55 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260420_120552_news_Dusty_search.md
INFO 04/20/2026 12:05:55 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/20/2026 12:06:16 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 12:06:16 PM article_creation_service.py ln 766 Generated article - April 2026 Heatwave and Storm Siege: Records Broken, Communities Tested Across Eastern U.S. (20.84s)
INFO 04/20/2026 12:06:16 PM article_creation_service.py ln 766 Created WP post 1092 (0.13s)
INFO 04/20/2026 12:06:19 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 12:06:19 PM wp.py ln 811 Prompt: Prompt for featured image generation:
Create a dramatic composite image depicting the extreme weather events of April 2026 across the eastern U.S. The left side shows a sunbaked, overheated city skyline (such as New York City or Atlanta) shimmering in intense heat, with temperature records displayed on digital signs and people seeking shade or hydration. The right side contrasts with dark, stormy skies over a Midwestern or Great Lakes town, highlighting swirling tornadoes, heavy rain, lightning bolts, and flooded streets, with emergency crews or residents responding to storm damage. Integrate drought-stricken landscapes and ominous clouds to convey urgency and the clash between heatwave and storms. The overall mood should be urgent, intense, and a powerful visual summary of historic, destructive spring weather extremes.
INFO 04/20/2026 12:06:44 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/20/2026 12:06:45 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/20/2026 12:06:45 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-2.jpeg
INFO 04/20/2026 12:06:45 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-20-2.jpeg
INFO 04/20/2026 12:06:45 PM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2Njg2NzUyLCJuYmYiOjE3NzY2ODY3NTIsImV4cCI6MTc3NzI5MTU1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QIJ2Me8NdoWQ637T07uSsB0Z5Dh5YRleDEluYguziMk
INFO 04/20/2026 12:06:45 PM image.py ln 230 filename is 2026-04-20-2.webp
INFO 04/20/2026 12:06:45 PM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-2.webp'>}
INFO 04/20/2026 12:06:46 PM article_creation_service.py ln 766 Featured image posted (29.92s)
INFO 04/20/2026 12:06:46 PM wp.py ln 832 Using vision analysis for secondary image. Featured image base64 size: 407.73 KB
INFO 04/20/2026 12:06:50 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/20/2026 12:06:50 PM wp.py ln 882 Secondary Image Prompt: ### Secondary Image Generation Prompt
**Prompt:** Create a dramatic outdoor scene that captures the aftermath of the severe storms impacting the Midwest and Great Lakes during the April 2026 weather crisis. The image should portray an urban environment bathed in a moody twilight atmosphere, with dark, ominous clouds overhead and hints of sunlight breaking through.
In the foreground, illustrate a community coming together to aid one another in recovery efforts, with residents clearing debris from fallen trees and helping each other navigate through flooded streets. Include emergency responders engaging with the community, showcasing their efforts to restore order and provide support.
In the background, depict damaged buildings and vehicles surrounded by waterlogged streets, with evidence of recent storms, such as downed power lines and emergency vehicles. Use a color palette of deep blues, purples, and hints of orange to convey urgency and resilience, maintaining a balance that complements the themes of community strength amidst adversity. The overall mood should evoke a sense of hope and recovery, contrasting with the chaos of the recent storms while echoing the mood of the featured image.
INFO 04/20/2026 12:07:13 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/20/2026 12:07:13 PM image.py ln 120 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/20/2026 12:07:13 PM image.py ln 140 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-3.jpeg
INFO 04/20/2026 12:07:13 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-20-3.jpeg
INFO 04/20/2026 12:07:13 PM image.py ln 217 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2Njg2NzUyLCJuYmYiOjE3NzY2ODY3NTIsImV4cCI6MTc3NzI5MTU1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QIJ2Me8NdoWQ637T07uSsB0Z5Dh5YRleDEluYguziMk
INFO 04/20/2026 12:07:13 PM image.py ln 230 filename is 2026-04-20-3.webp
INFO 04/20/2026 12:07:13 PM image.py ln 241 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-20-3.webp'>}
INFO 04/20/2026 12:07:14 PM article_creation_service.py ln 766 Secondary image uploaded (28.27s)
INFO 04/20/2026 12:07:14 PM wp.py ln 913 Inserted image after second paragraph
INFO 04/20/2026 12:07:14 PM wp.py ln 942 Post content updated successfully for post 1092
INFO 04/20/2026 12:07:14 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/20/2026 12:07:16 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/20/2026 12:07:28 PM chat.py ln 366 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in the source material. The key claims align well with the reputable news sources:
**Heatwave Details**: The article correctly describes the unprecedented April heat threatening records from Georgia to New York City, with temperatures approaching or exceeding 90°F. Source 1 (AP News) confirms this pattern is "borderline unprecedented" for duration and that "records challenged from basically Georgia all the way up through the New York City area." The forecast for "widespread lower to even middle 90s" in the Car
INFO 04/20/2026 12:07:28 PM chat.py ln 545 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/20/2026 12:07:28 PM article_creation_service.py ln 766 Fact-check comment posted (13.66s)
INFO 04/20/2026 12:07:28 PM article_creation_service.py ln 766 Article creation completed successfully (total: 95.91s)
INFO 04/20/2026 12:07:28 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/20/2026 12:07:28 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/20/2026 12:07:28 PM create_articles.py ln 204 Script completed (96.62s total)
INFO 04/20/2026 01:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 01:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:06:45 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/20/2026 01:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 01:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 01:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 01:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 01:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/20/2026 01:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 01:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/20/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 01:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 01:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 01:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 01:06:53 PM create_articles.py ln 93 JWT token obtained (0.66s)
INFO 04/20/2026 01:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 01:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 01:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 01:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 01:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/20/2026 01:06:54 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 01:06:54 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 01:06:54 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/20/2026 01:06:54 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 01:06:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/20/2026 01:06:54 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 02:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 02:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 02:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 02:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 02:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 02:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 02:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 02:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 02:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 02:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 02:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 02:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 02:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 02:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 02:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 02:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 02:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 02:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 02:06:52 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 02:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 02:06:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/20/2026 02:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 02:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 02:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 03:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 03:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/20/2026 03:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 03:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 03:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 03:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/20/2026 03:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/20/2026 03:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 03:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 03:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 03:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 03:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 03:06:53 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/20/2026 03:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 03:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 03:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/20/2026 03:06:53 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 03:06:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 03:06:53 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/20/2026 03:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 03:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 03:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 03:24:25 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 04:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 04:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 04:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 04:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 04:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 04:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 04:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 04:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 04:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 04:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 04:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 04:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 04:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 04:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 04:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 04:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 04:05:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 04:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 04:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 04:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 04:05:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 04:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 04:05:51 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 04:05:51 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 04:05:51 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/20/2026 04:05:51 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 04:05:51 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/20/2026 04:05:51 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 04:36:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 04:36:19 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 04:36:19 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 04:36:20 PM user.py ln 62 Login response status code: 200
INFO 04/20/2026 04:36:20 PM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 16:36:19 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 04:36:20 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 04:36:20 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcwMjk4MCwibmJmIjoxNzc2NzAyOTgwLCJleHAiOjE3NzczMDc3ODAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.LRFsm3_TuAGQsuKqywm09lRlUn1qfN4t5atJSVCPWvM","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 04:36:20 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcwMjk4MCwibmJmIjoxNzc2NzAyOTgwLCJleHAiOjE3NzczMDc3ODAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.LRFsm3_TuAGQsuKqywm09lRlUn1qfN4t5atJSVCPWvM', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 04:36:20 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 05:05:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:05:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 05:05:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:05:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 05:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 05:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 05:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 05:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/20/2026 05:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 05:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 05:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 05:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 05:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 05:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 05:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 05:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 05:05:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 05:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 05:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 05:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 05:05:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 05:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 05:05:51 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/20/2026 05:05:51 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/20/2026 05:05:51 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/20/2026 05:05:51 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/20/2026 05:05:51 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/20/2026 05:05:51 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/20/2026 05:15:28 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 06:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:06:45 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 06:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 06:06:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 06:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:06:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 06:06:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 06:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/20/2026 06:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 06:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:06:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 06:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:06:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 06:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 06:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:06:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 06:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 06:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 06:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 06:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 06:06:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 06:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 06:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 07:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:05:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 07:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 07:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 07:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 07:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 07:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 07:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:05:48 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/20/2026 07:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 07:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 07:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 07:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 07:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 07:05:51 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/20/2026 07:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 07:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 07:05:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 07:05:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 07:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 07:05:51 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 07:25:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 07:26:00 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 07:26:00 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 07:26:00 PM user.py ln 62 Login response status code: 200
INFO 04/20/2026 07:26:00 PM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 19:26:00 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 07:26:00 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 07:26:00 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxMzE2MCwibmJmIjoxNzc2NzEzMTYwLCJleHAiOjE3NzczMTc5NjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.mGMdOnUCWmHEk9NBUUTtCWl7KiAPm0oo57oaNF5WC5Y","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 07:26:00 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxMzE2MCwibmJmIjoxNzc2NzEzMTYwLCJleHAiOjE3NzczMTc5NjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.mGMdOnUCWmHEk9NBUUTtCWl7KiAPm0oo57oaNF5WC5Y', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 07:26:00 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 07:35:07 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 07:35:08 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 07:35:08 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 07:35:09 PM user.py ln 62 Login response status code: 200
INFO 04/20/2026 07:35:09 PM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 19:35:08 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 07:35:09 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 07:35:09 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxMzcwOSwibmJmIjoxNzc2NzEzNzA5LCJleHAiOjE3NzczMTg1MDksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.QGsTPolv1J1Ws-K3uQvnQ4XJo7E1bkTjlTq77_wiqCQ","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 07:35:09 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxMzcwOSwibmJmIjoxNzc2NzEzNzA5LCJleHAiOjE3NzczMTg1MDksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.QGsTPolv1J1Ws-K3uQvnQ4XJo7E1bkTjlTq77_wiqCQ', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 07:35:09 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 08:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 08:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:46 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/20/2026 08:06:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 08:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 08:06:46 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 08:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/20/2026 08:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 08:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 08:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 08:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 08:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:51 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 08:06:51 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 08:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/20/2026 08:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 04/20/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 08:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/20/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 08:33:05 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 08:33:07 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 08:33:07 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/20/2026 08:33:07 PM user.py ln 62 Login response status code: 200
INFO 04/20/2026 08:33:07 PM user.py ln 63 Login response headers: {'Date': 'Mon, 20 Apr 2026 20:33:07 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/20/2026 08:33:07 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/20/2026 08:33:07 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxNzE4NywibmJmIjoxNzc2NzE3MTg3LCJleHAiOjE3NzczMjE5ODcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EsPmcLBifvtr7cxfHPKDZDFZvlHu-4NIf9tyG1Nbc28","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/20/2026 08:33:07 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjcxNzE4NywibmJmIjoxNzc2NzE3MTg3LCJleHAiOjE3NzczMjE5ODcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.EsPmcLBifvtr7cxfHPKDZDFZvlHu-4NIf9tyG1Nbc28', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/20/2026 08:33:07 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/20/2026 08:41:50 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/20/2026 09:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:07:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 09:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:07:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/20/2026 09:07:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 09:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:07:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 09:07:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 09:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/20/2026 09:07:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 09:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:07:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 09:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:07:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 09:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 09:07:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:07:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 09:07:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 09:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 09:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 09:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 09:07:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 09:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 09:07:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 09:07:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 09:07:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 09:07:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 09:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 09:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 09:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 10:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:05:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 10:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:05:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/20/2026 10:05:45 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/20/2026 10:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:05:45 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/20/2026 10:05:45 PM cron_common.py ln 313 filtered characters: 15
INFO 04/20/2026 10:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/20/2026 10:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 10:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:05:48 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 10:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:05:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/20/2026 10:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/20/2026 10:05:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:05:48 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/20/2026 10:05:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 10:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 10:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 10:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 10:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 10:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/20/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/20/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/20/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/20/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/20/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/20/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/20/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/20/2026 11:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:07:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/20/2026 11:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/20/2026 11:07:52 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 04/20/2026 11:07:52 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/20/2026 11:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:07:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/20/2026 11:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/20/2026 11:07:56 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 04/20/2026 11:07:56 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/20/2026 11:07:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/20/2026 11:07:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/20/2026 11:07:58 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/20/2026 11:07:58 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/20/2026 11:07:58 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 12:07:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:07:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 12:07:45 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:07:45 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 12:07:45 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 12:07:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:07:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 12:07:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:07:48 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 12:07:48 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 12:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:07:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 12:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:07:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 12:07:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 01:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 01:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 01:06:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 01:06:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 01:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:06:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 01:06:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 04/21/2026 01:06:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 01:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:06:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 01:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 01:06:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 04/21/2026 01:06:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 02:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 02:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 02:06:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 02:06:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 02:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:06:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 02:06:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 02:06:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 02:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:06:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 02:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 02:06:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.09s)
ERROR 04/21/2026 02:06:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 03:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 03:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 03:05:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 03:05:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 03:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 03:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 03:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 04/21/2026 03:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 03:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 03:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 03:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 03:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 04:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 04:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 04:05:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 04:05:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 04:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 04:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 04:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 04/21/2026 04:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 04:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 04:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 04:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 04/21/2026 04:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 05:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 05:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 05:06:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 05:06:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 05:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:06:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 05:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 05:06:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.09s)
ERROR 04/21/2026 05:06:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 05:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:06:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 05:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 05:06:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 04/21/2026 05:06:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 06:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 06:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 06:05:45 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 06:05:45 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 06:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 06:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 06:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 06:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 06:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 06:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 06:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 06:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 07:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 07:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 07:05:45 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 04/21/2026 07:05:45 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 07:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 07:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 07:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 07:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 07:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 07:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 07:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 07:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 08:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 08:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 08:05:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 08:05:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 08:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 08:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 08:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 08:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 08:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 08:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 08:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 08:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 09:07:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:07:45 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 09:07:45 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 09:07:45 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 04/21/2026 09:07:45 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 09:07:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:07:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 09:07:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 09:07:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 09:07:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 09:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:07:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 09:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 09:07:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 04/21/2026 09:07:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 10:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:06:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 10:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 10:06:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 10:06:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 10:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:06:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 10:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 10:06:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 04/21/2026 10:06:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 10:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:06:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 10:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 10:06:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 04/21/2026 10:06:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 11:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:05:44 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 11:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 11:05:44 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 11:05:44 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 11:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 11:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 11:05:47 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.03s)
ERROR 04/21/2026 11:05:47 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 11:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 11:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 11:05:50 AM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.02s)
ERROR 04/21/2026 11:05:50 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 12:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:06:44 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 12:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:06:44 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 04/21/2026 12:06:44 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 04/21/2026 12:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:06:47 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 12:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:06:47 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 04/21/2026 12:06:47 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 04/21/2026 12:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 12:06:50 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 12:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 04/21/2026 12:06:50 PM wp.py ln 55 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 04/21/2026 12:06:50 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 04/21/2026 12:24:00 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/21/2026 01:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 01:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 01:05:51 PM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/21/2026 01:05:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 01:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 01:05:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 01:05:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 01:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.44s)
INFO 04/21/2026 01:05:51 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 01:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:05:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 01:05:56 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/21/2026 01:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 01:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 01:05:56 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 01:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 01:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/21/2026 01:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 01:06:01 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 01:06:01 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 01:06:01 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 01:06:01 PM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/21/2026 01:06:01 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 01:06:01 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 01:06:01 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 01:06:01 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 01:06:01 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/21/2026 01:06:01 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 01:52:03 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/21/2026 01:54:04 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:54:05 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 01:54:05 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:54:05 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 01:54:05 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 01:54:05 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/21/2026 01:54:05 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/21/2026 01:54:13 PM user.py ln 35 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:54:13 PM user.py ln 42 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/21/2026 01:54:14 PM user.py ln 62 Login response status code: 200
INFO 04/21/2026 01:54:14 PM user.py ln 63 Login response headers: {'Date': 'Tue, 21 Apr 2026 13:54:13 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/21/2026 01:54:14 PM user.py ln 64 Login response content length: 340 bytes
INFO 04/21/2026 01:54:14 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY3Nzk2NTQsIm5iZiI6MTc3Njc3OTY1NCwiZXhwIjoxNzc3Mzg0NDU0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.F3BSeVR5vIf-iCC6huCp_mmaIfnvl2v4xXoeMX9HzTU","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/21/2026 01:54:14 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY3Nzk2NTQsIm5iZiI6MTc3Njc3OTY1NCwiZXhwIjoxNzc3Mzg0NDU0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.F3BSeVR5vIf-iCC6huCp_mmaIfnvl2v4xXoeMX9HzTU', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/21/2026 01:54:14 PM user.py ln 100 Login successful for John on https://dev.turmansolutions.ai
INFO 04/21/2026 01:54:16 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 01:54:16 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 01:54:16 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 01:54:16 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:05:45 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 02:05:45 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:05:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 02:05:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/21/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 02:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/21/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 02:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 02:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 02:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 02:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 02:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 02:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 02:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 02:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 02:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 02:05:56 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/21/2026 02:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 02:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 02:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 02:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 02:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 02:07:11 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 02:07:11 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:07:11 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 02:07:11 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:07:31 PM drupal.py ln 245 token is a80e59c728785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 02:07:31 PM drupal.py ln 247 site is None
INFO 04/21/2026 02:07:31 PM drupal.py ln 245 token is f752bc8a3a785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 02:07:31 PM drupal.py ln 247 site is None
INFO 04/21/2026 02:08:36 PM drupal.py ln 116 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/21/2026 02:08:36 PM drupal.py ln 118 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:08:36 PM drupal.py ln 121 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/21/2026 02:08:36 PM drupal.py ln 140 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'QlGlm7-dV1fFMhnHVPAENhc6ZdRS2HFcmfRiwzCDp8U', 'logout_token': 'pKeADqw8N8k_DFcL-lxkYvILOlRu6rsGzzcWCope3dE'}
INFO 04/21/2026 02:08:36 PM drupal.py ln 171 Node modified successfully. ({character.name})
INFO 04/21/2026 02:08:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 02:08:46 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 02:08:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 02:08:46 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 02:08:46 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 02:08:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 02:08:46 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 02:08:46 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 02:08:46 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 04/21/2026 02:08:46 PM cron_common.py ln 361 Single character mode: Geneva
INFO 04/21/2026 02:08:46 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/21/2026 02:08:46 PM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 04/21/2026 02:08:46 PM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 04/21/2026 02:08:46 PM cron_common.py ln 414 Character articles: 16
INFO 04/21/2026 02:08:46 PM create_articles.py ln 126 Character articles loaded (0.16s)
INFO 04/21/2026 02:08:46 PM create_articles.py ln 128 Setup complete (0.76s total)
INFO 04/21/2026 02:08:46 PM create_articles.py ln 140 Creating article for character: Geneva
INFO 04/21/2026 02:08:46 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260421_140846_dev_Geneva.log
INFO 04/21/2026 02:08:46 PM article_creation_service.py ln 766 Article creation started for character: Geneva
INFO 04/21/2026 02:08:47 PM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 04/21/2026 02:08:47 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/21/2026 02:08:47 PM article_creation_service.py ln 766 Loaded 16 articles for character (0.16s)
INFO 04/21/2026 02:08:47 PM article_creation_service.py ln 766 Got 9 categories and 32 tags (0.11s)
INFO 04/21/2026 02:08:47 PM article_creation_service.py ln 766 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 04/21/2026 02:08:47 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/21/2026 02:08:52 PM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 04/21/2026 02:08:52 PM chat.py ln 159 Found 5 results
INFO 04/21/2026 02:08:52 PM article_creation_service.py ln 766 Found 5 search results (5.28s)
INFO 04/21/2026 02:08:52 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260421_140846_dev_Geneva_search.md
INFO 04/21/2026 02:08:52 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/21/2026 02:10:26 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/21/2026 02:10:26 PM article_creation_service.py ln 766 Generated article - Agentic dev in 2026: Claude Code, Cursor, Copilot CLI, and Codex’s desktop control—how to actually combine them (94.06s)
INFO 04/21/2026 02:10:26 PM article_creation_service.py ln 766 Created WP post 808 (0.11s)
INFO 04/21/2026 02:10:30 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/21/2026 02:10:30 PM wp.py ln 833 Prompt: Prompt for generating a featured image:
"Create a sleek, modern illustration symbolizing the future of AI-powered developer workflows in 2026. Feature stylized representations of four iconic developer tools: a terminal (for Claude Code), an IDE window with project notes (for Cursor), a CLI terminal with GitHub icons (for Copilot CLI), and a desktop UI with interconnected app windows (for Codex). Show these tools interconnected with glowing lines or circuitry to suggest composability and agentic collaboration. The image should evoke innovation, automation, and synergy between different coding environments. Favor a clean, tech-forward color palette with subtle futuristic details."
INFO 04/21/2026 02:10:54 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/21/2026 02:10:55 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/21/2026 02:10:55 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-21.jpeg
INFO 04/21/2026 02:10:55 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-21.jpeg
INFO 04/21/2026 02:10:55 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY3ODA1MjcsIm5iZiI6MTc3Njc4MDUyNywiZXhwIjoxNzc3Mzg1MzI3LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.ra3d5CJe9vicYq5wmaOXUB_yCmBx0seCHGvU28gZu7E
INFO 04/21/2026 02:10:55 PM image.py ln 220 filename is 2026-04-21.webp
INFO 04/21/2026 02:10:55 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-21.webp'>}
INFO 04/21/2026 02:10:55 PM article_creation_service.py ln 766 Featured image posted (28.94s)
INFO 04/21/2026 02:10:55 PM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 235.63 KB
INFO 04/21/2026 02:10:59 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/21/2026 02:10:59 PM wp.py ln 904 Secondary Image Prompt: **Prompt for Complementary Image:**
Create an image that illustrates the concept of AI-driven coding tools in a futuristic workspace. The scene should feature a digital workspace with glowing holographic interfaces displaying code snippets, project timelines, and collaborative design elements. Include diverse programming languages showcased in various aesthetically pleasing typography. In the background, depict abstract circuit patterns and nodes, symbolizing connectivity and multi-agent collaboration. Use a color palette of deep blues, purples, and luminous accents to evoke a sense of innovation and digital advancement. The overall mood should be dynamic and forward-looking, inviting viewers to imagine efficient coding practices powered by intelligent systems.
INFO 04/21/2026 02:11:26 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/21/2026 02:11:26 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/21/2026 02:11:26 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-21-1.jpeg
INFO 04/21/2026 02:11:26 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-21-1.jpeg
INFO 04/21/2026 02:11:26 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY3ODA1MjcsIm5iZiI6MTc3Njc4MDUyNywiZXhwIjoxNzc3Mzg1MzI3LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.ra3d5CJe9vicYq5wmaOXUB_yCmBx0seCHGvU28gZu7E
INFO 04/21/2026 02:11:26 PM image.py ln 220 filename is 2026-04-21-1.webp
INFO 04/21/2026 02:11:26 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-21-1.webp'>}
INFO 04/21/2026 02:11:27 PM article_creation_service.py ln 766 Secondary image uploaded (31.15s)
INFO 04/21/2026 02:11:27 PM wp.py ln 935 Inserted image after second paragraph
INFO 04/21/2026 02:11:27 PM wp.py ln 964 Post content updated successfully for post 808
INFO 04/21/2026 02:11:27 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/21/2026 02:11:31 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/21/2026 02:11:39 PM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information from its source material. The core claims about Claude Code, Cursor, Copilot CLI, and OpenAI Codex are well-supported by the provided sources, which consistently describe these tools' capabilities and the emerging patterns in agentic development workflows.
The article's central thesis—that developers in 2026 are composing multi-tool workflows rather than choosing a single AI coding assistant—aligns closely with Source 4's discussion of convergence trends and Source 1's practical guidance on combining tools. The specifi
INFO 04/21/2026 02:11:39 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/21/2026 02:11:39 PM article_creation_service.py ln 766 Fact-check comment posted (12.56s)
INFO 04/21/2026 02:11:39 PM article_creation_service.py ln 766 Article creation completed successfully (total: 172.85s)
INFO 04/21/2026 02:11:39 PM create_articles.py ln 185 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 04/21/2026 02:11:39 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/21/2026 02:11:39 PM create_articles.py ln 204 Script completed (173.62s total)
INFO 04/21/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/21/2026 03:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 03:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 03:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 03:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 03:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/21/2026 03:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/21/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 03:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 03:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 03:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 03:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 03:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 03:06:56 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/21/2026 03:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 03:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/21/2026 03:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/21/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 04:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/21/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 04:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/21/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 04:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 04:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 05:07:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:07:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 05:07:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 05:07:51 PM create_articles.py ln 93 JWT token obtained (0.63s)
INFO 04/21/2026 05:07:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 05:07:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 05:07:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 05:07:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 05:07:51 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/21/2026 05:07:51 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 05:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:07:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 05:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 05:07:56 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/21/2026 05:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 05:07:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 05:07:56 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 05:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 05:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/21/2026 05:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 05:08:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 05:08:00 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 05:08:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 05:08:01 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/21/2026 05:08:01 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 05:08:01 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 05:08:01 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 05:08:01 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 05:08:01 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 05:08:01 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/21/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 06:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/21/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 06:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 06:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 06:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 06:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 06:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 06:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 06:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 06:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 06:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 06:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 06:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 06:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 06:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 06:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 06:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 06:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 06:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 07:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 07:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 07:06:51 PM create_articles.py ln 93 JWT token obtained (0.71s)
INFO 04/21/2026 07:06:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 07:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 07:06:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 07:06:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 07:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/21/2026 07:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 07:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:06:56 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 07:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 07:06:57 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/21/2026 07:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 07:06:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 07:06:57 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 07:06:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 07:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/21/2026 07:06:57 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 07:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 07:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 07:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 07:07:03 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 04/21/2026 07:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 07:07:03 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 07:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 07:07:03 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 07:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/21/2026 07:07:03 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 07:29:30 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/21/2026 08:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 08:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 08:05:50 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/21/2026 08:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 08:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 08:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 08:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 08:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/21/2026 08:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 08:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 08:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 08:05:53 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/21/2026 08:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 08:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 08:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 08:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 08:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 08:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 08:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 08:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 08:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 08:05:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/21/2026 08:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 08:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 08:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 08:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 08:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/21/2026 08:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 04/21/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 09:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/21/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 09:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 09:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 09:06:53 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/21/2026 09:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 09:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 09:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/21/2026 09:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 09:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 09:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 09:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 09:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/21/2026 09:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 09:06:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 09:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 09:06:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 09:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/21/2026 09:06:57 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/21/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 10:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/21/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/21/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 10:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 11:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/21/2026 11:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 11:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/21/2026 11:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/21/2026 11:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 11:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/21/2026 11:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/21/2026 11:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/21/2026 11:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 11:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/21/2026 11:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 11:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/21/2026 11:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/21/2026 11:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 11:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/21/2026 11:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 11:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 11:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/21/2026 11:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/21/2026 11:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/21/2026 11:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/21/2026 11:07:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/21/2026 11:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/21/2026 11:07:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/21/2026 11:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/21/2026 11:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/21/2026 11:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/21/2026 11:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:05:50 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/22/2026 12:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 12:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 12:05:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 12:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/22/2026 12:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 12:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 12:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:05:54 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 12:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 12:05:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 12:05:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 12:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 12:05:54 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 12:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 12:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:05:57 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/22/2026 12:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 12:05:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 12:05:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 12:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/22/2026 12:05:58 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:07:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 01:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:07:50 AM create_articles.py ln 93 JWT token obtained (0.80s)
INFO 04/22/2026 01:07:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 01:07:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:07:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 01:07:51 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 01:07:51 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 01:07:51 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:07:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 01:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:07:55 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/22/2026 01:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 01:07:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:07:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 01:07:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 01:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 01:07:55 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:07:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:07:59 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 01:07:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:07:59 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/22/2026 01:07:59 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 01:07:59 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:07:59 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 01:07:59 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 01:07:59 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 01:07:59 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:50 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 02:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 02:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 02:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 02:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 02:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 02:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:53 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 02:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 02:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 02:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 02:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 02:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 02:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/22/2026 02:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 02:06:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 02:06:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 02:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/22/2026 02:06:57 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 03:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 03:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 03:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 03:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 03:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 03:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:30:36 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:30:37 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:30:37 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 03:30:38 AM user.py ln 62 Login response status code: 200
INFO 04/22/2026 03:30:38 AM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 03:30:37 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 03:30:38 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 03:30:38 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgyODYzOCwibmJmIjoxNzc2ODI4NjM4LCJleHAiOjE3Nzc0MzM0MzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.0W_MiayPW67W-tWLYj-DhMNQI-EUghvTs_MZXID53tY","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 03:30:38 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgyODYzOCwibmJmIjoxNzc2ODI4NjM4LCJleHAiOjE3Nzc0MzM0MzgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.0W_MiayPW67W-tWLYj-DhMNQI-EUghvTs_MZXID53tY', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 03:30:38 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 03:42:36 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:42:36 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:42:36 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 03:42:36 AM user.py ln 62 Login response status code: 200
INFO 04/22/2026 03:42:36 AM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 03:42:36 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 03:42:36 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 03:42:36 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgyOTM1NiwibmJmIjoxNzc2ODI5MzU2LCJleHAiOjE3Nzc0MzQxNTYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.LFpOEOeANIJMV1hvqkeolF5YQZZF_py_uv5BPouNCrc","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 03:42:36 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgyOTM1NiwibmJmIjoxNzc2ODI5MzU2LCJleHAiOjE3Nzc0MzQxNTYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.LFpOEOeANIJMV1hvqkeolF5YQZZF_py_uv5BPouNCrc', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 03:42:36 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 03:55:00 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:55:02 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 03:55:02 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 03:55:02 AM user.py ln 62 Login response status code: 200
INFO 04/22/2026 03:55:02 AM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 03:55:02 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 03:55:02 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 03:55:02 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgzMDEwMiwibmJmIjoxNzc2ODMwMTAyLCJleHAiOjE3Nzc0MzQ5MDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.IyuINGsMvGUEq37S01Bix6cocJkX14H9DHRMqf8tISY","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 03:55:02 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NjgzMDEwMiwibmJmIjoxNzc2ODMwMTAyLCJleHAiOjE3Nzc0MzQ5MDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.IyuINGsMvGUEq37S01Bix6cocJkX14H9DHRMqf8tISY', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 03:55:02 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 04:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 04:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 04:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/22/2026 04:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 04:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 04:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 04:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 04:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 05:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 05:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 05:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:50 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 06:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 06:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 06:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 06:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/22/2026 06:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 06:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:54 AM create_articles.py ln 93 JWT token obtained (0.72s)
INFO 04/22/2026 06:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 06:06:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 06:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 06:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/22/2026 06:06:55 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 06:06:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:59 AM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 04/22/2026 06:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 06:06:59 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:59 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 06:06:59 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 06:06:59 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 06:06:59 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 06:06:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 06:06:59 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/22/2026 06:06:59 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/22/2026 06:06:59 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/22/2026 06:06:59 AM cron_common.py ln 414 Character articles: 89
INFO 04/22/2026 06:06:59 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 04/22/2026 06:06:59 AM create_articles.py ln 128 Setup complete (1.29s total)
INFO 04/22/2026 06:06:59 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/22/2026 06:06:59 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260422_060659_news_Hawk.log
INFO 04/22/2026 06:06:59 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/22/2026 06:07:00 AM article_creation_service.py ln 766 WordPress authentication successful (0.53s)
INFO 04/22/2026 06:07:00 AM article_creation_service.py ln 766 Fetched WP users (0.09s)
INFO 04/22/2026 06:07:01 AM article_creation_service.py ln 766 Loaded 89 articles for character (0.60s)
INFO 04/22/2026 06:07:01 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.17s)
INFO 04/22/2026 06:07:01 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/22/2026 06:07:01 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/22/2026 06:07:01 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/22/2026 06:07:03 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/22/2026 06:07:03 AM chat.py ln 159 Found 5 results
INFO 04/22/2026 06:07:03 AM article_creation_service.py ln 766 Found 5 search results (2.06s)
INFO 04/22/2026 06:07:03 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260422_060659_news_Hawk_search.md
INFO 04/22/2026 06:07:03 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/22/2026 06:08:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/22/2026 06:08:43 AM article_creation_service.py ln 766 Generated article - Hawk’s Wednesday Brief: Ceasefire clock extended as markets wobble; Apple shifts leadership; Artemis ramps; L.A. schools curb screens; Weinstein retrial opens; Baku lands UFC (100.19s)
INFO 04/22/2026 06:08:43 AM article_creation_service.py ln 766 Created WP post 1097 (0.11s)
INFO 04/22/2026 06:08:46 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/22/2026 06:08:46 AM wp.py ln 833 Prompt: Prompt for generating a featured image:
Create a dynamic, collage-style featured image representing the major headlines: a tense Middle Eastern cityscape at dusk with subtle imagery of peace talks and sanctions (such as documents and flags), a stock market ticker overlay with graphs showing volatility, an Apple logo morphing into a stylized portrait of a new executive, a NASA Artemis rocket launching against a night sky, students in a classroom with tablets or screens and a teacher watching, a shadowy courthouse to symbolize the Weinstein retrial, and a UFC octagon set in front of Baku’s Flame Towers, combining elements of news, technology, education, law, space, and international sports. Use cohesive modern news graphics and a unifying cool-toned color palette.
INFO 04/22/2026 06:09:10 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/22/2026 06:09:10 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/22/2026 06:09:10 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-22.jpeg
INFO 04/22/2026 06:09:10 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-22.jpeg
INFO 04/22/2026 06:09:10 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2ODM4MDIwLCJuYmYiOjE3NzY4MzgwMjAsImV4cCI6MTc3NzQ0MjgyMCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TRZcL9WUcMvSzpYXFdJ8OXhrVeVFs2sulQmZ7BNsJog
INFO 04/22/2026 06:09:11 AM image.py ln 220 filename is 2026-04-22.webp
INFO 04/22/2026 06:09:11 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-22.webp'>}
INFO 04/22/2026 06:09:11 AM article_creation_service.py ln 766 Featured image posted (28.09s)
INFO 04/22/2026 06:09:11 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 403.77 KB
INFO 04/22/2026 06:09:18 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/22/2026 06:09:18 AM wp.py ln 904 Secondary Image Prompt: ### Prompt for Complementary Image
Create a dynamic visual representation that captures the current global landscape with a focus on resilience and hope amidst uncertainty. The image should evoke a sense of determination and innovation, featuring a diverse group of young tech enthusiasts collaborating on sustainable technologies in a vibrant urban setting.
- **Color Palette:** Utilize a warm and inviting color scheme, with hues of orange and teal to mirror the tones of the featured image. Soft light should illuminate the scene, suggesting progress and optimism.
- **Mood:** Convey a sense of collective empowerment and forward-looking ambition, contrasting with the tensions depicted in the original image.
- **Content:** Include elements such as solar panels, wind turbines, and digital screens displaying innovative ideas, representing a shift towards a sustainable future. Show a blended skyline that incorporates both contemporary and nature-inspired architecture, symbolizing harmony between technology and the environment.
- **Perspective:** Capture this scene from an elevated angle, focusing on the interaction among the group, emphasizing collaboration and creativity in action.
This image should resonate with the themes of resilience, innovation, and the potential to overcome challenges highlighted in the original brief.
INFO 04/22/2026 06:09:44 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/22/2026 06:09:44 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/22/2026 06:09:44 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-22-1.jpeg
INFO 04/22/2026 06:09:44 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-22-1.jpeg
INFO 04/22/2026 06:09:44 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2ODM4MDIwLCJuYmYiOjE3NzY4MzgwMjAsImV4cCI6MTc3NzQ0MjgyMCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TRZcL9WUcMvSzpYXFdJ8OXhrVeVFs2sulQmZ7BNsJog
INFO 04/22/2026 06:09:45 AM image.py ln 220 filename is 2026-04-22-1.webp
INFO 04/22/2026 06:09:45 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-22-1.webp'>}
INFO 04/22/2026 06:09:45 AM article_creation_service.py ln 766 Secondary image uploaded (33.97s)
INFO 04/22/2026 06:09:45 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/22/2026 06:09:45 AM wp.py ln 964 Post content updated successfully for post 1097
INFO 04/22/2026 06:09:45 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/22/2026 06:09:47 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/22/2026 06:09:57 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article contains **major factual discrepancies** between its claims and the provided source material.
**Critical Misattributions:** The article cites Source 1 (a Morocco agriculture fair article) for nearly all its lead stories—Iran ceasefire extension, market reactions, and Apple leadership changes. However, Source 1's actual content is about a UFC partnership with Baku, with only brief sidebar headlines mentioning these other topics. The detailed Iran ceasefire claims citing "Vice President JD Vance" and Pakistan negotiations **do appear** in Source 4 (malaysias
INFO 04/22/2026 06:09:57 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/22/2026 06:09:57 AM article_creation_service.py ln 766 Fact-check comment posted (11.88s)
INFO 04/22/2026 06:09:57 AM article_creation_service.py ln 766 Article creation completed successfully (total: 177.79s)
INFO 04/22/2026 06:09:57 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/22/2026 06:09:57 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/22/2026 06:09:57 AM create_articles.py ln 204 Script completed (179.08s total)
INFO 04/22/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 07:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/22/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 07:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 07:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 07:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 07:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 07:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 07:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 07:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 07:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 07:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 07:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/22/2026 07:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/22/2026 07:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/22/2026 07:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/22/2026 08:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 08:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 08:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 08:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 08:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 08:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/22/2026 08:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 08:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 08:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:53 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 08:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 08:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 08:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 08:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 08:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 08:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 08:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/22/2026 08:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 08:06:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 08:06:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 08:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 08:06:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 08:06:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 08:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/22/2026 08:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/22/2026 08:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/22/2026 08:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/22/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 09:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 09:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 09:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 09:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 09:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 09:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 09:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 09:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 09:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 09:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 09:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 09:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 09:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 09:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/22/2026 09:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/22/2026 09:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/22/2026 09:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/22/2026 10:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 10:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:06:50 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/22/2026 10:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 10:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 10:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 10:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/22/2026 10:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 10:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:06:55 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 10:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:06:55 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/22/2026 10:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 10:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:06:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 10:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 10:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/22/2026 10:06:55 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 10:07:00 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:07:00 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 10:07:00 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:07:01 AM create_articles.py ln 93 JWT token obtained (0.72s)
INFO 04/22/2026 10:07:01 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 10:07:01 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:07:01 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 10:07:01 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 10:07:01 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 10:07:01 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 10:07:01 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 10:07:01 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/22/2026 10:07:01 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/22/2026 10:07:01 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/22/2026 10:07:01 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/22/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/22/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 11:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 11:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 11:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 11:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 11:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 11:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 11:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 11:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 11:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 11:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/22/2026 11:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/22/2026 11:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/22/2026 11:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/22/2026 11:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/22/2026 11:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/22/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 12:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 12:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 12:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 12:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 12:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 12:06:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 12:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 12:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 12:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 12:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 12:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 12:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 01:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 01:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 01:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:06:53 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/22/2026 01:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 01:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 01:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 01:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 01:06:54 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 01:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 01:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 01:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 01:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 01:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 01:06:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 01:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 01:06:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 01:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/22/2026 01:06:57 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 02:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 02:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 02:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 02:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 02:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 02:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 02:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 02:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 02:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 02:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 02:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 02:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 02:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 02:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 02:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 02:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 02:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 02:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 02:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 02:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/22/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 03:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 03:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:53 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/22/2026 03:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 03:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 03:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 03:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 03:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 03:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 03:06:57 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/22/2026 03:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 03:06:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 03:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 03:06:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 03:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 03:06:57 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 04:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:53 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/22/2026 04:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 04:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 04:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 04:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 04:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 04:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 04:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 04:05:56 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/22/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 04:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 04:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 04:23:34 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 04:23:35 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/22/2026 04:23:35 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 04:23:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 04:23:35 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 04:23:35 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/22/2026 04:23:36 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/22/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 05:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 05:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/22/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 05:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 05:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:53 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 05:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 05:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 05:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 05:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/22/2026 05:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 05:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 05:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 05:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 05:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 05:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 05:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 05:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 05:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 05:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 05:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:50 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/22/2026 06:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 06:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 06:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 06:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/22/2026 06:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 06:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:54 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/22/2026 06:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 06:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 06:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 06:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 06:06:54 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 06:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 06:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 06:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 06:06:58 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/22/2026 06:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 06:06:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 06:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 06:06:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 06:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 06:06:58 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 07:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/22/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 07:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 07:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 07:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 07:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 07:30:12 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 07:30:13 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 07:30:13 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 07:30:13 PM user.py ln 62 Login response status code: 200
INFO 04/22/2026 07:30:13 PM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 19:30:13 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 07:30:13 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 07:30:13 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg4NjIxMywibmJmIjoxNzc2ODg2MjEzLCJleHAiOjE3Nzc0OTEwMTMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.dfzzsMd4fOvkuWhoBqoZoYR0yg8MgP9P-H2xOpJ_gFQ","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 07:30:13 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg4NjIxMywibmJmIjoxNzc2ODg2MjEzLCJleHAiOjE3Nzc0OTEwMTMsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.dfzzsMd4fOvkuWhoBqoZoYR0yg8MgP9P-H2xOpJ_gFQ', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 07:30:13 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 07:46:02 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 07:46:04 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 07:46:04 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 07:46:04 PM user.py ln 62 Login response status code: 200
INFO 04/22/2026 07:46:04 PM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 19:46:04 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 07:46:04 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 07:46:04 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg4NzE2NCwibmJmIjoxNzc2ODg3MTY0LCJleHAiOjE3Nzc0OTE5NjQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.597XPtP4HavS4zWDZeOUzUmi69oyAg9Lj8q51M-42Us","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 07:46:04 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg4NzE2NCwibmJmIjoxNzc2ODg3MTY0LCJleHAiOjE3Nzc0OTE5NjQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.597XPtP4HavS4zWDZeOUzUmi69oyAg9Lj8q51M-42Us', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 07:46:04 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 08:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/22/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 08:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/22/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 08:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 08:42:37 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 08:42:53 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/22/2026 08:42:53 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/22/2026 08:42:54 PM user.py ln 62 Login response status code: 200
INFO 04/22/2026 08:42:54 PM user.py ln 63 Login response headers: {'Date': 'Wed, 22 Apr 2026 20:42:53 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/22/2026 08:42:54 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/22/2026 08:42:54 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg5MDU3NCwibmJmIjoxNzc2ODkwNTc0LCJleHAiOjE3Nzc0OTUzNzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.4yfllM9LyveEeI9H6TzFkJj7PQddjZmjruhs-Vl8R6c","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/22/2026 08:42:54 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njg5MDU3NCwibmJmIjoxNzc2ODkwNTc0LCJleHAiOjE3Nzc0OTUzNzQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.4yfllM9LyveEeI9H6TzFkJj7PQddjZmjruhs-Vl8R6c', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/22/2026 08:42:54 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/22/2026 09:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 09:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:06:50 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/22/2026 09:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 09:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 09:06:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 09:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/22/2026 09:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 09:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 09:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:06:54 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/22/2026 09:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 09:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 09:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 09:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 09:06:54 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 09:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 09:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 09:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 09:06:58 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/22/2026 09:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 09:06:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 09:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 09:06:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 09:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 09:06:58 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/22/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 10:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/22/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 10:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 10:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:05:53 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/22/2026 10:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 10:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 10:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 10:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/22/2026 10:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 10:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 10:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 10:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 10:05:57 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/22/2026 10:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 10:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 10:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 10:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 10:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 10:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/22/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:50 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/22/2026 11:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/22/2026 11:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/22/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/22/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/22/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 11:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/22/2026 11:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:54 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 04/22/2026 11:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/22/2026 11:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/22/2026 11:06:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 11:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/22/2026 11:06:54 PM cron_common.py ln 373 No characters selected.
INFO 04/22/2026 11:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/22/2026 11:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/22/2026 11:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/22/2026 11:06:58 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/22/2026 11:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/22/2026 11:06:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/22/2026 11:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/22/2026 11:06:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/22/2026 11:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/22/2026 11:06:58 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 12:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 12:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/23/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 12:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 12:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 12:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 12:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 12:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 12:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 12:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 01:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 01:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 01:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 01:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 01:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 01:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 01:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 01:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 01:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 01:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 01:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 01:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:01:20 AM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 04/23/2026 02:01:21 AM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 04/23/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.49s)
INFO 04/23/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 02:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 02:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 02:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:06:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 02:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 02:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 03:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/23/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 03:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 04:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:07:49 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/23/2026 04:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 04:07:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 04:07:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 04:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/23/2026 04:07:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:07:53 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 04:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 04:07:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:07:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 04:07:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 04:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 04:07:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:07:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 04:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 04:07:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 04:07:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 04:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 04:07:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 05:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/23/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 05:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 05:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 06:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/23/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 06:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 06:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 06:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 06:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 06:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 06:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 06:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 06:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 06:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 06:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 06:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/23/2026 06:06:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/23/2026 06:06:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/23/2026 06:06:56 AM cron_common.py ln 414 Character articles: 90
INFO 04/23/2026 06:06:56 AM create_articles.py ln 126 Character articles loaded (0.50s)
INFO 04/23/2026 06:06:56 AM create_articles.py ln 128 Setup complete (0.95s total)
INFO 04/23/2026 06:06:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/23/2026 06:06:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260423_060656_news_Hawk.log
INFO 04/23/2026 06:06:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/23/2026 06:06:56 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/23/2026 06:06:57 AM article_creation_service.py ln 766 Fetched WP users (0.05s)
INFO 04/23/2026 06:06:57 AM article_creation_service.py ln 766 Loaded 90 articles for character (0.50s)
INFO 04/23/2026 06:06:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/23/2026 06:06:57 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/23/2026 06:06:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/23/2026 06:06:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/23/2026 06:06:59 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/23/2026 06:06:59 AM chat.py ln 159 Found 5 results
INFO 04/23/2026 06:06:59 AM article_creation_service.py ln 766 Found 5 search results (1.74s)
INFO 04/23/2026 06:06:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260423_060656_news_Hawk_search.md
INFO 04/23/2026 06:06:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/23/2026 06:08:08 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/23/2026 06:08:08 AM article_creation_service.py ln 766 Generated article - Hawk’s Thursday Brief: Ship seizures test Iran ceasefire; Southeast wildfires rage; WV chemical leak; Kalshi crackdown; Spirit rescue nears (69.31s)
INFO 04/23/2026 06:08:08 AM article_creation_service.py ln 766 Created WP post 1102 (0.12s)
INFO 04/23/2026 06:08:12 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/23/2026 06:08:12 AM wp.py ln 833 Prompt: Prompt for Featured Image Generation:
Create a dynamic, news-style collage that visually represents the major global and national events in the article. Central foreground: a dramatic scene of masked gunmen boarding a commercial ship in the Strait of Hormuz, symbolizing maritime tensions between Iran and the US. Background left: raging wildfires consuming trees and homes, with billowing smoke—representing the Southeast US fires. Background right: hazmat-suited responders at a chemical plant with emergency vehicles, reflecting the West Virginia leak. Overlay subtle icons: an airplane flying over a red warning triangle (airline safety/fuel crisis), and Wall Street-style ticker symbols or gavel (markets and Kalshi crackdown). Add a faint US Capitol and Spirit Airlines jet in the distance to suggest political and airline rescue themes. The overall tone should convey urgency, conflict, and interconnected unfolding crises—using realistic, photojournalistic style.
INFO 04/23/2026 06:08:37 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/23/2026 06:08:38 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/23/2026 06:08:38 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-23.jpeg
INFO 04/23/2026 06:08:38 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-23.jpeg
INFO 04/23/2026 06:08:38 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2OTI0NDE2LCJuYmYiOjE3NzY5MjQ0MTYsImV4cCI6MTc3NzUyOTIxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.9pOw4IsqybBEP6Qxk5dPIlo9gUq0XG5xUz-CjrSQT9g
INFO 04/23/2026 06:08:38 AM image.py ln 220 filename is 2026-04-23.webp
INFO 04/23/2026 06:08:38 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-23.webp'>}
INFO 04/23/2026 06:08:38 AM article_creation_service.py ln 766 Featured image posted (30.12s)
INFO 04/23/2026 06:08:38 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 391.45 KB
INFO 04/23/2026 06:08:44 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/23/2026 06:08:44 AM wp.py ln 904 Secondary Image Prompt: ### Secondary Image Prompt
Create an image that complements the intense and chaotic mood of the featured image, maintaining a similar color palette of reds, blacks, and dark tones. This secondary image should depict a different angle of the ongoing crises but remain thematically connected.
Visualize a scene of a collapsing building in an industrial area, with flames and smoke engulfing the structure, symbolizing the chemical leak and industrial hazards mentioned. Include emergency responders in action, wearing protective gear and attending to the situation, to illustrate the urgency of the firefighting and rescue efforts.
In the background, show a turbulent sky with swirling dark clouds and occasional flashes of lightning, reflecting the brewing severe weather conditions. A steep cliffside can be seen on one side, representing the risk of wildfires, with faint silhouettes of burning trees.
Incorporate a subtle representation of conflict, such as distant explosions or shadows of military vehicles, ensuring these elements are secondary to the main focus but serve to enhance the overall atmosphere of tension and urgency.
The overall visual should evoke feelings of alarm and instability, mirroring the crises faced in the Gulf and at home while showcasing the resilience and response of emergency services.
INFO 04/23/2026 06:09:08 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/23/2026 06:09:08 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/23/2026 06:09:08 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-23-1.jpeg
INFO 04/23/2026 06:09:08 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-23-1.jpeg
INFO 04/23/2026 06:09:08 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2OTI0NDE2LCJuYmYiOjE3NzY5MjQ0MTYsImV4cCI6MTc3NzUyOTIxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.9pOw4IsqybBEP6Qxk5dPIlo9gUq0XG5xUz-CjrSQT9g
INFO 04/23/2026 06:09:08 AM image.py ln 220 filename is 2026-04-23-1.webp
INFO 04/23/2026 06:09:08 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-23-1.webp'>}
INFO 04/23/2026 06:09:09 AM article_creation_service.py ln 766 Secondary image uploaded (30.53s)
INFO 04/23/2026 06:09:09 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/23/2026 06:09:09 AM wp.py ln 964 Post content updated successfully for post 1102
INFO 04/23/2026 06:09:09 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/23/2026 06:09:11 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/23/2026 06:09:23 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information found in its source material. The key claims align well with the provided sources:
**Iran/Maritime tensions**: Source 1 (Fox News) and Source 5 (ABC) both confirm Iranian state TV aired video of masked gunmen boarding a ship near the Strait of Hormuz after Trump extended a ceasefire. Source 2 (NBC) separately reports Iran seized commercial ships. The article's characterization of "tensions at sea spiked" following the ceasefire extension matches the source reporting.
**Wildfires**: Source 5 (ABC) explicitly describes
INFO 04/23/2026 06:09:23 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/23/2026 06:09:23 AM article_creation_service.py ln 766 Fact-check comment posted (13.83s)
INFO 04/23/2026 06:09:23 AM article_creation_service.py ln 766 Article creation completed successfully (total: 146.76s)
INFO 04/23/2026 06:09:23 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/23/2026 06:09:23 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/23/2026 06:09:23 AM create_articles.py ln 204 Script completed (147.72s total)
INFO 04/23/2026 07:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 07:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 07:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 07:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/23/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 07:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 07:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 07:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 07:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 07:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 07:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 07:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 07:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 07:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:05:56 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 07:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 07:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 07:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 07:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 07:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 07:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 07:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/23/2026 07:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/23/2026 07:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/23/2026 07:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/23/2026 08:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:06:51 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 08:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:06:51 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/23/2026 08:06:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 08:06:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:06:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 08:06:51 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 08:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/23/2026 08:06:51 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:06:55 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 08:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:06:55 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/23/2026 08:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 08:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:06:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 08:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 08:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 08:06:55 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:06:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:06:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 08:06:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:06:59 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 08:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 08:06:59 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:06:59 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 08:06:59 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 08:06:59 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 08:06:59 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 08:06:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 08:06:59 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/23/2026 08:06:59 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/23/2026 08:06:59 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/23/2026 08:06:59 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/23/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:06:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 09:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 09:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 09:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 09:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 09:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 09:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 09:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:06:53 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 09:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 09:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 09:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 09:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/23/2026 09:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 09:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 09:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/23/2026 09:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 09:06:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 09:06:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 09:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 09:06:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 09:06:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 09:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/23/2026 09:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/23/2026 09:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/23/2026 09:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/23/2026 10:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 10:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 10:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 10:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 10:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 10:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/23/2026 10:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 10:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 10:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 10:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 10:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 10:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 10:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:56 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/23/2026 10:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 10:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 10:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 10:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 10:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 10:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 10:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/23/2026 10:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/23/2026 10:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/23/2026 10:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/23/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/23/2026 11:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 11:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 11:05:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 11:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/23/2026 11:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 11:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 11:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:53 AM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 04/23/2026 11:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 11:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 11:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 11:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/23/2026 11:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 11:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 11:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:57 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/23/2026 11:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 11:05:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 11:05:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 11:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 11:05:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/23/2026 11:05:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/23/2026 11:05:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/23/2026 11:05:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/23/2026 11:05:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/23/2026 11:05:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/23/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/23/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 12:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/23/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 12:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/23/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 12:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 12:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 12:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 12:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 12:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 12:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 12:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 12:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 12:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 12:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 01:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 01:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/23/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 01:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 01:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 01:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 01:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 01:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 01:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 01:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 01:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 01:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 01:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 01:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 01:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 01:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 01:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 01:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 02:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:05:50 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/23/2026 02:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 02:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 02:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 02:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/23/2026 02:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 02:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:05:54 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/23/2026 02:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 02:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 02:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 02:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/23/2026 02:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 02:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 02:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 02:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 02:05:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 02:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 02:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 02:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 02:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 02:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 02:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:01:46 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/23/2026 03:02:51 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:02:51 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:02:51 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:02:51 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:02:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:03:15 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:03:15 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:03:15 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:03:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:03:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:03:26 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:03:26 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:03:26 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:03:26 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:03:26 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 03:03:26 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 03:03:51 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:10 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 03:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 03:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 03:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 03:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/23/2026 03:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 03:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 03:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 03:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 03:06:55 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/23/2026 03:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 03:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 03:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 03:06:59 PM user.py ln 35 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:59 PM user.py ln 42 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 03:06:59 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 03:06:59 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 15:06:59 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 03:06:59 PM user.py ln 64 Login response content length: 340 bytes
INFO 04/23/2026 03:06:59 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY5NTY4MTksIm5iZiI6MTc3Njk1NjgxOSwiZXhwIjoxNzc3NTYxNjE5LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.dE4mehSGSdGvA1-zFvFUH6eFtx93_-sAn5gc1v8fHMk","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/23/2026 03:06:59 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY5NTY4MTksIm5iZiI6MTc3Njk1NjgxOSwiZXhwIjoxNzc3NTYxNjE5LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.dE4mehSGSdGvA1-zFvFUH6eFtx93_-sAn5gc1v8fHMk', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/23/2026 03:06:59 PM user.py ln 100 Login successful for John on https://dev.turmansolutions.ai
INFO 04/23/2026 03:06:59 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:06:59 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:06:59 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:06:59 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 03:06:59 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 03:07:28 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:07:29 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:07:29 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:07:29 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:07:29 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:07:29 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 03:07:29 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 03:08:58 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:08:58 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 03:08:58 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:08:58 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 03:08:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:08:58 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 03:08:58 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 03:12:05 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:12:10 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:12:30 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:12:42 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:13:01 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:13:10 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:13:26 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:13:44 PM user.py ln 111 logout called. request is token='xxx'
INFO 04/23/2026 03:13:46 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:14:04 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:14:20 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:14:36 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:14:47 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:18:06 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:18:13 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:18:17 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:18:39 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:18:44 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 03:38:44 PM user.py ln 111 logout called. request is token='xxx'
INFO 04/23/2026 03:38:46 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 03:38:59 PM user.py ln 35 User login attempt - site: chat-news.turmansolutions.ai, username: John, site_config: cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 03:38:59 PM user.py ln 42 Login request URL: https://news.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 03:39:00 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 03:39:00 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 15:38:59 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://news.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 03:39:00 PM user.py ln 64 Login response content length: 341 bytes
INFO 04/23/2026 03:39:00 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2OTU4NzQwLCJuYmYiOjE3NzY5NTg3NDAsImV4cCI6MTc3NzU2MzU0MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.unNSdcJzunwBbZPrTUHDPoaoZ-CrUBXF3-rgP6n0LCI","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/23/2026 03:39:00 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc2OTU4NzQwLCJuYmYiOjE3NzY5NTg3NDAsImV4cCI6MTc3NzU2MzU0MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.unNSdcJzunwBbZPrTUHDPoaoZ-CrUBXF3-rgP6n0LCI', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/23/2026 03:39:00 PM user.py ln 100 Login successful for John on https://news.turmansolutions.ai
INFO 04/23/2026 03:39:00 PM drupal.py ln 245 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/23/2026 03:39:00 PM drupal.py ln 247 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 03:39:00 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 03:39:00 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 03:39:01 PM drupal.py ln 492 Fetched 0 widgets for target_id 8
INFO 04/23/2026 03:39:01 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 04:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/23/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 04:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 04:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 04:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 04:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 04:27:41 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/23/2026 04:29:38 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:31:02 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:31:13 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:31:22 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:35:38 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:35:48 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 04:36:56 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:37:22 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:37:41 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:37:48 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:38:08 PM user.py ln 35 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:38:08 PM user.py ln 42 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 04:38:08 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 04:38:08 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 16:38:08 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 04:38:08 PM user.py ln 64 Login response content length: 340 bytes
INFO 04/23/2026 04:38:08 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY5NjIyODgsIm5iZiI6MTc3Njk2MjI4OCwiZXhwIjoxNzc3NTY3MDg4LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.fm0W5AldHIwaYVhUvlhOeYcGGbW37SqnGJQncEqleh4","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/23/2026 04:38:08 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzY5NjIyODgsIm5iZiI6MTc3Njk2MjI4OCwiZXhwIjoxNzc3NTY3MDg4LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.fm0W5AldHIwaYVhUvlhOeYcGGbW37SqnGJQncEqleh4', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/23/2026 04:38:08 PM user.py ln 100 Login successful for John on https://dev.turmansolutions.ai
INFO 04/23/2026 04:38:09 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 04:38:09 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:38:09 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 04:38:09 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:38:09 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 04:38:09 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 04:38:14 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:38:15 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 04:38:15 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:38:15 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 04:38:15 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 04:38:15 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 04:38:15 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 04:46:25 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:48:11 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 04:48:20 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 04:48:21 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 04:48:21 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 04:48:22 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 04:48:22 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 16:48:21 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 04:48:22 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/23/2026 04:48:22 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk2MjkwMiwibmJmIjoxNzc2OTYyOTAyLCJleHAiOjE3Nzc1Njc3MDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.xgAGC8b-OL-zLXavZA4vDvL3Z7yBDnnNarJyetBlBYU","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/23/2026 04:48:22 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk2MjkwMiwibmJmIjoxNzc2OTYyOTAyLCJleHAiOjE3Nzc1Njc3MDIsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.xgAGC8b-OL-zLXavZA4vDvL3Z7yBDnnNarJyetBlBYU', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/23/2026 04:48:22 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/23/2026 05:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 05:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 05:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 05:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 05:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 05:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/23/2026 05:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 05:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:07:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 05:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 05:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 05:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 05:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 05:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 05:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 05:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 05:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 05:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 05:07:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 05:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 05:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 05:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 05:40:11 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 05:40:12 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/23/2026 05:40:12 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 05:40:12 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 05:40:12 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 05:40:12 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/23/2026 05:40:12 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/23/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/23/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 06:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 06:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 06:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/23/2026 06:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 06:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 06:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:53 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/23/2026 06:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 06:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 06:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 06:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/23/2026 06:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 06:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 06:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 06:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 06:06:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 06:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 06:06:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 06:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 06:06:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 06:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 06:06:58 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 07:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/23/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 07:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 07:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 07:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 07:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 07:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 07:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 07:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 07:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 07:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 07:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 07:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 08:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:05:50 PM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 04/23/2026 08:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 08:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 08:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 08:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 08:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 08:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:05:55 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/23/2026 08:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 08:05:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:05:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 08:05:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 08:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 08:05:55 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 08:05:59 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 08:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 08:05:59 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 08:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 08:05:59 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 08:05:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 08:06:00 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 08:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 08:06:00 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 08:52:13 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/23/2026 09:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 09:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 09:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 09:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 09:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 09:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/23/2026 09:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 09:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 09:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 09:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 09:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 09:07:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 09:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/23/2026 09:07:53 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 09:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 09:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 09:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 09:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/23/2026 09:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 09:07:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 09:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 09:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 09:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 09:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/23/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 10:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/23/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 10:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 10:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 10:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/23/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 10:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 10:24:56 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 10:25:00 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 10:25:00 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 10:25:00 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 10:25:00 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 22:25:00 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 10:25:00 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/23/2026 10:25:00 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk4MzEwMCwibmJmIjoxNzc2OTgzMTAwLCJleHAiOjE3Nzc1ODc5MDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.MNk2qoCXFGnnn5kD97r0NWphwmO514SmP8NqIMfYxew","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/23/2026 10:25:00 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk4MzEwMCwibmJmIjoxNzc2OTgzMTAwLCJleHAiOjE3Nzc1ODc5MDAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.MNk2qoCXFGnnn5kD97r0NWphwmO514SmP8NqIMfYxew', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/23/2026 10:25:00 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/23/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/23/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 11:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/23/2026 11:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/23/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/23/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/23/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 11:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/23/2026 11:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/23/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/23/2026 11:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/23/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 11:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 11:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/23/2026 11:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/23/2026 11:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/23/2026 11:05:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/23/2026 11:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/23/2026 11:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/23/2026 11:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/23/2026 11:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/23/2026 11:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/23/2026 11:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/23/2026 11:22:01 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 11:22:03 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/23/2026 11:22:03 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/23/2026 11:22:04 PM user.py ln 62 Login response status code: 200
INFO 04/23/2026 11:22:04 PM user.py ln 63 Login response headers: {'Date': 'Thu, 23 Apr 2026 23:22:03 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/23/2026 11:22:04 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/23/2026 11:22:04 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk4NjUyNCwibmJmIjoxNzc2OTg2NTI0LCJleHAiOjE3Nzc1OTEzMjQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Y7Z3DsNDxA9cFNPDAQUkTm6A-YqZup6JsCHdM8Xdu4w","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/23/2026 11:22:04 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3Njk4NjUyNCwibmJmIjoxNzc2OTg2NTI0LCJleHAiOjE3Nzc1OTEzMjQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.Y7Z3DsNDxA9cFNPDAQUkTm6A-YqZup6JsCHdM8Xdu4w', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/23/2026 11:22:04 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/24/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 12:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/24/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:53 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 12:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 12:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 12:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 12:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 12:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 12:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 12:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 12:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 12:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 01:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/24/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/24/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 01:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 01:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 01:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 01:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 01:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 01:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 01:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 01:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 01:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 02:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/24/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 02:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 02:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 02:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 02:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 02:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 02:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 02:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 02:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 03:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 03:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/24/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 03:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 03:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 03:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:55 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 03:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 03:05:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 03:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 03:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 03:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/24/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 04:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/24/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 04:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 04:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:53 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 04:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 04:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/24/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 04:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 04:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 04:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 04:05:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 04:05:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 04:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 04:05:57 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 05:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 05:05:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 05:05:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 05:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/24/2026 05:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 05:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 05:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:05:53 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/24/2026 05:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 05:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 05:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 05:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 05:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 05:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 05:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:05:57 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/24/2026 05:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 05:05:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 05:05:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 05:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 05:05:57 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 06:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 06:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:07:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 06:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 06:07:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 06:07:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 06:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/24/2026 06:07:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 06:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 06:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:07:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 06:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 06:07:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 06:07:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 06:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 06:07:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 06:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 06:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 06:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 06:07:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 06:07:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 06:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/24/2026 06:07:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 06:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 06:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/24/2026 06:07:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/24/2026 06:07:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/24/2026 06:07:56 AM cron_common.py ln 414 Character articles: 91
INFO 04/24/2026 06:07:56 AM create_articles.py ln 126 Character articles loaded (0.51s)
INFO 04/24/2026 06:07:56 AM create_articles.py ln 128 Setup complete (1.04s total)
INFO 04/24/2026 06:07:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/24/2026 06:07:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260424_060756_news_Hawk.log
INFO 04/24/2026 06:07:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/24/2026 06:07:57 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 04/24/2026 06:07:57 AM article_creation_service.py ln 766 Fetched WP users (0.09s)
INFO 04/24/2026 06:07:57 AM article_creation_service.py ln 766 Loaded 91 articles for character (0.50s)
INFO 04/24/2026 06:07:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/24/2026 06:07:57 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/24/2026 06:07:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/24/2026 06:07:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/24/2026 06:07:59 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/24/2026 06:07:59 AM chat.py ln 159 Found 5 results
INFO 04/24/2026 06:07:59 AM article_creation_service.py ln 766 Found 5 search results (1.27s)
INFO 04/24/2026 06:07:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260424_060756_news_Hawk_search.md
INFO 04/24/2026 06:07:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/24/2026 06:09:00 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 06:09:00 AM article_creation_service.py ln 766 Generated article - Hawk’s Friday Brief: UK papers warn on China data, Aussie cliff rescue, pastor murder‑for‑hire arrest, and pre‑market shake‑ups (61.79s)
INFO 04/24/2026 06:09:00 AM article_creation_service.py ln 766 Created WP post 1109 (0.09s)
INFO 04/24/2026 06:09:04 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 06:09:04 AM wp.py ln 833 Prompt: Prompt for featured image generation:
Create a dynamic, collage-style illustration that visually captures the key themes from the article. The image should include: UK newspaper front pages with bold headlines about data security and China, an emergency rope-line rescue on a dramatic Australian cliff with rescuers and stranded tourists, a shadowy criminal scene suggesting a U.S. murder-for-hire investigation (such as police tape or handcuffs), fluctuating stock charts and financial symbols representing pre-market corporate shake-ups, and subtle elements referencing wellness or mental health (such as an abstract head with tangled thoughts). The mood should be urgent and newsy, using a blend of vibrant and serious tones. This image should feel like a visually engaging news summary that ties together international headlines from the day.
INFO 04/24/2026 06:09:31 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/24/2026 06:09:31 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/24/2026 06:09:31 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24.jpeg
INFO 04/24/2026 06:09:31 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-24.jpeg
INFO 04/24/2026 06:09:31 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDEwODc3LCJuYmYiOjE3NzcwMTA4NzcsImV4cCI6MTc3NzYxNTY3NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.RAvWxgHIeH31Br1pvxHkZqvFCUxUA8lsTlL_WGEieNE
INFO 04/24/2026 06:09:32 AM image.py ln 220 filename is 2026-04-24.webp
INFO 04/24/2026 06:09:32 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24.webp'>}
INFO 04/24/2026 06:09:32 AM article_creation_service.py ln 766 Featured image posted (31.94s)
INFO 04/24/2026 06:09:32 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 559.55 KB
INFO 04/24/2026 06:09:38 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 06:09:38 AM wp.py ln 904 Secondary Image Prompt: **Prompt for Secondary Image Generation:**
Create an image that captures the essence of resilience and support in the face of adversity. The scene should depict a group of diverse individuals participating in a collaborative outdoor rescue effort on a rugged cliffside, reflecting a vivid sunset or sunrise sky filled with warm oranges and purples.
Focus on a dynamic perspective where one person is offering a hand to another being pulled up, illustrating teamwork and determination. Surround them with safety gear, climbing tools, and an ocean in the backdrop—rendered in tranquil shades to evoke a sense of calm amidst the challenge.
Incorporate subtle newspaper headlines in the background addressing themes of safety and security, reminiscent of the newsworthy elements in the featured image, but ensure they're vague enough to suggest a narrative without direct quotes. Maintain a cohesive color palette that mirrors the warmth and urgency of the original image, resonating with the same emotional intensity while presenting a different narrative angle.
INFO 04/24/2026 06:10:03 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/24/2026 06:10:03 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/24/2026 06:10:03 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-1.jpeg
INFO 04/24/2026 06:10:03 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-24-1.jpeg
INFO 04/24/2026 06:10:03 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDEwODc3LCJuYmYiOjE3NzcwMTA4NzcsImV4cCI6MTc3NzYxNTY3NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.RAvWxgHIeH31Br1pvxHkZqvFCUxUA8lsTlL_WGEieNE
INFO 04/24/2026 06:10:03 AM image.py ln 220 filename is 2026-04-24-1.webp
INFO 04/24/2026 06:10:03 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-1.webp'>}
INFO 04/24/2026 06:10:04 AM article_creation_service.py ln 766 Secondary image uploaded (31.11s)
INFO 04/24/2026 06:10:04 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/24/2026 06:10:04 AM wp.py ln 964 Post content updated successfully for post 1109
INFO 04/24/2026 06:10:04 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/24/2026 06:10:06 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/24/2026 06:10:14 AM chat.py ln 348 AI comment: The article accurately represents the information from the provided sources. Each section draws directly from its corresponding source material:
The UK press section correctly summarizes the BBC's newspaper roundup, including The Times' China data-sharing headline, the Mirror's HIV predator story, Dame Esther Rantzen's assisted-dying plea in the Express, and the Independent's political coverage. The Australian cliff rescue, California pastor murder-for-hire case, and CNBC pre-market segment (covering the Navy Secretary departure, ServiceNow's stock drop, Lululemon's CEO appointment, the D.C.
INFO 04/24/2026 06:10:14 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/24/2026 06:10:14 AM article_creation_service.py ln 766 Fact-check comment posted (10.25s)
INFO 04/24/2026 06:10:14 AM article_creation_service.py ln 766 Article creation completed successfully (total: 137.58s)
INFO 04/24/2026 06:10:14 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/24/2026 06:10:14 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/24/2026 06:10:14 AM create_articles.py ln 204 Script completed (138.62s total)
INFO 04/24/2026 07:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 07:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 07:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 07:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/24/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 07:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 07:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:52 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/24/2026 07:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 07:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 07:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 07:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 07:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 07:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 07:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 07:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 07:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 07:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 07:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 07:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 07:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 07:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/24/2026 07:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 07:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 07:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 08:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 08:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 08:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 08:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 08:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 08:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/24/2026 08:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 08:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 08:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 08:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 08:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 08:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 08:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 08:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 08:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 08:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 08:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 08:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 08:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 08:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 08:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 08:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 08:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/24/2026 08:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 08:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 08:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/24/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 09:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/24/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 09:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:05:53 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/24/2026 09:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 09:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 09:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 09:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/24/2026 09:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 09:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:05:58 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/24/2026 09:05:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 09:05:58 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:05:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 09:05:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 09:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/24/2026 09:05:58 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 09:05:58 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 09:05:58 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/24/2026 09:05:58 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 09:05:58 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/24/2026 09:05:58 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 10:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 10:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 10:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 10:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 10:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 10:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 04/24/2026 10:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 10:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 10:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:53 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/24/2026 10:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 10:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 10:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 10:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 10:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 10:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 10:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:56 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/24/2026 10:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 10:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 10:05:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 10:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/24/2026 10:05:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 10:05:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 10:05:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/24/2026 10:05:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 10:05:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 10:05:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 11:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/24/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 11:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 11:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 11:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 11:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 11:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 11:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 11:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 11:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 11:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/24/2026 11:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 11:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/24/2026 11:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 11:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/24/2026 11:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 12:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/24/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 12:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 12:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 12:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 12:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 12:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 12:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 12:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 12:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 12:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 12:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 12:06:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 12:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 12:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/24/2026 12:06:56 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/24/2026 12:06:56 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/24/2026 12:06:56 PM cron_common.py ln 414 Character articles: 38
INFO 04/24/2026 12:06:56 PM create_articles.py ln 126 Character articles loaded (0.23s)
INFO 04/24/2026 12:06:56 PM create_articles.py ln 128 Setup complete (0.67s total)
INFO 04/24/2026 12:06:56 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/24/2026 12:06:56 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260424_120656_news_Dusty.log
INFO 04/24/2026 12:06:56 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 04/24/2026 12:06:56 PM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/24/2026 12:06:56 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/24/2026 12:06:56 PM article_creation_service.py ln 766 Loaded 38 articles for character (0.23s)
INFO 04/24/2026 12:06:57 PM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.28s)
INFO 04/24/2026 12:06:57 PM article_creation_service.py ln 766 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/24/2026 12:06:57 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com']
INFO 04/24/2026 12:06:57 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/24/2026 12:06:59 PM chat.py ln 154 Tavily search for 'Latest US extreme weather' completed
INFO 04/24/2026 12:06:59 PM chat.py ln 159 Found 5 results
INFO 04/24/2026 12:06:59 PM article_creation_service.py ln 766 Found 5 search results (2.12s)
INFO 04/24/2026 12:06:59 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260424_120656_news_Dusty_search.md
INFO 04/24/2026 12:06:59 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/24/2026 12:07:31 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 12:07:31 PM article_creation_service.py ln 766 Generated article - Spring 2026’s Extreme Weather Siege: Drought, Wildfire, Flood, and Storms Collide Across the U.S. (32.66s)
INFO 04/24/2026 12:07:32 PM article_creation_service.py ln 766 Created WP post 1114 (0.10s)
INFO 04/24/2026 12:07:36 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 12:07:36 PM wp.py ln 833 Prompt: Prompt for generating a featured image:
Create a dramatic, wide-angle illustration depicting the United States under siege from extreme spring weather. On the left, show a sun-scorched, cracked landscape with wildfires burning in forests and grasslands to represent drought and fire risk in the West and South. In the center, transition to a cluster of powerful thunderstorms and tornadoes ripping through rural plains, with lightning and debris flying. On the right, illustrate flooded coastal cities with submerged streets and distressed people, symbolizing flood dangers along the Atlantic and Gulf coasts. Blend the scenes together with vivid, realistic details, incorporating a map outline or subtle U.S. flag motif in the background to unify the image. The overall tone should convey urgency and the clash of natural forces.
INFO 04/24/2026 12:08:01 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/24/2026 12:08:01 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/24/2026 12:08:01 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-2.jpeg
INFO 04/24/2026 12:08:01 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-24-2.jpeg
INFO 04/24/2026 12:08:01 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDMyNDE2LCJuYmYiOjE3NzcwMzI0MTYsImV4cCI6MTc3NzYzNzIxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.FqxtAirQlV1zBTyoZoCnx8OW6igyAkLkKIzyAJTG-7k
INFO 04/24/2026 12:08:01 PM image.py ln 220 filename is 2026-04-24-2.webp
INFO 04/24/2026 12:08:01 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-2.webp'>}
INFO 04/24/2026 12:08:02 PM article_creation_service.py ln 766 Featured image posted (30.52s)
INFO 04/24/2026 12:08:02 PM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 468.21 KB
INFO 04/24/2026 12:08:10 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/24/2026 12:08:10 PM wp.py ln 904 Secondary Image Prompt: ### Prompt for Generating a Complementary Image
Create a dramatic scene that contrasts with the featured image but shares similar mood, color palette, and thematic elements. The new image should depict a serene yet affected landscape where communities are actively working to recover from extreme weather events.
1. **Setting**: Show a divided landscape transitioning from a sun-drenched, drought-affected area on the left side with parched earth and wilted crops, to a lush, green region on the right where community members are planting trees or rebuilding homes post-storm.
2. **Color Palette**: Use warm, earthy tones for the drought side with hints of golden yellow and brown, transitioning to cooler greens and blues on the recovery side, symbolizing hope and renewal.
3. **Mood**: While the featured image has a sense of chaos and destruction, aim for a more hopeful, proactive atmosphere in the new image, focusing on human resilience. Include individuals working together, demonstrating community strength.
4. **Elements**: Include visual motifs such as torn-down fences being rebuilt, people planting trees, and emergency responders assisting families. The backdrop may feature a distant but clearer sky on the recovery side, hinting at a better future.
5. **Light and Atmosphere**: Incorporate soft sunlight breaking through clouds over the recovery area, contrasting with darker, stormy clouds over the drought-affected side to imply a transition from despair to hope.
This composition should convey the duality of the current weather crisis while emphasizing resilience and recovery, allowing viewers to see both the challenges posed by extreme weather and the possibility of hope and renewal.
INFO 04/24/2026 12:08:36 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/24/2026 12:08:36 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/24/2026 12:08:36 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-3.jpeg
INFO 04/24/2026 12:08:36 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-24-3.jpeg
INFO 04/24/2026 12:08:36 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDMyNDE2LCJuYmYiOjE3NzcwMzI0MTYsImV4cCI6MTc3NzYzNzIxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.FqxtAirQlV1zBTyoZoCnx8OW6igyAkLkKIzyAJTG-7k
INFO 04/24/2026 12:08:36 PM image.py ln 220 filename is 2026-04-24-3.webp
INFO 04/24/2026 12:08:36 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-24-3.webp'>}
INFO 04/24/2026 12:08:37 PM article_creation_service.py ln 766 Secondary image uploaded (34.56s)
INFO 04/24/2026 12:08:37 PM wp.py ln 935 Inserted image after second paragraph
INFO 04/24/2026 12:08:37 PM wp.py ln 964 Post content updated successfully for post 1114
INFO 04/24/2026 12:08:37 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/24/2026 12:08:40 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/24/2026 12:08:51 PM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in its source material. The key claims align well with the reporting from AP News and The Weather Channel:
**Drought and wildfire claims verified:** Source 1 confirms that over 61% of the Lower 48 is experiencing drought (the article's figure), that this is the highest level for spring since monitoring began in 2000, that NOAA's Palmer Drought Severity Index reached levels comparable only to the 1930s Dust Bowl, and that it would take over a foot of rain to break the drought in Texas and the Southeast. The wil
INFO 04/24/2026 12:08:51 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/24/2026 12:08:51 PM article_creation_service.py ln 766 Fact-check comment posted (13.97s)
INFO 04/24/2026 12:08:51 PM article_creation_service.py ln 766 Article creation completed successfully (total: 114.89s)
INFO 04/24/2026 12:08:51 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/24/2026 12:08:51 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/24/2026 12:08:51 PM create_articles.py ln 204 Script completed (115.57s total)
INFO 04/24/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 01:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 01:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/24/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 01:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 01:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 01:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 01:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 01:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 01:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 01:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 01:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 01:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 01:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 01:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 01:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 01:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 01:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 01:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 01:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 01:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 01:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/24/2026 01:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 01:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/24/2026 01:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 02:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/24/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 02:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 02:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 02:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 02:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 02:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 02:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 02:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 02:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 02:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 02:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 02:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 02:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 02:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 02:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/24/2026 02:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 02:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 02:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 03:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 03:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 03:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 03:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 03:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 03:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/24/2026 03:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 03:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 03:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 03:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 03:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 03:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 03:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 03:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 03:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 03:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 03:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 03:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 03:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 03:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 03:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 03:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/24/2026 03:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 03:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 03:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 04:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/24/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 04:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 04:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 04:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/24/2026 04:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 04:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 04:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/24/2026 04:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 04:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 04:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 05:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 05:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:06:51 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/24/2026 05:06:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 05:06:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:06:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 05:06:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 05:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/24/2026 05:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:06:55 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/24/2026 05:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 05:06:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:06:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 05:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 05:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 05:06:59 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 05:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 05:07:00 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/24/2026 05:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 05:07:00 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 05:07:00 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 05:07:00 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 05:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/24/2026 05:07:00 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/24/2026 05:07:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/24/2026 05:07:00 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/24/2026 05:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/24/2026 05:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/24/2026 05:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/24/2026 06:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 06:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:05:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 06:05:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 06:05:51 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:05:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 06:05:51 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 06:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/24/2026 06:05:51 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 06:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 06:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:05:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 06:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 06:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 06:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 06:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 06:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 06:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 06:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 06:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 06:05:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/24/2026 06:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 06:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 06:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 06:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 06:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 06:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 07:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/24/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 07:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 07:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 07:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 07:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 07:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 08:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 08:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 08:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 08:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 08:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 08:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/24/2026 08:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 08:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 08:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 08:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 08:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 08:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 08:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 08:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 08:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 08:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 08:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 08:07:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/24/2026 08:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 08:07:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 08:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 08:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 08:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 08:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 09:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/24/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/24/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 09:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 09:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 09:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 09:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 09:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 09:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 09:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/24/2026 09:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 09:50:44 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/24/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 10:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/24/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 10:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/24/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 10:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/24/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 10:29:58 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 04/24/2026 10:32:07 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/24/2026 10:32:07 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/24/2026 10:32:07 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/24/2026 10:32:08 PM user.py ln 62 Login response status code: 200
INFO 04/24/2026 10:32:08 PM user.py ln 63 Login response headers: {'Date': 'Fri, 24 Apr 2026 22:32:07 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/24/2026 10:32:08 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/24/2026 10:32:08 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA2OTkyOCwibmJmIjoxNzc3MDY5OTI4LCJleHAiOjE3Nzc2NzQ3MjgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fKjWAtNn157vjuc3qUYpbhbCEC3-QhtWTBtndnWwDV0","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/24/2026 10:32:08 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA2OTkyOCwibmJmIjoxNzc3MDY5OTI4LCJleHAiOjE3Nzc2NzQ3MjgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fKjWAtNn157vjuc3qUYpbhbCEC3-QhtWTBtndnWwDV0', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/24/2026 10:32:08 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/24/2026 10:32:25 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 04/24/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/24/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:05:50 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/24/2026 11:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/24/2026 11:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/24/2026 11:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/24/2026 11:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/24/2026 11:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 11:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/24/2026 11:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:05:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/24/2026 11:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/24/2026 11:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/24/2026 11:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 11:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/24/2026 11:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/24/2026 11:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/24/2026 11:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/24/2026 11:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/24/2026 11:05:57 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/24/2026 11:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/24/2026 11:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/24/2026 11:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/24/2026 11:05:57 PM cron_common.py ln 313 filtered characters: 12
INFO 04/24/2026 11:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/24/2026 11:05:57 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/25/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 12:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 12:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 12:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/25/2026 12:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 12:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 12:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:06:53 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 12:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 12:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 12:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 12:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:06:57 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 12:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 12:06:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 12:06:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 12:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 12:06:57 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:51 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 01:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:51 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 01:05:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 01:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 01:05:51 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 01:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 04/25/2026 01:05:51 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 01:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:55 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 04/25/2026 01:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 01:05:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 01:05:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 01:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 01:05:55 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 01:05:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:58 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/25/2026 01:05:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 01:05:58 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 01:05:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 01:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 01:05:58 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 02:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 02:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 02:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 02:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 03:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 03:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/25/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 03:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 04:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:06:50 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/25/2026 04:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 04:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 04:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 04:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/25/2026 04:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 04:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:06:54 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 04:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 04:06:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:06:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 04:06:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 04:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 04:06:54 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:06:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:06:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 04:06:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:06:58 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/25/2026 04:06:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 04:06:58 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:06:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 04:06:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 04:06:58 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 04:06:58 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:06:50 AM create_articles.py ln 93 JWT token obtained (1.17s)
INFO 04/25/2026 05:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 05:06:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 05:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 05:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 05:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:06:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 05:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:06:54 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 05:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 05:06:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:06:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 05:06:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 05:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 05:06:54 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 05:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:06:58 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 05:06:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 05:06:58 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:06:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 05:06:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 05:06:58 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 05:06:58 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:02:23 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:02:23 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:02:27 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:02:27 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/25/2026 06:02:27 AM user.py ln 62 Login response status code: 200
INFO 04/25/2026 06:02:27 AM user.py ln 63 Login response headers: {'Date': 'Sat, 25 Apr 2026 06:02:27 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/25/2026 06:02:27 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/25/2026 06:02:27 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA5Njk0NywibmJmIjoxNzc3MDk2OTQ3LCJleHAiOjE3Nzc3MDE3NDcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.UEnKo0KjRawdvxA4FraaKL0olwYQSSoHYfjhKpFTU3o","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/25/2026 06:02:27 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA5Njk0NywibmJmIjoxNzc3MDk2OTQ3LCJleHAiOjE3Nzc3MDE3NDcsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.UEnKo0KjRawdvxA4FraaKL0olwYQSSoHYfjhKpFTU3o', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/25/2026 06:02:27 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/25/2026 06:02:27 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:02:27 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/25/2026 06:02:28 AM user.py ln 62 Login response status code: 200
INFO 04/25/2026 06:02:28 AM user.py ln 63 Login response headers: {'Date': 'Sat, 25 Apr 2026 06:02:27 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/25/2026 06:02:28 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/25/2026 06:02:28 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA5Njk0OCwibmJmIjoxNzc3MDk2OTQ4LCJleHAiOjE3Nzc3MDE3NDgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.tAU3dD6bas7s_7lyPfiKwDsgH7G8ccxFxgG9eYRGY3g","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/25/2026 06:02:28 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzA5Njk0OCwibmJmIjoxNzc3MDk2OTQ4LCJleHAiOjE3Nzc3MDE3NDgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.tAU3dD6bas7s_7lyPfiKwDsgH7G8ccxFxgG9eYRGY3g', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/25/2026 06:02:28 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/25/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 06:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 06:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 06:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 06:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:56 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/25/2026 06:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 06:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 06:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 06:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 06:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 06:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 06:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/25/2026 06:06:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/25/2026 06:06:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/25/2026 06:06:56 AM cron_common.py ln 414 Character articles: 92
INFO 04/25/2026 06:06:56 AM create_articles.py ln 126 Character articles loaded (0.52s)
INFO 04/25/2026 06:06:56 AM create_articles.py ln 128 Setup complete (1.03s total)
INFO 04/25/2026 06:06:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/25/2026 06:06:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260425_060656_news_Hawk.log
INFO 04/25/2026 06:06:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/25/2026 06:06:57 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 04/25/2026 06:06:57 AM article_creation_service.py ln 766 Fetched WP users (0.05s)
INFO 04/25/2026 06:06:57 AM article_creation_service.py ln 766 Loaded 92 articles for character (0.51s)
INFO 04/25/2026 06:06:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/25/2026 06:06:57 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/25/2026 06:06:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/25/2026 06:06:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/25/2026 06:06:59 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/25/2026 06:06:59 AM chat.py ln 159 Found 5 results
INFO 04/25/2026 06:06:59 AM article_creation_service.py ln 766 Found 5 search results (1.56s)
INFO 04/25/2026 06:06:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260425_060656_news_Hawk_search.md
INFO 04/25/2026 06:06:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/25/2026 06:07:57 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/25/2026 06:07:57 AM article_creation_service.py ln 766 Generated article - Hawk’s Saturday Brief: Tech trims in AI’s boom, Hormuz’s hard reset, Iran talks inch on, and U.S. weather turns violent (57.98s)
INFO 04/25/2026 06:07:57 AM article_creation_service.py ln 766 Created WP post 1119 (0.16s)
INFO 04/25/2026 06:08:00 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/25/2026 06:08:00 AM wp.py ln 833 Prompt: Prompt for a featured image:
Create a dynamic collage that visually represents the main themes of the article. The image should include: (1) a stylized Silicon Valley cityscape with digital AI elements and circuit patterns, symbolizing tech industry changes and AI's rapid rise; (2) oil tankers navigating a tense, narrow Strait of Hormuz, hinting at geopolitical tension and disruption; (3) dramatic weather elements like tornadoes and wildfires overlaid on a U.S. heartland scenery to illustrate severe weather impacts; and (4) a subtle overlay of diplomatic symbols (such as shaking hands or diplomatic flags) to evoke ongoing U.S.–Iran talks, all blended with a newsy, energetic tone. The composition should feel urgent and global, reflecting a turbulent, high-stakes news cycle.
INFO 04/25/2026 06:08:42 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/25/2026 06:08:42 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/25/2026 06:08:42 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-25.jpeg
INFO 04/25/2026 06:08:42 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-25.jpeg
INFO 04/25/2026 06:08:42 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDk3MjE3LCJuYmYiOjE3NzcwOTcyMTcsImV4cCI6MTc3NzcwMjAxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.nzuY3vP0DQ_XtgKA9NKhMkOBSovK05bgBowIxo5RdIc
INFO 04/25/2026 06:08:42 AM image.py ln 220 filename is 2026-04-25.webp
INFO 04/25/2026 06:08:42 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-25.webp'>}
INFO 04/25/2026 06:08:43 AM article_creation_service.py ln 766 Featured image posted (45.74s)
INFO 04/25/2026 06:08:43 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 453.72 KB
INFO 04/25/2026 06:08:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/25/2026 06:08:47 AM wp.py ln 904 Secondary Image Prompt: ### Prompt for a Complementary Image
Create a dramatic outdoor scene that highlights the themes of conflict and resilience, echoing the mood of the original image. The setting should feature heavy storm clouds gathering over a desolate landscape, hinting at a brewing storm. Incorporate a backdrop of a rugged coastline, with crashing waves against rocky shores.
In the foreground, depict a group of diverse individuals—men and women—standing together in solidarity, facing the turbulent environment. They should be dressed in practical weather gear, symbolizing resilience amidst chaos.
Use a color palette that mirrors the original image, with deep blues and fiery oranges, creating a sense of urgency and tension. Include elements such as emergency aid supplies and communication devices to reflect themes of cooperation and response to crises. The overall composition should evoke a sense of hope amidst adversity, providing a contrasting perspective to the turmoil depicted in the original image.
INFO 04/25/2026 06:09:53 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/25/2026 06:09:54 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/25/2026 06:09:54 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-25-1.jpeg
INFO 04/25/2026 06:09:54 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-25-1.jpeg
INFO 04/25/2026 06:09:54 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MDk3MjE3LCJuYmYiOjE3NzcwOTcyMTcsImV4cCI6MTc3NzcwMjAxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.nzuY3vP0DQ_XtgKA9NKhMkOBSovK05bgBowIxo5RdIc
INFO 04/25/2026 06:09:54 AM image.py ln 220 filename is 2026-04-25-1.webp
INFO 04/25/2026 06:09:54 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-25-1.webp'>}
INFO 04/25/2026 06:09:54 AM article_creation_service.py ln 766 Secondary image uploaded (71.45s)
INFO 04/25/2026 06:09:54 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/25/2026 06:09:54 AM wp.py ln 964 Post content updated successfully for post 1119
INFO 04/25/2026 06:09:54 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/25/2026 06:09:57 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/25/2026 06:10:08 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information contained in the provided sources. The key claims are well-supported:
**Tech layoffs amid AI spending**: Source 1 confirms Meta's 10% workforce reduction and Microsoft's buyout offers alongside AI investment increases. **Cybersecurity concerns**: Source 4 (CNBC) verifies George Kurtz's quote about the "collapsed window" for finding AI vulnerabilities and mentions Project QuiltWorks. **Powell investigation closure**: Source 4 confirms the Justice Department plans to close its criminal investigation into Fed Chair Jerome
INFO 04/25/2026 06:10:08 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/25/2026 06:10:08 AM article_creation_service.py ln 766 Fact-check comment posted (13.65s)
INFO 04/25/2026 06:10:08 AM article_creation_service.py ln 766 Article creation completed successfully (total: 191.65s)
INFO 04/25/2026 06:10:08 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/25/2026 06:10:08 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/25/2026 06:10:08 AM create_articles.py ln 204 Script completed (192.69s total)
INFO 04/25/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 07:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/25/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 07:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/25/2026 07:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 07:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 07:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 07:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 07:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 07:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 07:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/25/2026 07:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 07:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 07:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/25/2026 07:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/25/2026 07:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/25/2026 07:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/25/2026 08:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 08:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 08:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 08:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 08:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 08:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/25/2026 08:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 08:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 08:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:05:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 08:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 08:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 08:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 08:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 08:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 08:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 08:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 08:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 08:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 08:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 08:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 08:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 08:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 08:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/25/2026 08:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/25/2026 08:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/25/2026 08:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/25/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/25/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 09:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/25/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 09:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 09:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 09:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 09:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 09:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 09:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 09:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 09:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 09:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 09:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 09:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/25/2026 09:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/25/2026 09:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/25/2026 09:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/25/2026 10:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 10:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:07:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 10:07:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 10:07:50 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:07:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 10:07:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 10:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/25/2026 10:07:50 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 10:07:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:07:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 10:07:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:07:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 10:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 10:07:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:07:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 10:07:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 10:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 10:07:53 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 10:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:07:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 10:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 10:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 10:07:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 10:07:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 10:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 10:07:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 10:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 10:07:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/25/2026 10:07:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/25/2026 10:07:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/25/2026 10:07:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/25/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/25/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 11:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 11:06:50 AM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 11:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/25/2026 11:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 11:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 11:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:06:53 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 11:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 11:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 11:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 11:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 11:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 11:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 11:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/25/2026 11:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 11:06:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 11:06:57 AM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 11:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 11:06:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/25/2026 11:06:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/25/2026 11:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/25/2026 11:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/25/2026 11:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/25/2026 11:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/25/2026 11:40:37 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 11:40:39 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 11:40:39 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/25/2026 11:40:39 AM user.py ln 62 Login response status code: 200
INFO 04/25/2026 11:40:39 AM user.py ln 63 Login response headers: {'Date': 'Sat, 25 Apr 2026 11:40:39 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/25/2026 11:40:39 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/25/2026 11:40:39 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzExNzIzOSwibmJmIjoxNzc3MTE3MjM5LCJleHAiOjE3Nzc3MjIwMzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.3ejitlBfd2AsBcNKaTbb35CNYYO-aoV7Iw3cTZPeXTk","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/25/2026 11:40:39 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzExNzIzOSwibmJmIjoxNzc3MTE3MjM5LCJleHAiOjE3Nzc3MjIwMzksImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.3ejitlBfd2AsBcNKaTbb35CNYYO-aoV7Iw3cTZPeXTk', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/25/2026 11:40:39 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/25/2026 11:49:00 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:05:50 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/25/2026 12:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 12:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 12:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 12:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/25/2026 12:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 12:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 12:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:05:53 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/25/2026 12:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 12:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 12:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 12:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/25/2026 12:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 12:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 12:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 12:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 12:05:57 PM create_articles.py ln 93 JWT token obtained (0.60s)
INFO 04/25/2026 12:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 12:05:57 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 12:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 12:05:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 12:05:58 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/25/2026 12:05:58 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:50 PM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/25/2026 01:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 01:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 01:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 01:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/25/2026 01:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 01:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:54 PM create_articles.py ln 93 JWT token obtained (0.67s)
INFO 04/25/2026 01:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 01:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 01:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 01:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/25/2026 01:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 01:05:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 01:05:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 01:05:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 01:05:59 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 01:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 01:05:59 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 01:05:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 01:05:59 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 01:05:59 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/25/2026 01:05:59 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:05:50 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 02:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 02:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 02:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 02:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/25/2026 02:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 02:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:05:54 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/25/2026 02:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 02:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 02:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 02:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 02:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:05:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 02:05:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 02:05:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 02:05:58 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 02:05:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 02:05:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 02:05:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 02:05:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 02:05:58 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/25/2026 02:05:58 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 02:13:12 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 02:19:13 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 03:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 03:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/25/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 03:06:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/25/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 03:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 03:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:54 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 03:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 03:06:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 03:06:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 03:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 03:06:55 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 03:06:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 03:06:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 03:06:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 03:06:59 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 03:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 03:06:59 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 03:06:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 03:06:59 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 03:06:59 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/25/2026 03:06:59 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:05:50 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/25/2026 04:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 04:05:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 04:05:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 04:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 04:05:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 04:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:05:54 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/25/2026 04:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 04:05:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 04:05:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 04:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 04:05:54 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 04:05:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 04:05:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 04:05:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 04:05:59 PM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 04/25/2026 04:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 04:05:59 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 04:05:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 04:05:59 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 04:05:59 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/25/2026 04:05:59 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 05:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:07:49 PM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/25/2026 05:07:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 05:07:50 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:07:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 05:07:50 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 05:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 04/25/2026 05:07:50 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:07:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:07:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 05:07:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:07:54 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/25/2026 05:07:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 05:07:54 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:07:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 05:07:54 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 05:07:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 05:07:54 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:07:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 05:07:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 05:07:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 05:07:58 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 05:07:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 05:07:58 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 05:07:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 05:07:58 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 05:07:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 05:07:58 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 05:27:52 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 05:41:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 06:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/25/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/25/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 06:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 06:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 06:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 06:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 06:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 06:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 06:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 06:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 06:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 06:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 06:35:22 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:35:25 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/25/2026 06:35:25 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/25/2026 06:35:26 PM user.py ln 62 Login response status code: 200
INFO 04/25/2026 06:35:26 PM user.py ln 63 Login response headers: {'Date': 'Sat, 25 Apr 2026 18:35:25 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/25/2026 06:35:26 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/25/2026 06:35:26 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzE0MjEyNiwibmJmIjoxNzc3MTQyMTI2LCJleHAiOjE3Nzc3NDY5MjYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.mk0uWJ5GNf1ZdbhltFPljwHt4rtYcIjXqv-WPawKUYs","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/25/2026 06:35:26 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzE0MjEyNiwibmJmIjoxNzc3MTQyMTI2LCJleHAiOjE3Nzc3NDY5MjYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.mk0uWJ5GNf1ZdbhltFPljwHt4rtYcIjXqv-WPawKUYs', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/25/2026 06:35:26 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/25/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/25/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 07:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/25/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:05:53 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 07:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 07:05:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 07:05:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 07:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 07:05:53 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 07:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 07:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 07:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 07:05:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 08:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/25/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:06:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 08:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 08:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 08:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 08:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/25/2026 08:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 08:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 08:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 08:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 08:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 09:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/25/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/25/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 09:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 09:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 09:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 09:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 09:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 09:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 09:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 09:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 10:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 10:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:06:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/25/2026 10:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 10:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 10:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 10:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/25/2026 10:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 10:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 10:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:06:53 PM create_articles.py ln 93 JWT token obtained (0.68s)
INFO 04/25/2026 10:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 10:06:53 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 10:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 10:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 10:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 10:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 10:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 10:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 10:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 10:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 10:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 10:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 10:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 10:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 10:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 11:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/25/2026 11:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/25/2026 11:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/25/2026 11:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/25/2026 11:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/25/2026 11:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/25/2026 11:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 11:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/25/2026 11:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:07:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/25/2026 11:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/25/2026 11:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/25/2026 11:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 11:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 11:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/25/2026 11:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/25/2026 11:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/25/2026 11:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/25/2026 11:07:56 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/25/2026 11:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/25/2026 11:07:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/25/2026 11:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/25/2026 11:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/25/2026 11:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/25/2026 11:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/26/2026 12:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 12:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/26/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 12:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 12:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 12:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 12:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 12:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 12:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 12:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 12:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 12:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 12:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 12:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 12:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 12:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 12:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 01:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/26/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 01:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 01:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 01:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 01:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 01:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 01:06:56 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 02:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/26/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 02:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 02:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 02:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 02:05:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 02:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 02:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 02:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 03:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 03:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/26/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 03:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 03:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 03:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 03:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 03:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 03:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 03:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/26/2026 03:05:56 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:05:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 04:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:05:51 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/26/2026 04:05:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 04:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:05:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 04:05:51 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 04:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/26/2026 04:05:51 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:05:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 04:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:05:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 04:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 04:05:54 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 04:05:54 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 04:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 04:05:54 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 04:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:05:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 04:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 04:05:57 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 04:05:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 04:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/26/2026 04:05:58 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:05:51 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 05:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:05:51 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 05:05:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 05:05:51 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:05:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 05:05:51 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 05:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/26/2026 05:05:51 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:05:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 05:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 05:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 05:05:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:05:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 05:05:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 05:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 05:05:55 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:05:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:05:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 05:05:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:05:58 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 05:05:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 05:05:58 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:05:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 05:05:58 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 05:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 05:05:58 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 06:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/26/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 06:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 06:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 06:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:06:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 06:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 06:06:55 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 06:06:55 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 06:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 06:06:55 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 06:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 06:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 06:06:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/26/2026 06:06:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/26/2026 06:06:56 AM cron_common.py ln 414 Character articles: 93
INFO 04/26/2026 06:06:56 AM create_articles.py ln 126 Character articles loaded (0.51s)
INFO 04/26/2026 06:06:56 AM create_articles.py ln 128 Setup complete (0.99s total)
INFO 04/26/2026 06:06:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/26/2026 06:06:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260426_060656_news_Hawk.log
INFO 04/26/2026 06:06:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/26/2026 06:06:56 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/26/2026 06:06:56 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/26/2026 06:06:57 AM article_creation_service.py ln 766 Loaded 93 articles for character (0.52s)
INFO 04/26/2026 06:06:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/26/2026 06:06:57 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/26/2026 06:06:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/26/2026 06:06:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/26/2026 06:06:59 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/26/2026 06:06:59 AM chat.py ln 159 Found 5 results
INFO 04/26/2026 06:06:59 AM article_creation_service.py ln 766 Found 5 search results (1.41s)
INFO 04/26/2026 06:06:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260426_060656_news_Hawk_search.md
INFO 04/26/2026 06:06:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/26/2026 06:07:41 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/26/2026 06:07:41 AM article_creation_service.py ln 766 Generated article - Hawk’s Sunday Brief: WHCD security breach triggers scrutiny; IEA flags Hormuz as “biggest energy security threat” as markets whipsaw (42.46s)
INFO 04/26/2026 06:07:41 AM article_creation_service.py ln 766 Created WP post 1124 (0.09s)
INFO 04/26/2026 06:07:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/26/2026 06:07:43 AM wp.py ln 833 Prompt: Prompt for featured image generation:
Create a split-screen, news-style illustration capturing the two main themes of the article. On the left, depict a dramatic security incident at a prestigious, formal evening event: a suited security agent confronts a blurred, fast-moving intruder near a security checkpoint with metal detectors, set against the backdrop of a grand hotel ballroom with suited guests and bright lights, hinting at the White House Correspondents’ Dinner. On the right, illustrate the geopolitical tension at the Strait of Hormuz: show a narrow, strategic waterway with oil tankers in the crosshairs, flanked by ominous military silhouettes or warships, with a stylized world energy market chart overlay and oil price indicators. Use a sophisticated, urgent color palette to convey both immediate security risks and global economic stakes. Add a sense of movement and tension throughout the scene.
INFO 04/26/2026 06:08:04 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/26/2026 06:08:05 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/26/2026 06:08:05 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-26.jpeg
INFO 04/26/2026 06:08:05 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-26.jpeg
INFO 04/26/2026 06:08:05 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MTgzNjE2LCJuYmYiOjE3NzcxODM2MTYsImV4cCI6MTc3Nzc4ODQxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.3DnFKBUDbgeaJCTjseXyOygBSnYqSfkUq7tLRWH_MHo
INFO 04/26/2026 06:08:05 AM image.py ln 220 filename is 2026-04-26.webp
INFO 04/26/2026 06:08:05 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-26.webp'>}
INFO 04/26/2026 06:08:06 AM article_creation_service.py ln 766 Featured image posted (24.56s)
INFO 04/26/2026 06:08:06 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 354.33 KB
INFO 04/26/2026 06:08:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/26/2026 06:08:11 AM wp.py ln 904 Secondary Image Prompt: ### Prompt for Complementary Image
Create an image capturing a tense yet controlled environment outside a high-security gala event. In the foreground, an array of security personnel, clad in sleek suits, maintain vigilant stances as they monitor the area. Some are checking credentials from attendees while others scan the vicinity, utilizing high-tech gadgets.
In the background, a blurred view of the gala can be seen through large, elegant windows, with soft golden light spilling out, suggesting a celebratory atmosphere inside. The color palette should mirror the warm hues of the featured image, incorporating deep oranges, golds, and subtle reds to evoke a sense of urgency amidst the celebration.
Add visual cues indicating heightened security, such as a metal detector at the entrance and a police car idling nearby with flashing lights. Elements that symbolize the stakes of energy security, such as a subtle graph overlay or an oil tanker silhouette on the horizon, can hint at the broader context of the weekend's events without being overtly prominent. Aim for a cohesive atmosphere that reflects both the celebratory and tense nature of the situation.
INFO 04/26/2026 06:08:32 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/26/2026 06:08:33 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/26/2026 06:08:33 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-26-1.jpeg
INFO 04/26/2026 06:08:33 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-26-1.jpeg
INFO 04/26/2026 06:08:33 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MTgzNjE2LCJuYmYiOjE3NzcxODM2MTYsImV4cCI6MTc3Nzc4ODQxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.3DnFKBUDbgeaJCTjseXyOygBSnYqSfkUq7tLRWH_MHo
INFO 04/26/2026 06:08:33 AM image.py ln 220 filename is 2026-04-26-1.webp
INFO 04/26/2026 06:08:33 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-26-1.webp'>}
INFO 04/26/2026 06:08:33 AM article_creation_service.py ln 766 Secondary image uploaded (27.56s)
INFO 04/26/2026 06:08:33 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/26/2026 06:08:33 AM wp.py ln 964 Post content updated successfully for post 1124
INFO 04/26/2026 06:08:33 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/26/2026 06:08:36 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/26/2026 06:08:46 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in the sources. Both major storylines—the White House Correspondents' Dinner security breach and the Strait of Hormuz energy crisis—are substantiated by the source material.
**WHCD Security Incident:** The article's description of video showing a suspect breaching security, running through a metal detector toward the ballroom where the president was seated, directly matches Source 2 (Newsweek). The reporting that D.C. officials held a briefing with a suspect in custody aligns with Source 3 (Modern Ghana/ABC).
INFO 04/26/2026 06:08:46 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/26/2026 06:08:46 AM article_creation_service.py ln 766 Fact-check comment posted (12.54s)
INFO 04/26/2026 06:08:46 AM article_creation_service.py ln 766 Article creation completed successfully (total: 109.76s)
INFO 04/26/2026 06:08:46 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/26/2026 06:08:46 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/26/2026 06:08:46 AM create_articles.py ln 204 Script completed (110.76s total)
INFO 04/26/2026 07:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 07:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 07:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 07:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/26/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 07:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 07:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 07:05:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 07:05:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 07:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 07:05:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 07:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 07:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 07:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 07:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 07:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 07:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 07:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 07:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/26/2026 07:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/26/2026 07:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 07:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/26/2026 08:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 08:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:05:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/26/2026 08:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 08:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 08:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 08:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/26/2026 08:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 08:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 08:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:05:53 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/26/2026 08:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 08:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 08:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 08:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/26/2026 08:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 08:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 08:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:05:56 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/26/2026 08:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 08:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 08:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 08:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/26/2026 08:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 08:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 08:05:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/26/2026 08:05:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/26/2026 08:05:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 08:05:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/26/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/26/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 09:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/26/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 09:06:52 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 09:06:52 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 09:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 09:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 09:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 09:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 09:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 09:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 09:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 09:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 09:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/26/2026 09:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/26/2026 09:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 09:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/26/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 10:06:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/26/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:06:53 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/26/2026 10:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 10:06:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 10:06:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 10:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 10:06:53 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 10:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 10:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:06:56 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 10:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 10:06:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 10:06:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 10:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/26/2026 10:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 10:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 10:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/26/2026 10:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/26/2026 10:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 10:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/26/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 11:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 11:05:49 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 11:05:49 AM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 11:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/26/2026 11:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 11:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 11:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/26/2026 11:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 11:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 11:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 11:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 11:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 11:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 11:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 11:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 11:05:56 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 11:05:56 AM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 11:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 11:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/26/2026 11:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/26/2026 11:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/26/2026 11:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/26/2026 11:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/26/2026 11:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/26/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 12:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/26/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 12:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 12:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 12:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 12:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 12:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 12:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 12:06:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 12:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 12:06:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 12:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 12:06:55 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 01:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 01:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/26/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 01:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 01:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 01:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 01:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 01:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 01:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 01:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 01:06:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 01:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 01:06:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 01:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/26/2026 01:06:55 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 02:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/26/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 02:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 02:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 02:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 02:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 02:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 02:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 02:05:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 02:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 02:05:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 02:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 02:05:55 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 02:10:55 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/26/2026 02:10:55 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/26/2026 02:10:55 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/26/2026 02:10:56 PM user.py ln 62 Login response status code: 200
INFO 04/26/2026 02:10:56 PM user.py ln 63 Login response headers: {'Date': 'Sun, 26 Apr 2026 14:10:55 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/26/2026 02:10:56 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/26/2026 02:10:56 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzIxMjY1NiwibmJmIjoxNzc3MjEyNjU2LCJleHAiOjE3Nzc4MTc0NTYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.W45bBQq39AsjIVPD84RVhPHIVk8LF8199802G8g-Qns","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/26/2026 02:10:56 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzIxMjY1NiwibmJmIjoxNzc3MjEyNjU2LCJleHAiOjE3Nzc4MTc0NTYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.W45bBQq39AsjIVPD84RVhPHIVk8LF8199802G8g-Qns', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/26/2026 02:10:56 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/26/2026 03:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 03:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 03:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 03:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 03:07:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 03:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/26/2026 03:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 03:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 03:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:07:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 03:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 03:07:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 03:07:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 03:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 03:07:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 03:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 03:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 03:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 03:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 03:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 03:07:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 03:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 03:07:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 03:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 03:07:56 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/26/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 04:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/26/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 04:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 04:06:53 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 04:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 04:06:53 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 04:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 04:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 04:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 04:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 04:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 04:06:56 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 04:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 04:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 04:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/26/2026 04:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 05:06:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/26/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/26/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 05:06:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 05:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 05:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 05:06:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 05:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 05:06:56 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 06:05:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/26/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 06:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 06:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 06:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 06:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 06:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 06:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 06:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 06:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 06:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 06:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 06:05:55 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 06:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 06:05:55 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 06:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 06:05:55 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:12:47 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/26/2026 07:14:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:14:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 07:14:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:14:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/26/2026 07:14:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 07:14:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:14:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 07:14:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 07:14:40 PM create_articles.py ln 100 Characters fetched and filtered (0.39s)
INFO 04/26/2026 07:14:40 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:14:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:14:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 07:14:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:14:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 07:14:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 07:14:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:14:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 07:14:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 07:14:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 07:14:43 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:14:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 07:14:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 07:14:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 07:14:46 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 07:14:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 07:14:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 07:14:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 07:14:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 07:14:47 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/26/2026 07:14:47 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 07:34:03 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/26/2026 07:34:04 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/26/2026 07:34:04 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/26/2026 07:34:04 PM user.py ln 62 Login response status code: 200
INFO 04/26/2026 07:34:04 PM user.py ln 63 Login response headers: {'Date': 'Sun, 26 Apr 2026 19:34:04 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/26/2026 07:34:04 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/26/2026 07:34:04 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzIzMjA0NCwibmJmIjoxNzc3MjMyMDQ0LCJleHAiOjE3Nzc4MzY4NDQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.g2sw9ghmHTt0GomxSUSMTo0RhRT-X-mffucZyMSG2K4","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/26/2026 07:34:04 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzIzMjA0NCwibmJmIjoxNzc3MjMyMDQ0LCJleHAiOjE3Nzc4MzY4NDQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.g2sw9ghmHTt0GomxSUSMTo0RhRT-X-mffucZyMSG2K4', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/26/2026 07:34:04 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/26/2026 08:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 08:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:07:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/26/2026 08:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 08:07:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 08:07:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 08:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/26/2026 08:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 08:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 08:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:07:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 08:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 08:07:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 08:07:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 08:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 08:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 08:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 08:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 08:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 08:07:46 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/26/2026 08:07:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 08:07:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 08:07:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 08:07:46 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 08:07:46 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 08:07:46 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 09:05:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:05:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 09:05:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:05:42 PM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/26/2026 09:05:42 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 09:05:42 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:05:42 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 09:05:42 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 09:05:42 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/26/2026 09:05:42 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 09:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:05:46 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 09:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:05:47 PM create_articles.py ln 93 JWT token obtained (0.69s)
INFO 04/26/2026 09:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 09:05:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:05:47 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 09:05:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 09:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 09:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 09:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 09:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 09:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.65s)
INFO 04/26/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 09:05:52 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 10:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 10:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:05:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/26/2026 10:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 10:05:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 10:05:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 10:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/26/2026 10:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 10:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 10:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 10:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 10:05:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 10:05:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 10:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 10:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 10:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 10:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 10:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 10:05:46 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/26/2026 10:05:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 10:05:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 10:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 10:05:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 10:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 10:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 11:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/26/2026 11:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/26/2026 11:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/26/2026 11:06:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/26/2026 11:06:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/26/2026 11:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/26/2026 11:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 11:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/26/2026 11:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:06:43 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/26/2026 11:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/26/2026 11:06:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/26/2026 11:06:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 11:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 11:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/26/2026 11:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/26/2026 11:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/26/2026 11:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/26/2026 11:06:46 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/26/2026 11:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/26/2026 11:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/26/2026 11:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/26/2026 11:06:46 PM cron_common.py ln 313 filtered characters: 12
INFO 04/26/2026 11:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/26/2026 11:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 12:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 12:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 12:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 12:07:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 12:07:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 12:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/27/2026 12:07:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 12:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 12:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:07:44 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 12:07:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 12:07:44 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:07:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 12:07:44 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 12:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 12:07:44 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 12:07:44 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 12:07:44 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/27/2026 12:07:44 AM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 04/27/2026 12:07:44 AM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 04/27/2026 12:07:44 AM cron_common.py ln 414 Character articles: 17
INFO 04/27/2026 12:07:44 AM create_articles.py ln 126 Character articles loaded (0.17s)
INFO 04/27/2026 12:07:44 AM create_articles.py ln 128 Setup complete (0.65s total)
INFO 04/27/2026 12:07:44 AM create_articles.py ln 140 Creating article for character: Geneva
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260427_000744_dev_Geneva.log
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Article creation started for character: Geneva
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Loaded 17 articles for character (0.16s)
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Got 9 categories and 32 tags (0.11s)
INFO 04/27/2026 12:07:44 AM article_creation_service.py ln 766 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 04/27/2026 12:07:44 AM chat.py ln 139 Tavily search will filter to past week
INFO 04/27/2026 12:07:47 AM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 04/27/2026 12:07:47 AM chat.py ln 159 Found 5 results
INFO 04/27/2026 12:07:47 AM article_creation_service.py ln 766 Found 5 search results (2.89s)
INFO 04/27/2026 12:07:47 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260427_000744_dev_Geneva_search.md
INFO 04/27/2026 12:07:47 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/27/2026 12:09:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:09:10 AM article_creation_service.py ln 766 Generated article - Terminal agent wars in 2026: Claude Code vs Codex vs Gemini CLI — how to choose and wire them together (82.40s)
INFO 04/27/2026 12:09:10 AM article_creation_service.py ln 766 Created WP post 818 (0.11s)
INFO 04/27/2026 12:09:12 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:09:12 AM wp.py ln 833 Prompt: Prompt for Generating a Featured Image:
Create a dynamic, modern illustration representing the "Terminal Agent Wars 2026." Show three distinct but interconnected command-line terminal windows, each branded subtly with the logos or color schemes of Claude Code (e.g., orange/yellow highlights), OpenAI Codex CLI (blue/white), and Gemini CLI (multicolor or purple hues). Each terminal window should have AI or digital agent motifs—robotic or abstract avatars typing, lines of code or system commands visible. Visualize them as collaborating over a circuit-like data network, with arrows indicating connectivity and skill-sharing between them. In the background, emphasize a futuristic developer workspace with a glowing terminal as the central hub, hinting at automation, integration, and the energy of engineering innovation. Style: clean, tech-forward, slightly futuristic, avoiding any company copyrights.
INFO 04/27/2026 12:09:34 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 12:09:34 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/27/2026 12:09:34 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-27.jpeg
INFO 04/27/2026 12:09:34 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-27.jpeg
INFO 04/27/2026 12:09:34 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzcyNDg0NjQsIm5iZiI6MTc3NzI0ODQ2NCwiZXhwIjoxNzc3ODUzMjY0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.HuC8da-EyhIBlY2snpPB4xbJXN-OI9VVm8VDK2zK5D8
INFO 04/27/2026 12:09:34 AM image.py ln 220 filename is 2026-04-27.webp
INFO 04/27/2026 12:09:34 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-27.webp'>}
INFO 04/27/2026 12:09:35 AM article_creation_service.py ln 766 Featured image posted (24.89s)
INFO 04/27/2026 12:09:35 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 327.71 KB
INFO 04/27/2026 12:09:38 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:09:38 AM wp.py ln 904 Secondary Image Prompt: **Prompt for Generating a Complementary Image:**
Create an image that depicts a futuristic coding environment in 2026, focusing on the integration of multiple AI agents. Instead of showing the agents at work in a terminal, illustrate a vibrant and dynamic workspace with holographic interfaces that visualize data flow and collaboration among the agents. Emphasize the interaction between the environments of Claude Code, Codex, and Gemini CLI, conveying a sense of seamless connectivity and teamwork.
Use a similar color palette to the featured image, incorporating bright blues, oranges, and purples to maintain visual harmony. Include imagery of glowing digital screens displaying code snippets and process flows, while showcasing diverse robotic figures symbolizing each agent. The setting should feel energetic and innovative, reflecting the advancements in AI coding environments and emphasizing concepts like collaboration, automation, and intelligent design.
INFO 04/27/2026 12:10:01 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 12:10:01 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 04/27/2026 12:10:01 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-27-1.jpeg
INFO 04/27/2026 12:10:01 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-04-27-1.jpeg
INFO 04/27/2026 12:10:01 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzcyNDg0NjQsIm5iZiI6MTc3NzI0ODQ2NCwiZXhwIjoxNzc3ODUzMjY0LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.HuC8da-EyhIBlY2snpPB4xbJXN-OI9VVm8VDK2zK5D8
INFO 04/27/2026 12:10:01 AM image.py ln 220 filename is 2026-04-27-1.webp
INFO 04/27/2026 12:10:01 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-04-27-1.webp'>}
INFO 04/27/2026 12:10:02 AM article_creation_service.py ln 766 Secondary image uploaded (27.25s)
INFO 04/27/2026 12:10:02 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/27/2026 12:10:02 AM wp.py ln 964 Post content updated successfully for post 818
INFO 04/27/2026 12:10:02 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/27/2026 12:10:04 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/27/2026 12:10:17 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the source material provided. The key claims align well with the sources:
**Verified Claims:**
- **Terminal-first competition**: Sources confirm Claude Code, Codex CLI, and Gemini CLI are competing in the terminal-based agent space, with the terminal described as "the new battleground" [[2]](https://mightybot.ai/blog/coding-ai-agents-for-accelerating-engineering-workflows/).
- **Launch dates & technical details**: Codex CLI's February 2026 public launch, npm installation, and GPT-5 series backing are documented [[1]](https://intuitio
INFO 04/27/2026 12:10:17 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/27/2026 12:10:18 AM article_creation_service.py ln 766 Fact-check comment posted (15.43s)
INFO 04/27/2026 12:10:18 AM article_creation_service.py ln 766 Article creation completed successfully (total: 153.72s)
INFO 04/27/2026 12:10:18 AM create_articles.py ln 185 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 04/27/2026 12:10:18 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/27/2026 12:10:18 AM create_articles.py ln 204 Script completed (154.38s total)
INFO 04/27/2026 12:10:21 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:10:21 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 12:10:21 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:10:21 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 12:10:21 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 12:10:21 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:10:21 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 12:10:21 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 12:10:21 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 12:10:21 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 01:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 01:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:06:40 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 01:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 01:06:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 01:06:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 01:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 01:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 01:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 01:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:06:44 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 01:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 01:06:44 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 01:06:44 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 01:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 01:06:44 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 01:06:44 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 01:06:44 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 01:06:44 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 01:06:44 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 01:06:44 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 01:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 01:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:06:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/27/2026 01:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 01:06:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 01:06:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 01:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 01:06:47 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 02:05:41 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:05:41 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 02:05:41 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:05:42 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/27/2026 02:05:42 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 02:05:42 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:05:42 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 02:05:42 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 02:05:42 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 04/27/2026 02:05:42 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 02:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:05:47 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 02:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:05:47 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/27/2026 02:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 02:05:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:05:47 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 02:05:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 02:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 02:05:47 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 02:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 02:05:48 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 02:05:48 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 02:05:48 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/27/2026 02:05:48 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:05:53 AM create_articles.py ln 93 JWT token obtained (0.69s)
INFO 04/27/2026 02:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 02:05:53 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 02:05:53 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 02:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/27/2026 02:05:53 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 03:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 03:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 03:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 03:05:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 03:05:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 03:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 03:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 03:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 03:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 03:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 03:05:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 03:05:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 03:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 03:05:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 03:05:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 03:05:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 03:05:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 03:05:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 03:05:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 03:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 03:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:05:47 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 03:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 03:05:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 03:05:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 03:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 03:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 04:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 04:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:40 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/27/2026 04:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 04:06:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 04:06:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 04:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/27/2026 04:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 04:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 04:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:43 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 04:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 04:06:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 04:06:44 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 04:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 04:06:44 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 04:06:44 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 04:06:44 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 04:06:44 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 04:06:44 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 04:06:44 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 04:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 04:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:47 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 04:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 04:06:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 04:06:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 04:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 04:06:47 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 04:12:04 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 04:12:05 AM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 04:12:05 AM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 04:12:06 AM user.py ln 62 Login response status code: 200
INFO 04/27/2026 04:12:06 AM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 04:12:05 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 04:12:06 AM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 04:12:06 AM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI2MzEyNiwibmJmIjoxNzc3MjYzMTI2LCJleHAiOjE3Nzc4Njc5MjYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.1baVVOuXeBk8ELXDWgot9Qr33sGByD36CTY9xKlPN-I","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 04:12:06 AM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI2MzEyNiwibmJmIjoxNzc3MjYzMTI2LCJleHAiOjE3Nzc4Njc5MjYsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.1baVVOuXeBk8ELXDWgot9Qr33sGByD36CTY9xKlPN-I', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 04:12:06 AM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 05:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 05:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:05:40 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/27/2026 05:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 05:05:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 05:05:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 05:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 05:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 05:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:05:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 05:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:05:44 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/27/2026 05:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 05:05:44 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 05:05:44 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 05:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/27/2026 05:05:44 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 05:05:44 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 05:05:44 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 05:05:44 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 05:05:44 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 05:05:44 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 05:05:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:05:48 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 05:05:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:05:48 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/27/2026 05:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 05:05:48 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:05:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 05:05:48 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 05:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 05:05:48 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 06:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 06:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 06:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 06:06:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 06:06:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 06:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/27/2026 06:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 06:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 06:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:06:43 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 06:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 06:06:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 06:06:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 06:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 06:06:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 06:06:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 06:06:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 06:06:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 06:06:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 06:06:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 06:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 06:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:06:47 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 04/27/2026 06:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 06:06:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 06:06:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 06:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 06:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 06:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 06:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/27/2026 06:06:47 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/27/2026 06:06:47 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/27/2026 06:06:47 AM cron_common.py ln 414 Character articles: 94
INFO 04/27/2026 06:06:47 AM create_articles.py ln 126 Character articles loaded (0.51s)
INFO 04/27/2026 06:06:47 AM create_articles.py ln 128 Setup complete (0.94s total)
INFO 04/27/2026 06:06:47 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/27/2026 06:06:47 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260427_060647_news_Hawk.log
INFO 04/27/2026 06:06:47 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/27/2026 06:06:47 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 04/27/2026 06:06:48 AM article_creation_service.py ln 766 Fetched WP users (0.05s)
INFO 04/27/2026 06:06:48 AM article_creation_service.py ln 766 Loaded 94 articles for character (0.52s)
INFO 04/27/2026 06:06:48 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/27/2026 06:06:48 AM article_creation_service.py ln 766 Searching for 'latest headline news' (topic: news)
INFO 04/27/2026 06:06:48 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/27/2026 06:06:48 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/27/2026 06:06:50 AM chat.py ln 154 Tavily search for 'latest headline news' completed
INFO 04/27/2026 06:06:50 AM chat.py ln 159 Found 5 results
INFO 04/27/2026 06:06:50 AM article_creation_service.py ln 766 Found 5 search results (1.84s)
INFO 04/27/2026 06:06:50 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260427_060647_news_Hawk_search.md
INFO 04/27/2026 06:06:50 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/27/2026 06:07:28 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 06:07:28 AM article_creation_service.py ln 766 Generated article - Hawk’s Monday Brief: Gaza’s first vote in 20 years, Israel–Lebanon flashpoint warnings, and jet-fuel jitters as Iran talks seesaw (37.97s)
INFO 04/27/2026 06:07:28 AM article_creation_service.py ln 766 Created WP post 1129 (0.09s)
INFO 04/27/2026 06:07:32 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 06:07:32 AM wp.py ln 833 Prompt: Prompt for Featured Image:
Create a compelling composite image that visually represents the central themes of the article: a symbolic voting scene in Gaza (such as Palestinians at a ballot box), heightened military tension along the Israel–Lebanon border (depicting soldiers, warning signs, or border landscapes), and the global impact on aviation (airplanes grounded or jet fuel pumps, with price indicators). Integrate subtle visual cues of crisis and diplomacy, like news headlines, peace doves, or diplomats shaking hands in the background. The color palette should evoke urgency and tension—use somber tones interspersed with hints of hope. Aim for a balanced, news-magazine style composition suitable for an international affairs feature.
INFO 04/27/2026 06:07:57 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 06:07:57 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/27/2026 06:07:57 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27.jpeg
INFO 04/27/2026 06:07:57 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-27.jpeg
INFO 04/27/2026 06:07:57 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MjcwMDA3LCJuYmYiOjE3NzcyNzAwMDcsImV4cCI6MTc3Nzg3NDgwNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iwEuVSnsb5gtmBtivhpEHWJDAiMAX7JlSiRSal0curk
INFO 04/27/2026 06:07:57 AM image.py ln 220 filename is 2026-04-27.webp
INFO 04/27/2026 06:07:57 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27.webp'>}
INFO 04/27/2026 06:07:58 AM article_creation_service.py ln 766 Featured image posted (29.74s)
INFO 04/27/2026 06:07:58 AM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 426.19 KB
INFO 04/27/2026 06:08:02 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 06:08:02 AM wp.py ln 904 Secondary Image Prompt: ### Prompt for Complementary Image
Create an image depicting a tense yet hopeful scene in an urban environment reflecting the ongoing conflict and political change in the Middle East. The setting should be a vibrant street market in Gaza, infused with warm, earthy tones reminiscent of the featured image.
In this scene, illustrate a diverse group of individuals engaged in animated discussions, showcasing expressions of determination and hope. Include visible signs of cultural elements, such as traditional clothing, colorful market stalls, and Palestinian banners symbolizing resilience.
In the background, include faint silhouettes of mountains and buildings, suggesting the geopolitical landscape, but opt for a softer, more hopeful sky transitioning from sunset hues to dawn, symbolizing potential change. This contrast emphasizes that despite the ongoing conflicts, there is a sense of community and an aspiration for a better future.
Introduce subtle elements like graffiti on walls depicting peace symbols, and perhaps a distant figure observing the scene with binoculars, hinting at the ongoing tensions. This image should evoke a feeling of unity and transformation, complementing the gravity found in the original image while portraying a new perspective on the region’s struggles and aspirations.
INFO 04/27/2026 06:08:25 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 06:08:25 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/27/2026 06:08:25 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-1.jpeg
INFO 04/27/2026 06:08:25 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-27-1.jpeg
INFO 04/27/2026 06:08:25 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MjcwMDA3LCJuYmYiOjE3NzcyNzAwMDcsImV4cCI6MTc3Nzg3NDgwNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iwEuVSnsb5gtmBtivhpEHWJDAiMAX7JlSiRSal0curk
INFO 04/27/2026 06:08:25 AM image.py ln 220 filename is 2026-04-27-1.webp
INFO 04/27/2026 06:08:25 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-1.webp'>}
INFO 04/27/2026 06:08:26 AM article_creation_service.py ln 766 Secondary image uploaded (27.73s)
INFO 04/27/2026 06:08:26 AM wp.py ln 935 Inserted image after second paragraph
INFO 04/27/2026 06:08:26 AM wp.py ln 964 Post content updated successfully for post 1129
INFO 04/27/2026 06:08:26 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/27/2026 06:08:30 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/27/2026 06:08:41 AM chat.py ln 348 AI comment: I need to verify the article's claims against the provided sources. Let me examine each major claim:
**MAJOR ISSUE: Complete mismatch between article and sources**
The article claims to report on:
1. Gaza's first local election in 20 years
2. Israeli military evacuation warnings in southern Lebanon
3. Casualty figures from an Iran conflict
4. Jet fuel supply issues affecting airlines
5. U.S.-Iran diplomatic talks in Pakistan
However, the provided sources are:
- **Source 1 (27% relevance)**: UK visa fraud case in India - completely unrelated
- **Source 2 (9% relevance)**: Census self-enumer
INFO 04/27/2026 06:08:41 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/27/2026 06:08:41 AM article_creation_service.py ln 766 Fact-check comment posted (15.59s)
INFO 04/27/2026 06:08:41 AM article_creation_service.py ln 766 Article creation completed successfully (total: 114.09s)
INFO 04/27/2026 06:08:41 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/27/2026 06:08:41 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/27/2026 06:08:41 AM create_articles.py ln 204 Script completed (115.04s total)
INFO 04/27/2026 07:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 07:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 07:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 07:07:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 07:07:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 07:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/27/2026 07:07:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 07:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 07:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:07:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 07:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 07:07:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 07:07:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 07:07:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 07:07:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 07:07:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 07:07:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 07:07:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 07:07:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 07:07:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 07:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:07:47 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 07:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 07:07:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 07:07:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 07:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 07:07:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 07:07:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 07:07:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/27/2026 07:07:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 07:07:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 07:07:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 08:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 08:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 08:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 08:05:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 08:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 08:05:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 08:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 08:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 08:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 08:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 08:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 08:05:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 08:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 08:05:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 08:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 08:05:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 08:05:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 08:05:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 08:05:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 08:05:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 08:05:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 08:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 08:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:47 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 08:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 08:05:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 08:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 08:05:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 08:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 08:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 08:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 08:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/27/2026 08:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 08:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 08:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 09:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 09:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:06:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 09:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 09:06:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 09:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 09:06:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 09:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/27/2026 09:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 09:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 09:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:06:44 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/27/2026 09:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 09:06:44 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 09:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 09:06:44 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 09:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/27/2026 09:06:44 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 09:06:44 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 09:06:44 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 09:06:44 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 09:06:44 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 09:06:44 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 09:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 09:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:06:47 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 09:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 09:06:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 09:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 09:06:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 09:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 09:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 09:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 09:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/27/2026 09:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 09:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 09:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 10:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 10:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 10:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 10:05:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 10:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 10:05:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 10:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/27/2026 10:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 10:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 10:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 10:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 10:05:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 10:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 10:05:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 10:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 10:05:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 10:05:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 10:05:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 10:05:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 10:05:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 10:05:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 10:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 10:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:47 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 04/27/2026 10:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 10:05:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 10:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 10:05:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 10:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 10:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 10:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 10:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/27/2026 10:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 10:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 10:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 11:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 11:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 11:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 11:06:40 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 11:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 11:06:40 AM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 11:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 11:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 11:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 11:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:06:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 11:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 11:06:43 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 11:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 11:06:43 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 11:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 11:06:43 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 11:06:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 11:06:43 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 11:06:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 11:06:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 11:06:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 11:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 11:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:06:47 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 11:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 11:06:47 AM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 11:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 11:06:47 AM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 11:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 04/27/2026 11:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/27/2026 11:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 11:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/27/2026 11:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 11:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 11:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 12:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 12:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 12:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 12:06:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 12:06:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 12:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/27/2026 12:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 12:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 12:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:06:43 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 12:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 12:06:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 12:06:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 12:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 12:06:43 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 12:06:43 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 12:06:43 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 12:06:43 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 12:06:43 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 12:06:43 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 12:06:46 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 12:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 12:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 12:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 12:06:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 12:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 12:06:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 12:06:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 12:06:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 04/27/2026 12:06:47 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/27/2026 12:06:47 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/27/2026 12:06:47 PM cron_common.py ln 414 Character articles: 39
INFO 04/27/2026 12:06:47 PM create_articles.py ln 126 Character articles loaded (0.24s)
INFO 04/27/2026 12:06:47 PM create_articles.py ln 128 Setup complete (0.71s total)
INFO 04/27/2026 12:06:47 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/27/2026 12:06:47 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260427_120647_news_Dusty.log
INFO 04/27/2026 12:06:47 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 04/27/2026 12:06:47 PM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 04/27/2026 12:06:47 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 04/27/2026 12:06:47 PM article_creation_service.py ln 766 Loaded 39 articles for character (0.24s)
INFO 04/27/2026 12:06:48 PM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 04/27/2026 12:06:48 PM article_creation_service.py ln 766 Searching for 'Latest US extreme weather' (topic: news)
INFO 04/27/2026 12:06:48 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com']
INFO 04/27/2026 12:06:48 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/27/2026 12:06:49 PM chat.py ln 154 Tavily search for 'Latest US extreme weather' completed
INFO 04/27/2026 12:06:49 PM chat.py ln 159 Found 5 results
INFO 04/27/2026 12:06:49 PM article_creation_service.py ln 766 Found 5 search results (1.86s)
INFO 04/27/2026 12:06:49 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260427_120647_news_Dusty_search.md
INFO 04/27/2026 12:06:49 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/27/2026 12:07:18 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:07:18 PM article_creation_service.py ln 766 Generated article - Severe Spring Weather Hammers the U.S.: Tornado Outbreaks, Wildfires, and Flood Threats Test Communities (28.74s)
INFO 04/27/2026 12:07:18 PM article_creation_service.py ln 766 Created WP post 1134 (0.09s)
INFO 04/27/2026 12:07:23 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:07:23 PM wp.py ln 833 Prompt: Prompt for Featured Image Generation:
Create a dramatic, composite image illustrating the severe spring weather crisis impacting the U.S. Split the image into three sections that blend together seamlessly:
- On the left, depict a powerful, swirling tornado tearing through a Midwest Plains landscape (with uprooted trees, damaged homes, and a sense of motion and destruction).
- In the center, show a raging wildfire in a Southeast pine forest, with intense orange flames, thick smoke, and firefighters battling the blaze.
- On the right, visualize a coastal flood scenario — suburban houses surrounded by rising, murky water and anxious residents preparing to evacuate.
Unify the scene with a dark, ominous sky filled with storm clouds suggesting multiple weather threats converging at once, and highlight a sense of community resilience and preparedness amidst the chaos. The overall mood should be urgent but hopeful.
INFO 04/27/2026 12:07:45 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 12:07:45 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/27/2026 12:07:45 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-2.jpeg
INFO 04/27/2026 12:07:45 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-27-2.jpeg
INFO 04/27/2026 12:07:45 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MjkxNjA3LCJuYmYiOjE3NzcyOTE2MDcsImV4cCI6MTc3Nzg5NjQwNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.ztyiyTOQpTuigpgO3crevn0xjj1v4QGvig7LC5nJ9-I
INFO 04/27/2026 12:07:45 PM image.py ln 220 filename is 2026-04-27-2.webp
INFO 04/27/2026 12:07:45 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-2.webp'>}
INFO 04/27/2026 12:07:46 PM article_creation_service.py ln 766 Featured image posted (27.80s)
INFO 04/27/2026 12:07:46 PM wp.py ln 854 Using vision analysis for secondary image. Featured image base64 size: 383.44 KB
INFO 04/27/2026 12:07:55 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 12:07:55 PM wp.py ln 904 Secondary Image Prompt: ### Prompt for Secondary Image
Create a dramatic outdoor scene highlighting the resilience and community spirit in the face of extreme weather challenges. In this image, depict a group of diverse volunteers working together to construct sandbag barriers along a flooded street. The sky should be a menacing mix of dark, stormy clouds, with flashes of lightning in the distance, capturing the tension of an impending storm.
Include elements that emphasize community support—individuals handing bags to one another, some wearing raincoats, and others guiding families to safer areas. The foreground should show water encroaching on homes, but the focus should be on the unity of the people working together, conveying hope and determination against adverse conditions.
The overall color palette should maintain a moody atmosphere with blues, greys, and splashes of warmth from the volunteers' clothing—hints of yellow and orange—to symbolize resilience. This image should evoke a sense of urgency but also hope, showcasing the human spirit amidst environmental challenges.
INFO 04/27/2026 12:08:18 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/generations "HTTP/1.1 200 OK"
INFO 04/27/2026 12:08:18 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/27/2026 12:08:18 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-3.jpeg
INFO 04/27/2026 12:08:18 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-27-3.jpeg
INFO 04/27/2026 12:08:18 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MjkxNjA3LCJuYmYiOjE3NzcyOTE2MDcsImV4cCI6MTc3Nzg5NjQwNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.ztyiyTOQpTuigpgO3crevn0xjj1v4QGvig7LC5nJ9-I
INFO 04/27/2026 12:08:18 PM image.py ln 220 filename is 2026-04-27-3.webp
INFO 04/27/2026 12:08:18 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-3.webp'>}
INFO 04/27/2026 12:08:19 PM article_creation_service.py ln 766 Secondary image uploaded (32.64s)
INFO 04/27/2026 12:08:19 PM wp.py ln 935 Inserted image after second paragraph
INFO 04/27/2026 12:08:19 PM wp.py ln 964 Post content updated successfully for post 1134
INFO 04/27/2026 12:08:19 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/27/2026 12:08:21 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/27/2026 12:08:32 PM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in the source material. All major claims are substantiated:
**Tornado Coverage**: The Weather Channel source confirms the ongoing severe weather threat through the weekend affecting Texas, Oklahoma, and Kansas, with over 1,300 severe weather reports the previous week including 152 tornado reports and 94 tornado reports on Friday alone. The AP News source verifies the Springtown, Texas tornado on Sunday that killed at least two people and destroyed multiple homes, with details about uprooted trees, damaged powe
INFO 04/27/2026 12:08:32 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/27/2026 12:08:32 PM article_creation_service.py ln 766 Fact-check comment posted (13.36s)
INFO 04/27/2026 12:08:32 PM article_creation_service.py ln 766 Article creation completed successfully (total: 105.34s)
INFO 04/27/2026 12:08:32 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/27/2026 12:08:32 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/27/2026 12:08:32 PM create_articles.py ln 204 Script completed (106.05s total)
INFO 04/27/2026 12:35:10 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 12:35:18 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 12:35:18 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 12:35:18 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 12:35:18 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 12:35:18 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 12:35:18 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 12:35:18 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI5MzMxOCwibmJmIjoxNzc3MjkzMzE4LCJleHAiOjE3Nzc4OTgxMTgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.9D187rvl5xYdduvaQQnUjXldSEdwJ5642DjVrjREWRg","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 12:35:18 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI5MzMxOCwibmJmIjoxNzc3MjkzMzE4LCJleHAiOjE3Nzc4OTgxMTgsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.9D187rvl5xYdduvaQQnUjXldSEdwJ5642DjVrjREWRg', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 12:35:18 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 01:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 01:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:05:40 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 01:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 01:05:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 01:05:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 01:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/27/2026 01:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 01:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 01:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:05:43 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/27/2026 01:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 01:05:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 01:05:44 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 01:05:44 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 01:05:44 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 01:05:44 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 01:05:44 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 01:05:44 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 01:05:44 PM create_articles.py ln 116 Already-posted-today filter applied (0.09s)
INFO 04/27/2026 01:05:44 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 01:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 01:05:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 01:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 01:05:47 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 01:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 01:05:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 01:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 01:05:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 01:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 01:05:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 01:05:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 01:05:47 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/27/2026 01:05:47 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 01:05:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 01:05:47 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 01:31:53 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 01:31:53 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 01:31:53 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 01:31:54 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 01:31:54 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 13:31:53 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 01:31:54 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 01:31:54 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI5NjcxNCwibmJmIjoxNzc3Mjk2NzE0LCJleHAiOjE3Nzc5MDE1MTQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.UA2xKJ4_zF_640SvMSSb3-qMytQlcps7FPLwECCfKmA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 01:31:54 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzI5NjcxNCwibmJmIjoxNzc3Mjk2NzE0LCJleHAiOjE3Nzc5MDE1MTQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.UA2xKJ4_zF_640SvMSSb3-qMytQlcps7FPLwECCfKmA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 01:31:54 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 02:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 02:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:06:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 02:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 02:06:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 02:06:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 02:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/27/2026 02:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 02:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 02:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 02:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 02:06:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 02:06:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 02:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 02:06:43 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 02:06:43 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 02:06:43 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 02:06:43 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 02:06:43 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 02:06:43 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 02:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 02:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 02:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 02:06:46 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/27/2026 02:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 02:06:46 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 02:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 02:06:46 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 02:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 02:06:46 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 02:06:46 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 02:06:46 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/27/2026 02:06:46 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 02:06:46 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 02:06:46 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 03:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 03:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:07:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 03:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 03:07:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 03:07:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 03:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 03:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 03:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 03:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:07:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 03:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 03:07:43 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 03:07:43 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 03:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 03:07:43 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 03:07:43 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 03:07:43 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 03:07:43 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 03:07:43 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 03:07:43 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 03:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 03:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 03:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 03:07:47 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 03:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 03:07:47 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 03:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 03:07:47 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 03:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 03:07:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 03:07:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 03:07:47 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/27/2026 03:07:47 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 03:07:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 03:07:47 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 04:06:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 04:06:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:41 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 04:06:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 04:06:41 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 04:06:42 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 04:06:42 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/27/2026 04:06:42 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 04:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 04:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:45 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 04:06:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 04:06:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:45 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 04:06:45 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 04:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 04:06:45 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 04:06:45 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 04:06:45 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 04:06:45 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 04:06:45 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 04:06:45 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 04:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 04:06:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 04:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 04:06:48 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 04:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 04:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 04:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 04:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 04:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 04:06:48 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 04:06:48 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 04:06:48 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/27/2026 04:06:48 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 04:06:48 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 04:06:48 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 04:25:09 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 04:25:09 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 04:25:09 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 04:25:10 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 04:25:10 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 16:25:09 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 04:25:10 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 04:25:10 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMwNzExMCwibmJmIjoxNzc3MzA3MTEwLCJleHAiOjE3Nzc5MTE5MTAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.uZu1OCMl_199ieuRMXevPW6I85-zHG5rUE9WvY7Pas0","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 04:25:10 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMwNzExMCwibmJmIjoxNzc3MzA3MTEwLCJleHAiOjE3Nzc5MTE5MTAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.uZu1OCMl_199ieuRMXevPW6I85-zHG5rUE9WvY7Pas0', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 04:25:10 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 04:49:10 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 05:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 05:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:06:40 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/27/2026 05:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 05:06:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 05:06:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 05:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 05:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 05:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:06:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 05:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:06:44 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 05:06:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 05:06:44 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:06:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 05:06:44 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 05:06:44 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/27/2026 05:06:44 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 05:06:44 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 05:06:44 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 05:06:44 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 05:06:44 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 05:06:44 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 05:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 05:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 05:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 05:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 05:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 05:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 05:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 05:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 05:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/27/2026 05:06:48 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 04/27/2026 05:06:48 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 05:06:48 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 04/27/2026 05:06:48 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 05:06:48 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 04/27/2026 05:06:48 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 06:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 06:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:07:40 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/27/2026 06:07:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 06:07:41 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:07:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 06:07:41 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 06:07:41 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/27/2026 06:07:41 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 06:07:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:07:45 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 06:07:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:07:45 PM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 04/27/2026 06:07:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 06:07:45 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:07:45 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 06:07:45 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 06:07:45 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/27/2026 06:07:45 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 06:07:45 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 06:07:45 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 06:07:45 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 06:07:45 PM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/27/2026 06:07:45 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 06:07:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 06:07:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 06:07:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 06:07:49 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/27/2026 06:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 06:07:49 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 06:07:49 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 06:07:49 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 06:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 06:07:49 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 06:42:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 06:42:24 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 06:42:24 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 06:42:25 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 06:42:25 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 18:42:24 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 06:42:25 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 06:42:25 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNTM0NSwibmJmIjoxNzc3MzE1MzQ1LCJleHAiOjE3Nzc5MjAxNDUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ni2vOhoI2Xckq8SVm7mpAy-FxKezNXX17EBcKcl2KWA","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 06:42:25 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNTM0NSwibmJmIjoxNzc3MzE1MzQ1LCJleHAiOjE3Nzc5MjAxNDUsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.ni2vOhoI2Xckq8SVm7mpAy-FxKezNXX17EBcKcl2KWA', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 06:42:25 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 07:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 07:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:06:40 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/27/2026 07:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 07:06:40 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 15
INFO 04/27/2026 07:06:40 PM cron_common.py ln 313 filtered characters: 15
INFO 04/27/2026 07:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 07:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 07:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 07:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:06:44 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 07:06:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 07:06:44 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:06:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 12
INFO 04/27/2026 07:06:44 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 07:06:44 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 07:06:44 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 07:06:44 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 07:06:44 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 07:06:44 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 07:06:44 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/27/2026 07:06:44 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 07:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 07:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 07:06:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 07:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 07:06:48 PM drupal.py ln 183 Fetched 1 characters for target_id 4
INFO 04/27/2026 07:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 12
INFO 04/27/2026 07:06:48 PM cron_common.py ln 313 filtered characters: 12
INFO 04/27/2026 07:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 07:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 07:16:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:16:24 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:16:24 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 07:16:24 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 07:16:24 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 19:16:24 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 07:16:24 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 07:16:24 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNzM4NCwibmJmIjoxNzc3MzE3Mzg0LCJleHAiOjE3Nzc5MjIxODQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fYDJdIMXtmxJaEg_JWhzzAD0wRvWlwfjsc9Q1xrdVDU","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 07:16:24 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNzM4NCwibmJmIjoxNzc3MzE3Mzg0LCJleHAiOjE3Nzc5MjIxODQsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.fYDJdIMXtmxJaEg_JWhzzAD0wRvWlwfjsc9Q1xrdVDU', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 07:16:24 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 07:16:30 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:16:30 PM user.py ln 35 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:16:30 PM user.py ln 42 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/27/2026 07:16:31 PM user.py ln 62 Login response status code: 200
INFO 04/27/2026 07:16:31 PM user.py ln 63 Login response headers: {'Date': 'Mon, 27 Apr 2026 19:16:30 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/27/2026 07:16:31 PM user.py ln 64 Login response content length: 335 bytes
INFO 04/27/2026 07:16:31 PM user.py ln 69 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNzM5MSwibmJmIjoxNzc3MzE3MzkxLCJleHAiOjE3Nzc5MjIxOTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.TxErN6pBnC-w1EUHG_oJc6gMG6jfF_9LqATb-0lczWE","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/27/2026 07:16:31 PM user.py ln 90 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzMxNzM5MSwibmJmIjoxNzc3MzE3MzkxLCJleHAiOjE3Nzc5MjIxOTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.TxErN6pBnC-w1EUHG_oJc6gMG6jfF_9LqATb-0lczWE', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/27/2026 07:16:31 PM user.py ln 100 Login successful for sas on https://turmansolutions.ai
INFO 04/27/2026 07:19:57 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/27/2026 07:20:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:20:57 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:20:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:21:09 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:25:29 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:29:54 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:29:58 PM drupal.py ln 245 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/27/2026 07:29:58 PM drupal.py ln 247 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:29:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 07:29:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 07:29:59 PM drupal.py ln 492 Fetched 0 widgets for target_id 8
INFO 04/27/2026 07:29:59 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/27/2026 07:30:16 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:30:55 PM gpt_image_2.py ln 67 [gpt-image-2] prompt: Create an enchanting scene of a beautifully landsc... driver=gpt-5 size=auto quality=medium fmt=png partials=2 input_images=0 previous_response_id=False
INFO 04/27/2026 07:30:55 PM image_v2.py ln 199 [gpt-image-2] streaming responses.create kwargs keys: ['model', 'tools', 'input', 'stream'], tool: {'type': 'image_generation', 'size': 'auto', 'quality': 'medium', 'output_format': 'png', 'background': 'auto', 'partial_images': 2}
INFO 04/27/2026 07:30:57 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/27/2026 07:31:26 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format png
INFO 04/27/2026 07:31:26 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-4.png
INFO 04/27/2026 07:31:36 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format png
INFO 04/27/2026 07:31:36 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-5.png
INFO 04/27/2026 07:31:40 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format png
INFO 04/27/2026 07:31:40 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-6.png
INFO 04/27/2026 07:31:42 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format png
INFO 04/27/2026 07:31:42 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-7.png
INFO 04/27/2026 07:32:49 PM file.py ln 23 api token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/27/2026 07:32:49 PM file.py ln 25 my_site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 07:32:49 PM file.py ln 32 my_wp_token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MzE4MzY5LCJuYmYiOjE3NzczMTgzNjksImV4cCI6MTc3NzkyMzE2OSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.65ifCPQzp9ODQOBNJvA2OLiDTzZZCDoeOIwVydxCm5s
INFO 04/27/2026 07:32:49 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MzE4MzY5LCJuYmYiOjE3NzczMTgzNjksImV4cCI6MTc3NzkyMzE2OSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.65ifCPQzp9ODQOBNJvA2OLiDTzZZCDoeOIwVydxCm5s
INFO 04/27/2026 07:32:50 PM image.py ln 220 filename is 2026-04-27-7.webp
INFO 04/27/2026 07:32:50 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-27-7.webp'>}
INFO 04/27/2026 07:37:03 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:37:08 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:39:11 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:39:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:39:49 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:40:12 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 07:42:00 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 08:05:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 08:05:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:41 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/27/2026 08:05:42 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 08:05:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 08:05:42 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/27/2026 08:05:42 PM cron_common.py ln 313 filtered characters: 17
INFO 04/27/2026 08:05:42 PM wp.py ln 242 wp account not found! Alma - attempting registration
INFO 04/27/2026 08:05:42 PM wp.py ln 672 Attempting to register user: Alma at https://johnturman.net/wp-json/wp/v2/users
INFO 04/27/2026 08:05:42 PM wp.py ln 679 User registered successfully: Alma (ID: 20)
INFO 04/27/2026 08:05:42 PM wp.py ln 269 Successfully registered WP user for Alma
INFO 04/27/2026 08:05:42 PM wp.py ln 242 wp account not found! Roberto - attempting registration
INFO 04/27/2026 08:05:43 PM wp.py ln 672 Attempting to register user: Roberto at https://johnturman.net/wp-json/wp/v2/users
INFO 04/27/2026 08:05:43 PM wp.py ln 679 User registered successfully: Roberto (ID: 21)
INFO 04/27/2026 08:05:43 PM wp.py ln 269 Successfully registered WP user for Roberto
INFO 04/27/2026 08:05:43 PM create_articles.py ln 100 Characters fetched and filtered (1.80s)
INFO 04/27/2026 08:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 08:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:46 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 08:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:47 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/27/2026 08:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 08:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 08:05:47 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/27/2026 08:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 08:05:47 PM wp.py ln 242 wp account not found! Alma - attempting registration
INFO 04/27/2026 08:05:48 PM wp.py ln 672 Attempting to register user: Alma at https://dev.turmansolutions.ai/wp-json/wp/v2/users
INFO 04/27/2026 08:05:48 PM wp.py ln 679 User registered successfully: Alma (ID: 15)
INFO 04/27/2026 08:05:48 PM wp.py ln 269 Successfully registered WP user for Alma
INFO 04/27/2026 08:05:48 PM wp.py ln 242 wp account not found! Roberto - attempting registration
INFO 04/27/2026 08:05:49 PM wp.py ln 672 Attempting to register user: Roberto at https://dev.turmansolutions.ai/wp-json/wp/v2/users
INFO 04/27/2026 08:05:49 PM wp.py ln 679 User registered successfully: Roberto (ID: 16)
INFO 04/27/2026 08:05:49 PM wp.py ln 269 Successfully registered WP user for Roberto
INFO 04/27/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (2.38s)
INFO 04/27/2026 08:05:49 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 08:05:49 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 08:05:49 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 08:05:49 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 08:05:49 PM create_articles.py ln 116 Already-posted-today filter applied (0.11s)
INFO 04/27/2026 08:05:49 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 08:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 08:05:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 08:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 08:05:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 08:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 08:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 08:05:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/27/2026 08:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 08:05:53 PM wp.py ln 242 wp account not found! Alma - attempting registration
INFO 04/27/2026 08:05:54 PM wp.py ln 672 Attempting to register user: Alma at https://news.turmansolutions.ai/wp-json/wp/v2/users
INFO 04/27/2026 08:05:54 PM wp.py ln 679 User registered successfully: Alma (ID: 14)
INFO 04/27/2026 08:05:54 PM wp.py ln 269 Successfully registered WP user for Alma
INFO 04/27/2026 08:05:54 PM wp.py ln 242 wp account not found! Roberto - attempting registration
INFO 04/27/2026 08:05:54 PM wp.py ln 672 Attempting to register user: Roberto at https://news.turmansolutions.ai/wp-json/wp/v2/users
INFO 04/27/2026 08:05:55 PM wp.py ln 679 User registered successfully: Roberto (ID: 15)
INFO 04/27/2026 08:05:55 PM wp.py ln 269 Successfully registered WP user for Roberto
INFO 04/27/2026 08:05:55 PM create_articles.py ln 100 Characters fetched and filtered (1.51s)
INFO 04/27/2026 08:05:55 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 09:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 09:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:05:40 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 09:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 09:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 09:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/27/2026 09:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/27/2026 09:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 09:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 09:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:05:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 09:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:05:44 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/27/2026 09:05:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 09:05:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 09:05:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/27/2026 09:05:45 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 09:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/27/2026 09:05:45 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 09:05:45 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 09:05:45 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 09:05:45 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 09:05:45 PM create_articles.py ln 116 Already-posted-today filter applied (0.10s)
INFO 04/27/2026 09:05:45 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 09:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 09:05:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 09:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 09:05:48 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/27/2026 09:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 09:05:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 09:05:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/27/2026 09:05:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 09:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 09:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 09:18:46 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 10:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 10:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 10:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 10:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/27/2026 10:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/27/2026 10:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/27/2026 10:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 10:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 10:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:43 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 10:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 10:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 10:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/27/2026 10:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 10:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 10:05:43 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 10:05:43 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 10:05:44 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 10:05:44 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 10:05:44 PM create_articles.py ln 116 Already-posted-today filter applied (0.10s)
INFO 04/27/2026 10:05:44 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 10:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 10:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 10:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 10:05:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 10:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 10:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 10:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/27/2026 10:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 10:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 10:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 10:47:48 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:48:04 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:48:08 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:48:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:48:46 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:50:48 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:51:03 PM chat.py ln 63 myMsg is userId=0 body='How do i create characters and what can they do?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/27/2026 10:51:03 PM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How do i create characters and what can they do?'}]
INFO 04/27/2026 10:51:04 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 10:52:05 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:52:12 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:52:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:52:39 PM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/27/2026 10:52:39 PM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/27/2026 10:52:40 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/27/2026 10:54:38 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 10:54:46 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/27/2026 11:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:07:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/27/2026 11:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/27/2026 11:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 11:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/27/2026 11:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/27/2026 11:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/27/2026 11:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 11:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/27/2026 11:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:07:43 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/27/2026 11:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/27/2026 11:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 11:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/27/2026 11:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 11:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/27/2026 11:07:43 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 04/27/2026 11:07:43 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/27/2026 11:07:44 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 04/27/2026 11:07:44 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/27/2026 11:07:44 PM create_articles.py ln 116 Already-posted-today filter applied (0.10s)
INFO 04/27/2026 11:07:44 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/27/2026 11:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/27/2026 11:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/27/2026 11:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/27/2026 11:07:47 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/27/2026 11:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/27/2026 11:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/27/2026 11:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/27/2026 11:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/27/2026 11:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/27/2026 11:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/27/2026 11:09:50 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:09:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:10:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:10:21 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:12:06 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/27/2026 11:12:19 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 12:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:05:40 AM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 04/28/2026 12:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 12:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 12:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 12:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/28/2026 12:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 12:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 12:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:05:44 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/28/2026 12:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 12:05:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 12:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 12:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/28/2026 12:05:44 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 12:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:05:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 12:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:05:47 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 12:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 12:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 12:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 12:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 12:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 12:15:31 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/28/2026 12:16:50 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:16:51 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:16:58 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:17:10 AM chat.py ln 63 myMsg is userId=0 body='How can i get a login for the demo site?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:17:10 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How can i get a login for the demo site?'}]
INFO 04/28/2026 12:17:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:17:57 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:18:03 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:18:10 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:18:19 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:18:27 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:18:36 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:18:36 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/28/2026 12:18:37 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:18:54 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:19:01 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:28:33 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:28:39 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:28:47 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:29:09 AM chat.py ln 63 myMsg is userId=0 body='What products and services do you provide?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:29:09 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'What products and services do you provide?'}]
INFO 04/28/2026 12:29:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:30:41 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:30:56 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:31:13 AM chat.py ln 63 myMsg is userId=0 body="I'm experiencing problems with the chatbot. Can you help?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:31:13 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "I'm experiencing problems with the chatbot. Can you help?"}]
INFO 04/28/2026 12:31:14 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:35:44 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/28/2026 12:36:22 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:36:43 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:36:43 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/28/2026 12:36:44 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:37:14 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:37:18 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:37:29 AM chat.py ln 63 myMsg is userId=0 body="I'm experiencing problems with the chatbot. Can you help?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:37:29 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "I'm experiencing problems with the chatbot. Can you help?"}]
INFO 04/28/2026 12:37:30 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:42:20 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 04/28/2026 12:43:13 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:43:35 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:43:35 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/28/2026 12:43:37 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 12:43:57 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:44:02 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 12:44:22 AM chat.py ln 63 myMsg is userId=0 body="I'm having trouble with my Wordpress site. Can you help?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 12:44:22 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "I'm having trouble with my Wordpress site. Can you help?"}]
INFO 04/28/2026 12:44:23 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 01:03:05 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:03:09 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:03:26 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 01:03:26 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/28/2026 01:03:28 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 01:03:40 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:06:37 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 01:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 01:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 01:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 01:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 01:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 01:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 01:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:44 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/28/2026 01:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 01:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 01:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 01:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 01:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:06:44 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 01:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/28/2026 01:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 01:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 01:06:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 01:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 01:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:07:13 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 01:07:13 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 04/28/2026 01:07:14 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 01:07:29 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:07:40 AM chat.py ln 63 myMsg is userId=0 body="I'm having trouble with my Wordpress site. Can you help?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=None use_structured_output=False response_schema=None images=None site=None
INFO 04/28/2026 01:07:40 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Roberto\nCHARACTER DESCRIPTION: Roberto, delve into the rich tapestry of history to uncover captivating stories from the past. Choose a historical event, figure, or trend to explore, providing new insights or lesser-known details. Engage your readers with compelling narratives that make history come alive.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "I'm having trouble with my Wordpress site. Can you help?"}]
INFO 04/28/2026 01:07:40 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 01:07:51 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 01:09:47 AM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 02:00:55 AM drupal.py ln 116 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/28/2026 02:00:55 AM drupal.py ln 118 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 02:00:55 AM drupal.py ln 121 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/28/2026 02:00:55 AM drupal.py ln 140 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': 'v3IWV3wyp7NsN0JIWBFdlnSrx_ffsOyAOhicaaU3rAw', 'logout_token': '8wNqmysA6VCJFSRi4wJdrWjhEE-E3tlLiK1PQgaaZp0'}
INFO 04/28/2026 02:00:56 AM drupal.py ln 171 Node modified successfully. ({character.name})
INFO 04/28/2026 02:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 02:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:41 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/28/2026 02:05:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 02:05:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 02:05:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 02:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.74s)
INFO 04/28/2026 02:05:41 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 02:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:45 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 02:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:45 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 02:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 02:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:46 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 02:05:46 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 02:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.29s)
INFO 04/28/2026 02:05:46 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 04/28/2026 02:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 02:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:50 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 02:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 02:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 04/28/2026 02:05:50 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 03:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:05:40 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/28/2026 03:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 03:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 03:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 03:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 03:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 03:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 03:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 03:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 03:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 03:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 03:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 03:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:05:46 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 03:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 03:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:05:46 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 03:05:46 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 03:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 03:05:46 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 04:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:05:40 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/28/2026 04:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 04:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 04:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 04:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 04:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 04:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:05:43 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/28/2026 04:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 04:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 04:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 04:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 04:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 04:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:05:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 04:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 04:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 04:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 04:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 04:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 05:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:07:40 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/28/2026 05:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 05:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 05:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 05:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/28/2026 05:07:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:07:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 05:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:07:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 05:07:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 05:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 05:07:44 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 05:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:07:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 05:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 05:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 05:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 05:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 05:07:47 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 06:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 06:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 06:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 06:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 06:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/28/2026 06:07:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 06:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:07:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 06:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 06:07:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 06:07:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 06:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 06:07:44 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 06:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:07:47 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/28/2026 06:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 06:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 06:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 06:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 06:07:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 06:07:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 06:07:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/28/2026 06:07:47 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/28/2026 06:07:47 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/28/2026 06:07:48 AM cron_common.py ln 414 Character articles: 95
INFO 04/28/2026 06:07:48 AM create_articles.py ln 126 Character articles loaded (0.54s)
INFO 04/28/2026 06:07:48 AM create_articles.py ln 128 Setup complete (1.13s total)
INFO 04/28/2026 06:07:48 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/28/2026 06:07:48 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260428_060748_news_Hawk.log
INFO 04/28/2026 06:07:48 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/28/2026 06:07:48 AM article_creation_service.py ln 766 WordPress authentication successful (0.33s)
INFO 04/28/2026 06:07:48 AM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/28/2026 06:07:49 AM article_creation_service.py ln 766 Loaded 95 articles for character (0.54s)
INFO 04/28/2026 06:07:49 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.18s)
INFO 04/28/2026 06:07:49 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 04/28/2026 06:07:49 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 04/28/2026 06:07:49 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/28/2026 06:07:49 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/28/2026 06:07:50 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 04/28/2026 06:07:50 AM chat.py ln 159 Found 8 results
INFO 04/28/2026 06:07:50 AM article_creation_service.py ln 766 Found 8 search results (1.58s)
INFO 04/28/2026 06:07:50 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260428_060748_news_Hawk_search.md
INFO 04/28/2026 06:07:50 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/28/2026 06:08:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 06:08:47 AM article_creation_service.py ln 766 Generated article - Hawk’s Tuesday Brief: Somalia piracy resurges, WHCD fallout, AI alliance shake-ups, Iraq’s PM pick, and a deadly South Sudan crash (56.80s)
INFO 04/28/2026 06:08:47 AM article_creation_service.py ln 766 Created WP post 1140 (0.16s)
INFO 04/28/2026 06:08:52 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 06:08:52 AM wp.py ln 837 Prompt: Prompt for Featured Image Generation:
Design a dynamic, composite featured image that visually represents the five major news events from Hawk’s Tuesday Brief. The image should include:
- A shadowy silhouette of a cargo ship with a pirate skiff nearby on turbulent waters, symbolizing the Somalia piracy resurgence.
- A dramatic, blurred scene of security agents rushing a suited figure to safety, referencing the White House Correspondents’ Dinner shooting.
- Abstract, modern graphics of AI icons (like neural network nodes or robot heads) split between a US flag motif and a Chinese flag motif, for the Microsoft-OpenAI shakeup and the China-Meta AI divide.
- A portrait of a Middle Eastern man (political newcomer) in front of the Iraqi flag, signifying Iraq’s new PM pick.
- The wreckage of a small plane on a savanna with mourners nearby, denoting the South Sudan plane crash.
Blend these visual elements with clear divisions or overlays, creating a fast-paced, news-driven collage that captures urgency and global relevance. Use a balanced, non-sensational tone.
INFO 04/28/2026 06:08:52 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 04/28/2026 06:10:05 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/28/2026 06:10:05 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/28/2026 06:10:05 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28.jpeg
INFO 04/28/2026 06:10:05 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-28.jpeg
INFO 04/28/2026 06:10:05 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MzU2NDY4LCJuYmYiOjE3NzczNTY0NjgsImV4cCI6MTc3Nzk2MTI2OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.1c0-SZUyNRvWCGghT5FdEf-eOaDtEQZ6--BvRRBcMIM
INFO 04/28/2026 06:10:05 AM image.py ln 220 filename is 2026-04-28.webp
INFO 04/28/2026 06:10:05 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28.webp'>}
INFO 04/28/2026 06:10:06 AM article_creation_service.py ln 766 Featured image posted (78.64s)
INFO 04/28/2026 06:10:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 06:10:11 AM wp.py ln 872 Secondary Image Prompt: Prompt for a Complementary Image:
Create a visually compelling digital collage that encapsulates the intense, fast-moving global themes in the article. Anchor the composition with a dark, stormy Indian Ocean seascape; a shadowy cargo ship lurks in the turbulent waters, suggesting piracy and insecurity. Overlay subtle, ghostly silhouettes of political figures and press cameras, hinting at the White House Correspondents’ Dinner chaos. In the sky above the ocean, split the background into two contrasting halves: on one side, vibrant neon circuitry and floating AI icons symbolize the fragmented and competitive world of global artificial intelligence, with the Microsoft and OpenAI logos subtly fracturing; on the other, an abstract, hazy skyline of Baghdad with hints of government buildings and coalition banners, reflecting Iraq’s political recalibration. In the foreground, faded wreckage and scattered luggage on a remote runway allude to the South Sudanese plane crash tragedy. Utilize a muted, high-contrast color palette: deep blues and grays for the ocean, stark reds for crisis, sharp neon blues and greens for the technological elements, golds and muted earth tones for the Middle Eastern city, and ghostly whites for the aviation tragedy. Set an atmosphere of tension, urgency, and complexity, with layered textures and visual motifs subtly interweaving maritime, political, technological, and human themes.
INFO 04/28/2026 06:10:11 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 04/28/2026 06:11:16 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/28/2026 06:11:17 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/28/2026 06:11:17 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-1.jpeg
INFO 04/28/2026 06:11:17 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-28-1.jpeg
INFO 04/28/2026 06:11:17 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3MzU2NDY4LCJuYmYiOjE3NzczNTY0NjgsImV4cCI6MTc3Nzk2MTI2OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.1c0-SZUyNRvWCGghT5FdEf-eOaDtEQZ6--BvRRBcMIM
INFO 04/28/2026 06:11:17 AM image.py ln 220 filename is 2026-04-28-1.webp
INFO 04/28/2026 06:11:17 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-1.webp'>}
INFO 04/28/2026 06:11:17 AM article_creation_service.py ln 766 Secondary image uploaded (71.53s)
INFO 04/28/2026 06:11:17 AM wp.py ln 966 Inserted image after second paragraph
INFO 04/28/2026 06:11:18 AM wp.py ln 995 Post content updated successfully for post 1140
INFO 04/28/2026 06:11:18 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/28/2026 06:11:21 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/28/2026 06:11:30 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information found in the provided sources. All major claims are supported:
**Somalia piracy**: Source 1 (AP News) confirms a vessel carrying cement was seized off Somalia, marking the second hijacking in days.
**WHCD shooting**: Sources 2, 5, 7, and 8 (Reuters and CNN) confirm the White House Correspondents' Dinner shooting incident, with video documentation of the event, Trump being rushed to safety, and the suspect being charged with attempting to assassinate the president.
**AI developments**: Sources 2 and 3 (AP News) verify
INFO 04/28/2026 06:11:30 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/28/2026 06:11:30 AM article_creation_service.py ln 766 Fact-check comment posted (12.03s)
INFO 04/28/2026 06:11:30 AM article_creation_service.py ln 766 Article creation completed successfully (total: 222.03s)
INFO 04/28/2026 06:11:30 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/28/2026 06:11:30 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/28/2026 06:11:30 AM create_articles.py ln 204 Script completed (223.16s total)
INFO 04/28/2026 07:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 07:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 07:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 07:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 07:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 07:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/28/2026 07:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 07:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 07:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 07:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 07:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 07:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 07:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 07:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 07:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 07:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:05:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/28/2026 07:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 07:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 07:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 07:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 07:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 07:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 07:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/28/2026 07:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/28/2026 07:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/28/2026 07:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/28/2026 08:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 08:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:07:40 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/28/2026 08:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 08:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 08:07:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 08:07:41 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/28/2026 08:07:41 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 08:07:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:07:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 08:07:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:07:44 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/28/2026 08:07:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 08:07:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:07:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 08:07:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 08:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 08:07:44 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 08:07:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:07:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 08:07:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:07:48 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/28/2026 08:07:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 08:07:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:07:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 08:07:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 08:07:48 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 08:07:48 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 08:07:48 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 08:07:48 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/28/2026 08:07:48 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/28/2026 08:07:48 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 04/28/2026 08:07:48 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/28/2026 09:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 09:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 09:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 09:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 09:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 09:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/28/2026 09:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 09:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 09:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 09:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 09:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 09:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 09:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 09:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 09:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 09:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/28/2026 09:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 09:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 09:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 09:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 09:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 09:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 09:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/28/2026 09:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/28/2026 09:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/28/2026 09:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/28/2026 10:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 10:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 10:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 10:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 10:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 10:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/28/2026 10:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 10:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 10:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 10:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 10:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 10:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 10:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 10:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 10:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 10:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 10:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 10:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 10:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 10:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 10:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 10:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 10:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/28/2026 10:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/28/2026 10:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/28/2026 10:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/28/2026 11:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 11:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 11:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 11:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 11:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 11:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/28/2026 11:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 11:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 11:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:06:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 11:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 11:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 11:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 11:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 11:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 11:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 11:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 11:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 11:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 11:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 11:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 11:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/28/2026 11:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 11:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/28/2026 11:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/28/2026 11:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/28/2026 11:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/28/2026 11:47:26 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 11:47:26 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 12:06:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:06:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 12:06:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:06:42 PM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 04/28/2026 12:06:42 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 12:06:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:06:42 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 12:06:42 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 12:06:42 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/28/2026 12:06:42 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:06:46 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 12:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 12:06:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:06:46 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 12:06:46 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 12:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/28/2026 12:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 12:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 12:06:50 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 12:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 12:06:51 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 04/28/2026 12:06:51 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 12:06:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 12:06:51 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 12:06:51 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 12:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/28/2026 12:06:51 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 01:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 01:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 01:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 01:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 01:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/28/2026 01:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 01:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 01:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 01:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 01:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 01:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 01:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 01:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 01:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 01:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 01:06:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 01:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 01:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 01:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 01:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 01:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 01:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 02:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 02:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:41 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 02:05:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 02:05:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 02:05:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 02:05:41 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 02:05:41 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 02:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 02:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:44 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/28/2026 02:05:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 02:05:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 02:05:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 02:05:44 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 02:05:44 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 02:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 02:05:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 02:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 02:05:47 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/28/2026 02:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 02:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 02:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 02:05:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 02:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 02:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 03:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 03:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 03:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 03:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 03:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 03:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 03:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:06:43 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/28/2026 03:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 03:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 03:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 03:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 03:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 03:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 03:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 03:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 03:06:46 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 03:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 03:06:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 03:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 03:06:46 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 03:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 03:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 04:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 04:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 04:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 04:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 04:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 04:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 04:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 04:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 04:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 04:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 04:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 04:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 04:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 04:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 04:06:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 04:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 04:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 04:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 04:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 04:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 04:49:49 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/28/2026 04:50:43 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 04:50:43 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 04:50:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 04:50:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:50:43 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/28/2026 04:50:44 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/28/2026 04:55:58 PM drupal.py ln 245 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/28/2026 04:55:58 PM drupal.py ln 247 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 04:55:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 04:55:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 04:55:58 PM drupal.py ln 492 Fetched 0 widgets for target_id 8
INFO 04/28/2026 04:55:58 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/28/2026 04:58:42 PM drupal.py ln 245 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/28/2026 04:58:42 PM drupal.py ln 247 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 04:58:42 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 04:58:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 05:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:06:40 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 05:06:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 05:06:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:06:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 05:06:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 05:06:41 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/28/2026 05:06:41 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:06:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:06:44 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/28/2026 05:06:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:06:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:06:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 05:06:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 05:06:44 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 05:06:44 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:06:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 05:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:06:48 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/28/2026 05:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 05:06:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 05:06:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 05:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 05:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 05:08:47 PM drupal.py ln 116 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 04/28/2026 05:08:47 PM drupal.py ln 118 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 05:08:47 PM drupal.py ln 121 catchCharacterRequest is <class 'app.appTypes.PatchCharacterRequest'>
INFO 04/28/2026 05:08:48 PM drupal.py ln 140 login data is {'current_user': {'uid': '4', 'roles': ['authenticated', 'service'], 'name': 'fapi'}, 'csrf_token': '3zAQXjibq-2614jtW4FH4OlQLdGAeAzLDGvF2H6FxF4', 'logout_token': 'ulfWbw0i3m-YBXEi1eUOZat18WKQ4zYDhNYGapha0wM'}
INFO 04/28/2026 05:08:48 PM drupal.py ln 171 Node modified successfully. ({character.name})
INFO 04/28/2026 05:09:06 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 05:09:06 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 05:09:06 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 05:09:06 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/28/2026 05:09:06 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 05:09:06 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:09:06 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 05:09:06 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 05:09:06 PM create_articles.py ln 100 Characters fetched and filtered (0.46s)
INFO 04/28/2026 05:09:06 PM cron_common.py ln 361 Single character mode: Dusty
INFO 04/28/2026 05:09:06 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/28/2026 05:09:06 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 04/28/2026 05:09:06 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 04/28/2026 05:09:07 PM cron_common.py ln 414 Character articles: 40
INFO 04/28/2026 05:09:07 PM create_articles.py ln 126 Character articles loaded (0.26s)
INFO 04/28/2026 05:09:07 PM create_articles.py ln 128 Setup complete (1.12s total)
INFO 04/28/2026 05:09:07 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 04/28/2026 05:09:07 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260428_170907_news_Dusty.log
INFO 04/28/2026 05:09:07 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 04/28/2026 05:09:07 PM article_creation_service.py ln 766 WordPress authentication successful (0.33s)
INFO 04/28/2026 05:09:07 PM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/28/2026 05:09:07 PM article_creation_service.py ln 766 Loaded 40 articles for character (0.25s)
INFO 04/28/2026 05:09:08 PM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.18s)
INFO 04/28/2026 05:09:08 PM article_creation_service.py ln 766 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 04/28/2026 05:09:08 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 04/28/2026 05:09:08 PM chat.py ln 139 Tavily search will filter to past week
INFO 04/28/2026 05:09:10 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 04/28/2026 05:09:10 PM chat.py ln 159 Found 5 results
INFO 04/28/2026 05:09:10 PM article_creation_service.py ln 766 Found 5 search results (2.03s)
INFO 04/28/2026 05:09:10 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260428_170907_news_Dusty_search.md
INFO 04/28/2026 05:09:10 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/28/2026 05:09:32 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 05:09:32 PM article_creation_service.py ln 766 Generated article - Super El Niño, Drought, Floods, and Fire: How 2026’s Extreme Weather Reshapes Global Risks (22.51s)
INFO 04/28/2026 05:09:32 PM article_creation_service.py ln 766 Created WP post 1145 (0.12s)
INFO 04/28/2026 05:09:35 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 05:09:35 PM wp.py ln 837 Prompt: Prompt for generating a featured image:
Create a dramatic, visually compelling illustration depicting the global impacts of a "super El Niño" event in 2026. The image should blend several extreme weather scenes into a cohesive composition: a raging wildfire consuming a dry, parched forest; a flooded coastal city with submerged streets and stranded people; cracked, drought-ridden farmland with wilting crops; and a distant, blistering sun in a hazy, overheated sky. Subtly include visual elements hinting at global interconnectedness—perhaps faint outlines of continents or interconnected weather patterns swirling in the background—to convey the worldwide scale of the crisis. The overall mood should evoke urgency and the profound risks posed by intensifying climate extremes.
INFO 04/28/2026 05:09:35 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 04/28/2026 05:10:40 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/28/2026 05:10:40 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/28/2026 05:10:40 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-2.jpeg
INFO 04/28/2026 05:10:40 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-28-2.jpeg
INFO 04/28/2026 05:10:40 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3Mzk2MTQ3LCJuYmYiOjE3NzczOTYxNDcsImV4cCI6MTc3ODAwMDk0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.YdpRNXF_e51lD4F9qZZy9mL_3XGPv1dwXVeJNFCZfXA
INFO 04/28/2026 05:10:40 PM image.py ln 220 filename is 2026-04-28-2.webp
INFO 04/28/2026 05:10:40 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-2.webp'>}
INFO 04/28/2026 05:10:41 PM article_creation_service.py ln 766 Featured image posted (68.70s)
INFO 04/28/2026 05:10:46 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/28/2026 05:10:46 PM wp.py ln 872 Secondary Image Prompt: Create an image that visually captures the global surge of climate-driven extremes in 2026, evoking both urgency and interconnected risk. The scene is a dramatic split panorama: on the left, parched earth, cracked soil, emaciated crops, and scorched forests where billowing wildfire smoke rises into a hazy sky. In the foreground, a farmer shields their face from blistering sun under a crimson-orange, heat-distorted sky. To the right, coastal city streets are inundated by floodwaters; drenched people wade through water that reflects ominous, thunder-laden clouds above. In the distance, silhouettes of emergency workers, voters in line with umbrellas, and vulnerable elderly struggle amid chaos. Use a vivid color palette with deep reds, oranges, and yellows for heat and drought; murky blues, greys, and streaks of lightning for floods. Textures should shift from brittle, cracked and ashen on the drought-fire side to slick, rippled and turbulent on the flood side. The mood is tense, urgent, and somber, highlighting both human vulnerability and the scale of environmental upheaval.
INFO 04/28/2026 05:10:46 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 04/28/2026 05:11:48 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/28/2026 05:11:48 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/28/2026 05:11:48 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-3.jpeg
INFO 04/28/2026 05:11:48 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-28-3.jpeg
INFO 04/28/2026 05:11:48 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3Mzk2MTQ3LCJuYmYiOjE3NzczOTYxNDcsImV4cCI6MTc3ODAwMDk0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.YdpRNXF_e51lD4F9qZZy9mL_3XGPv1dwXVeJNFCZfXA
INFO 04/28/2026 05:11:48 PM image.py ln 220 filename is 2026-04-28-3.webp
INFO 04/28/2026 05:11:48 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-28-3.webp'>}
INFO 04/28/2026 05:11:49 PM article_creation_service.py ln 766 Secondary image uploaded (67.98s)
INFO 04/28/2026 05:11:49 PM wp.py ln 966 Inserted image after second paragraph
INFO 04/28/2026 05:11:49 PM wp.py ln 995 Post content updated successfully for post 1145
INFO 04/28/2026 05:11:49 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/28/2026 05:11:52 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/28/2026 05:12:01 PM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in the source material. The key claims align well with the Guardian and AP News reports from late April 2026:
**Super El Niño forecasts**: The article correctly describes scientific warnings about a potentially powerful El Niño event that could push global temperatures to 1.5°C or above preindustrial levels, matching Source 1's reporting about forecasts suggesting "one of the strongest ever recorded" and models showing potential breaches of critical thresholds.
**U.S. drought and Florida wildfires**: The desc
INFO 04/28/2026 05:12:01 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/28/2026 05:12:01 PM article_creation_service.py ln 766 Fact-check comment posted (11.77s)
INFO 04/28/2026 05:12:01 PM article_creation_service.py ln 766 Article creation completed successfully (total: 174.09s)
INFO 04/28/2026 05:12:01 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 04/28/2026 05:12:01 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/28/2026 05:12:01 PM create_articles.py ln 204 Script completed (175.23s total)
INFO 04/28/2026 05:33:12 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:33:13 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 05:33:13 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:33:13 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:33:13 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:33:13 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/28/2026 05:33:14 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/28/2026 05:33:22 PM user.py ln 36 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:33:22 PM user.py ln 43 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/28/2026 05:33:22 PM user.py ln 63 Login response status code: 200
INFO 04/28/2026 05:33:22 PM user.py ln 64 Login response headers: {'Date': 'Tue, 28 Apr 2026 17:33:22 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/28/2026 05:33:22 PM user.py ln 65 Login response content length: 340 bytes
INFO 04/28/2026 05:33:22 PM user.py ln 70 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzczOTc2MDIsIm5iZiI6MTc3NzM5NzYwMiwiZXhwIjoxNzc4MDAyNDAyLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.qgLBvm3261QASZH1SGK2DYnrok_uxAUlaVtqCXIN88c","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 04/28/2026 05:33:22 PM user.py ln 91 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzczOTc2MDIsIm5iZiI6MTc3NzM5NzYwMiwiZXhwIjoxNzc4MDAyNDAyLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.qgLBvm3261QASZH1SGK2DYnrok_uxAUlaVtqCXIN88c', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 04/28/2026 05:33:22 PM user.py ln 101 Login successful for John on https://dev.turmansolutions.ai
INFO 04/28/2026 05:36:36 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:36:36 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 05:36:36 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:36:36 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:36:37 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:36:37 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/28/2026 05:36:37 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/28/2026 05:56:26 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:56:27 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 05:56:27 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:56:27 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:56:27 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 05:56:27 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 04/28/2026 05:56:27 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 04/28/2026 05:57:31 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 05:57:31 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 05:57:31 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 05:57:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 06:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:06:41 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/28/2026 06:06:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 06:06:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:06:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 06:06:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 06:06:41 PM create_articles.py ln 100 Characters fetched and filtered (0.37s)
INFO 04/28/2026 06:06:41 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:06:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 06:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:06:45 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/28/2026 06:06:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 06:06:45 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:06:45 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 06:06:45 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 06:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 06:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 06:06:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 06:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 06:06:48 PM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/28/2026 06:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 06:06:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 06:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 06:06:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 06:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 06:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 06:06:54 PM drupal.py ln 245 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 04/28/2026 06:06:54 PM drupal.py ln 247 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 06:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 06:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 07:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:07:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 07:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 07:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 07:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 07:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 07:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 07:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 07:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:07:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 07:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 07:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 07:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 07:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 07:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 07:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 07:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 07:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 07:07:46 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/28/2026 07:07:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 07:07:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 07:07:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 07:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 07:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 07:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 08:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 08:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:05:40 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/28/2026 08:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 08:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 08:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 08:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/28/2026 08:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 08:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:05:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 08:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:05:44 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/28/2026 08:05:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 08:05:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:05:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 08:05:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 08:05:44 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 08:05:44 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 08:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 08:05:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 08:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 08:05:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 08:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 08:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 08:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 08:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 08:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 08:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 09:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 09:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 09:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 09:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 09:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 09:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/28/2026 09:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 09:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 09:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:43 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/28/2026 09:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 09:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 09:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 09:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 09:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 09:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 09:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 09:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 09:05:47 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/28/2026 09:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 09:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 09:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 09:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 09:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 09:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 10:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 10:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/28/2026 10:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 10:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 10:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 10:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/28/2026 10:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 10:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 10:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/28/2026 10:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 10:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 10:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 10:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 10:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 10:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 10:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 10:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 10:06:46 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/28/2026 10:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 10:06:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 10:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 10:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 10:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/28/2026 10:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 11:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/28/2026 11:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:07:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/28/2026 11:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/28/2026 11:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/28/2026 11:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/28/2026 11:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/28/2026 11:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 11:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/28/2026 11:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:07:43 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/28/2026 11:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/28/2026 11:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/28/2026 11:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 11:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/28/2026 11:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/28/2026 11:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/28/2026 11:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/28/2026 11:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/28/2026 11:07:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/28/2026 11:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/28/2026 11:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/28/2026 11:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/28/2026 11:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/28/2026 11:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/28/2026 11:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 12:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 12:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:40 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 12:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 12:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 12:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 12:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/29/2026 12:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 12:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 12:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:44 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 04/29/2026 12:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 12:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 12:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 12:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 12:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 12:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 12:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 12:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 12:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 12:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 12:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 12:06:47 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 01:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:40 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/29/2026 01:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 01:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 01:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 01:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 01:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 01:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 01:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 01:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 01:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 01:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 01:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 01:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/29/2026 01:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 01:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 01:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 01:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 01:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 02:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:40 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/29/2026 02:06:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 02:06:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 02:06:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 02:06:41 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/29/2026 02:06:41 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 02:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:44 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 02:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 02:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 02:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 02:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 02:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 02:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 02:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 02:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 02:06:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 02:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 02:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 03:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:05:41 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 04/29/2026 03:05:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 03:05:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:05:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 03:05:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 03:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/29/2026 03:05:41 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:05:45 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 03:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:05:45 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/29/2026 03:05:45 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 03:05:45 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:05:45 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 03:05:45 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 03:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 03:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 03:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 03:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 04:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 04:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:06:40 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 04:06:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 04:06:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:06:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 04:06:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 04:06:41 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 04:06:41 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 04:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:06:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 04:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:06:44 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/29/2026 04:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 04:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 04:06:45 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 04:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 04:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 04:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:06:48 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 04:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:06:48 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 04:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 04:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:06:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 04:06:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 04:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 04:06:48 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 05:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:05:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/29/2026 05:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 05:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 05:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 05:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/29/2026 05:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 05:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:05:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 05:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 05:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 05:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 05:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 05:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 05:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:05:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/29/2026 05:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 05:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 05:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 05:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 05:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 06:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 06:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 06:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 06:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 06:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/29/2026 06:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 06:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:06:43 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 06:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 06:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 06:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 06:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 06:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 06:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:06:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/29/2026 06:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 06:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 06:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 06:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 06:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 06:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 06:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/29/2026 06:06:47 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/29/2026 06:06:47 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/29/2026 06:06:47 AM cron_common.py ln 414 Character articles: 96
INFO 04/29/2026 06:06:47 AM create_articles.py ln 126 Character articles loaded (0.54s)
INFO 04/29/2026 06:06:47 AM create_articles.py ln 128 Setup complete (1.03s total)
INFO 04/29/2026 06:06:47 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/29/2026 06:06:47 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260429_060647_news_Hawk.log
INFO 04/29/2026 06:06:47 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/29/2026 06:06:48 AM article_creation_service.py ln 766 WordPress authentication successful (0.33s)
INFO 04/29/2026 06:06:48 AM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/29/2026 06:06:48 AM article_creation_service.py ln 766 Loaded 96 articles for character (0.54s)
INFO 04/29/2026 06:06:48 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.19s)
INFO 04/29/2026 06:06:48 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 04/29/2026 06:06:48 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 04/29/2026 06:06:48 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/29/2026 06:06:48 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/29/2026 06:06:50 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 04/29/2026 06:06:50 AM chat.py ln 159 Found 8 results
INFO 04/29/2026 06:06:50 AM article_creation_service.py ln 766 Found 8 search results (1.70s)
INFO 04/29/2026 06:06:50 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260429_060647_news_Hawk_search.md
INFO 04/29/2026 06:06:50 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/29/2026 06:07:32 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/29/2026 06:07:32 AM article_creation_service.py ln 766 Generated article - Hawk’s Wednesday Brief: Iran’s Hormuz offer meets U.S. skepticism; UAE quits OPEC; storms batter South; Australia targets Big Tech; U.S. confidence inches up (42.07s)
INFO 04/29/2026 06:07:32 AM article_creation_service.py ln 766 Created WP post 1150 (0.11s)
INFO 04/29/2026 06:07:36 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/29/2026 06:07:36 AM wp.py ln 837 Prompt: Create a dynamic featured image reflecting the article’s global news roundup. The illustration should incorporate the following elements: an oil tanker navigating the Strait of Hormuz with the Iranian and American flags subtly present to represent diplomatic tensions; the OPEC logo with a UAE flag breaking away to signal the UAE’s exit; a dramatic storm with lightning and dark clouds looming over a map outline of the U.S. South; symbols for Big Tech companies (such as stylized logos for Meta, Google, and TikTok) alongside the Australian flag and newspaper pages to signify Australia’s tech regulation efforts; and a U.S. consumer confidence chart trending up. The overall style should be clean, modern, and editorial, suitable for a high-profile international news briefing.
INFO 04/29/2026 06:07:36 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 04/29/2026 06:08:53 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/29/2026 06:08:53 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/29/2026 06:08:53 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-29.jpeg
INFO 04/29/2026 06:08:53 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-29.jpeg
INFO 04/29/2026 06:08:53 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NDQyODA4LCJuYmYiOjE3Nzc0NDI4MDgsImV4cCI6MTc3ODA0NzYwOCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.hCdiroOAw59ZbE4Za0wiVtYKIY8aVnZMlaMiprEWioY
INFO 04/29/2026 06:08:53 AM image.py ln 220 filename is 2026-04-29.webp
INFO 04/29/2026 06:08:53 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-29.webp'>}
INFO 04/29/2026 06:08:54 AM article_creation_service.py ln 766 Featured image posted (81.18s)
INFO 04/29/2026 06:08:56 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/29/2026 06:08:56 AM wp.py ln 872 Secondary Image Prompt: Prompt for complementary image:
Create a dynamic, split-composition illustration that visually represents the interconnected global themes in the article. On the left, depict a stormy Southern U.S. cityscape under dark, swirling clouds with flashes of lightning and bent power lines, evoking the chaos of severe weather. In the center, transition into the turbulent waters of the Strait of Hormuz with oil tankers navigating narrow, high-risk passageways framed by tense, angular shadows—to symbolize geopolitical tension. On the right, merge into a sleek, digital urban skyline representing Australia, accented by stylized icons for Meta, Google, and TikTok (abstract logos or data streams), layered over newsprint textures to suggest the clash between Big Tech and journalism. Overlay faint silhouettes of oil rigs and the OPEC logo dissolving into the air, hinting at UAE’s departure and market uncertainty. Use contrasting color palettes: stormy grays and deep blues for the left, stark reds and metallic tones for the center, and high-tech neon blues and warm golds for the right. The overall mood should be tense but kinetic, highlighting both fracture and global interdependence, with subtle textural overlays of newsprint and circuitry to tie the separate themes together.
INFO 04/29/2026 06:08:56 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 04/29/2026 06:10:01 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/29/2026 06:10:01 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/29/2026 06:10:01 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-29-1.jpeg
INFO 04/29/2026 06:10:01 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-29-1.jpeg
INFO 04/29/2026 06:10:01 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NDQyODA4LCJuYmYiOjE3Nzc0NDI4MDgsImV4cCI6MTc3ODA0NzYwOCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.hCdiroOAw59ZbE4Za0wiVtYKIY8aVnZMlaMiprEWioY
INFO 04/29/2026 06:10:01 AM image.py ln 220 filename is 2026-04-29-1.webp
INFO 04/29/2026 06:10:01 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-29-1.webp'>}
INFO 04/29/2026 06:10:02 AM article_creation_service.py ln 766 Secondary image uploaded (68.28s)
INFO 04/29/2026 06:10:02 AM wp.py ln 966 Inserted image after second paragraph
INFO 04/29/2026 06:10:02 AM wp.py ln 995 Post content updated successfully for post 1150
INFO 04/29/2026 06:10:02 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/29/2026 06:10:05 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/29/2026 06:10:15 AM chat.py ln 348 AI comment: # Fact-Check Assessment: Hawk's Wednesday Brief (April 29, 2026)
The article accurately represents the information from the provided sources. All major claims are supported by the source material from reputable news outlets (CNN, AP News, Reuters) dated April 28, 2026.
**Verified claims:**
- **Iran's Hormuz proposal**: Confirmed by CNN Source 2, which reports Iran submitted a peace plan to reopen the Strait of Hormuz while deferring nuclear questions, and that Secretary of State Marco Rubio said the strait must be "fully and freely open."
- **UAE leaving OPEC**: Confirmed by CNN Source 6,
INFO 04/29/2026 06:10:15 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/29/2026 06:10:15 AM article_creation_service.py ln 766 Fact-check comment posted (12.81s)
INFO 04/29/2026 06:10:15 AM article_creation_service.py ln 766 Article creation completed successfully (total: 207.39s)
INFO 04/29/2026 06:10:15 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/29/2026 06:10:15 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/29/2026 06:10:15 AM create_articles.py ln 204 Script completed (208.42s total)
INFO 04/29/2026 07:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 07:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:05:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/29/2026 07:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 07:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 07:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 07:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 07:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 07:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:05:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 07:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 07:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 07:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 07:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 07:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 07:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:05:46 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 07:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 07:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:05:46 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 07:05:46 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 07:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 07:05:46 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 07:05:46 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 07:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/29/2026 07:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/29/2026 07:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/29/2026 07:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/29/2026 08:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 08:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:06:40 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/29/2026 08:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 08:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 08:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 08:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/29/2026 08:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 08:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 08:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:06:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 08:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 08:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 08:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 08:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 08:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 08:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 08:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 08:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 08:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 08:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 08:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 08:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 08:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 08:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/29/2026 08:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/29/2026 08:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/29/2026 08:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/29/2026 09:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 09:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:40 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 09:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 09:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 09:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 09:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 09:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 09:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 09:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:43 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 09:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 09:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 09:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 09:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 09:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 09:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 09:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:46 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/29/2026 09:06:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 09:06:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:46 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 09:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 09:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 09:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 09:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 09:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/29/2026 09:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/29/2026 09:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/29/2026 09:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/29/2026 10:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 10:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 10:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 10:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 10:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 10:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 10:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 10:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 10:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 10:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 10:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 10:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 10:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 10:05:44 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 10:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 10:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:47 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/29/2026 10:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 10:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 10:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 10:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 10:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 10:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 10:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/29/2026 10:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/29/2026 10:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/29/2026 10:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/29/2026 11:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 11:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 11:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 11:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 11:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 11:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 11:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 11:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 11:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:43 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/29/2026 11:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 11:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 11:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 11:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 11:06:43 AM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 11:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 11:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:47 AM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 04/29/2026 11:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 11:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 11:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 11:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 11:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/29/2026 11:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/29/2026 11:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/29/2026 11:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/29/2026 11:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/29/2026 11:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/29/2026 12:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 12:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 12:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 12:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 12:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 12:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 12:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 12:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 12:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:43 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/29/2026 12:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 12:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 12:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 12:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 12:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 12:06:46 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/29/2026 12:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 12:06:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 12:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 12:06:46 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 12:06:46 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 12:06:46 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 01:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:40 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/29/2026 01:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 01:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 01:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 01:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 01:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 01:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 01:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 01:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 01:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 01:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 01:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 01:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 01:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 01:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 01:05:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/29/2026 01:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 01:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 01:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 01:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 01:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 01:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 02:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 02:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 02:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 02:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 02:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/29/2026 02:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 02:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:43 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/29/2026 02:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 02:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 02:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 02:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 02:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 02:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 02:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 02:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 02:06:46 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/29/2026 02:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 02:06:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 02:06:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 02:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 02:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 02:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 03:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:06:40 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 03:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 03:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 03:06:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 03:06:41 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 03:06:41 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:06:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:06:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 03:06:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:06:44 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 03:06:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 03:06:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:06:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 03:06:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 03:06:44 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 03:06:44 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 03:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 03:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 04/29/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 03:06:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/29/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 03:15:55 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/29/2026 03:16:06 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/29/2026 04:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 04:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:07:41 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/29/2026 04:07:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 04:07:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:07:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 04:07:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 04:07:41 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/29/2026 04:07:41 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 04:07:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:07:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 04:07:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:07:44 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 04:07:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 04:07:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:07:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 04:07:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 04:07:44 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 04:07:44 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 04:07:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 04:07:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 04:07:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 04:07:48 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/29/2026 04:07:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 04:07:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 04:07:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 04:07:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 04:07:48 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/29/2026 04:07:48 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 05:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 05:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 05:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 05:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 05:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/29/2026 05:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 05:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 05:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 05:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 05:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 05:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 05:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 05:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 05:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 05:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 05:06:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/29/2026 05:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 05:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 05:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 05:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 05:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 05:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 06:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 06:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 06:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 06:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 06:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 06:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 06:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 06:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 06:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 06:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 06:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 06:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 06:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 06:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 06:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 06:05:46 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 06:05:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 06:05:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 06:05:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 06:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 06:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 06:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:01:06 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 04/29/2026 07:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 07:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:07:40 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/29/2026 07:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 07:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 07:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 07:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 04/29/2026 07:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 07:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:07:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 07:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 07:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 07:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 07:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 07:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 07:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 07:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 07:07:47 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 07:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 07:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 07:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 07:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 07:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 07:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 07:33:59 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 04/29/2026 08:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 08:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/29/2026 08:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 08:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 08:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 08:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 08:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 08:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 08:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:05:43 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/29/2026 08:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 08:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 08:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 08:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 08:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 08:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 08:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 08:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 08:05:47 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/29/2026 08:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 08:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 08:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 08:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 08:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 08:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 09:06:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 09:06:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:41 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/29/2026 09:06:42 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 09:06:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:42 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 09:06:42 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 09:06:42 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 09:06:42 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 09:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:45 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 09:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:45 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/29/2026 09:06:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 09:06:45 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:45 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 09:06:45 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 09:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 09:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/29/2026 09:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 10:05:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 10:05:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:41 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 10:05:41 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 10:05:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:41 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 10:05:41 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 10:05:41 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/29/2026 10:05:41 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 10:05:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:44 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 10:05:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:44 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/29/2026 10:05:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 10:05:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 10:05:45 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 10:05:45 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/29/2026 10:05:45 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 10:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 10:05:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 10:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 10:05:48 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/29/2026 10:05:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 10:05:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 10:05:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 10:05:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 10:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 10:05:48 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 11:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/29/2026 11:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:40 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/29/2026 11:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/29/2026 11:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/29/2026 11:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/29/2026 11:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/29/2026 11:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 11:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/29/2026 11:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:44 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/29/2026 11:06:44 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/29/2026 11:06:44 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:44 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/29/2026 11:06:44 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 11:06:44 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/29/2026 11:06:44 PM cron_common.py ln 373 No characters selected.
INFO 04/29/2026 11:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/29/2026 11:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/29/2026 11:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/29/2026 11:06:47 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/29/2026 11:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/29/2026 11:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/29/2026 11:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/29/2026 11:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/29/2026 11:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/29/2026 11:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 12:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 12:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:40 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/30/2026 12:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 12:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 12:05:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 12:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/30/2026 12:05:41 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 12:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 12:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:44 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 12:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 12:05:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 12:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 12:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 12:05:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 12:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 12:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/30/2026 12:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 12:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 12:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 12:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/30/2026 12:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 01:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/30/2026 01:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 01:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 01:05:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 01:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 04/30/2026 01:05:41 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 01:05:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:44 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 01:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 01:05:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 01:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 01:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 01:05:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 01:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:47 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/30/2026 01:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 01:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 01:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 01:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 01:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 02:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 02:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 02:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 02:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 02:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/30/2026 02:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 02:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 02:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 02:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 02:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 02:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 02:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 02:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 02:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 02:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 02:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 02:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 02:05:47 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 03:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 03:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:41 AM create_articles.py ln 93 JWT token obtained (0.73s)
INFO 04/30/2026 03:06:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 03:06:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 03:06:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 03:06:41 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 04/30/2026 03:06:41 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 03:06:44 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:44 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 03:06:44 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:45 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 04/30/2026 03:06:45 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 03:06:45 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:45 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 03:06:45 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 03:06:45 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 03:06:45 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 03:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:48 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 03:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/30/2026 03:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/30/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 04:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:06:40 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/30/2026 04:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 04:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 04:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 04:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 04:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 04:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:06:44 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 04:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 04:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 04:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 04:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 04:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 04:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:06:47 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/30/2026 04:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 04:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 04:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 04:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 04:06:47 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 05:06:41 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:41 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 05:06:41 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:42 AM create_articles.py ln 93 JWT token obtained (0.60s)
INFO 04/30/2026 05:06:42 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 05:06:42 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:42 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 05:06:42 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 05:06:42 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 04/30/2026 05:06:42 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 05:06:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:45 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 05:06:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:46 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 04/30/2026 05:06:46 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 05:06:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:46 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 05:06:46 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 05:06:46 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 05:06:46 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:50 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/30/2026 05:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 05:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:50 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 05:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 05:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/30/2026 05:06:50 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 06:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 06:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 06:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 06:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 06:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/30/2026 06:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:05:45 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 06:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:05:45 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 04/30/2026 06:05:45 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 06:05:45 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:05:45 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 06:05:45 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 06:05:45 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 06:05:45 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/30/2026 06:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 04/30/2026 06:05:49 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 06:05:49 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 06:05:49 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 04/30/2026 06:05:49 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 04/30/2026 06:05:49 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 04/30/2026 06:05:50 AM cron_common.py ln 414 Character articles: 97
INFO 04/30/2026 06:05:50 AM create_articles.py ln 126 Character articles loaded (0.85s)
INFO 04/30/2026 06:05:50 AM create_articles.py ln 128 Setup complete (1.41s total)
INFO 04/30/2026 06:05:50 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 04/30/2026 06:05:50 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260430_060550_news_Hawk.log
INFO 04/30/2026 06:05:50 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 04/30/2026 06:05:50 AM article_creation_service.py ln 766 WordPress authentication successful (0.37s)
INFO 04/30/2026 06:05:50 AM article_creation_service.py ln 766 Fetched WP users (0.07s)
INFO 04/30/2026 06:05:51 AM article_creation_service.py ln 766 Loaded 97 articles for character (0.58s)
INFO 04/30/2026 06:05:51 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.22s)
INFO 04/30/2026 06:05:51 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 04/30/2026 06:05:51 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 04/30/2026 06:05:51 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 04/30/2026 06:05:51 AM chat.py ln 139 Tavily search will filter to past day
INFO 04/30/2026 06:05:53 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 04/30/2026 06:05:53 AM chat.py ln 159 Found 8 results
INFO 04/30/2026 06:05:53 AM article_creation_service.py ln 766 Found 8 search results (1.50s)
INFO 04/30/2026 06:05:53 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260430_060550_news_Hawk_search.md
INFO 04/30/2026 06:05:53 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 04/30/2026 06:06:49 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/30/2026 06:06:49 AM article_creation_service.py ln 766 Generated article - Hawk’s Thursday Brief: Charles threads the needle in NYC and on Capitol Hill; Iran blockade talk drags on; Ukraine hits Russian oil; UAE charts post‑OPEC path; markets eye Big Tech; Texas twister stuns (55.96s)
INFO 04/30/2026 06:06:49 AM article_creation_service.py ln 766 Created WP post 1155 (0.11s)
INFO 04/30/2026 06:06:51 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/30/2026 06:06:51 AM wp.py ln 837 Prompt: Create a featured image for a news briefing article summarizing major global events: a montage that includes King Charles III and Queen Camilla at the 9/11 Memorial in New York, stylized representations of Capitol Hill and the U.S. Congress, a burning Russian oil facility symbolizing Ukraine’s drone strikes, an abstract depiction of oil barrels and shifting energy markets for the UAE and OPEC story, an AI or digital motif to represent Big Tech and AI-driven market volatility, a dramatic tornado scene in Texas, and a poignant tribute to a whale being transported at sea. The composition should evoke a fast-moving, interconnected world, with a clean, contemporary news aesthetic.
INFO 04/30/2026 06:06:51 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 04/30/2026 06:08:00 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/30/2026 06:08:01 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/30/2026 06:08:01 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-30.jpeg
INFO 04/30/2026 06:08:01 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-30.jpeg
INFO 04/30/2026 06:08:01 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NTI5MTUwLCJuYmYiOjE3Nzc1MjkxNTAsImV4cCI6MTc3ODEzMzk1MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.zOY8g4158Ifj-NVRUC7qN6WTnCAWCPbGQwqRUFodBXw
INFO 04/30/2026 06:08:01 AM image.py ln 220 filename is 2026-04-30.webp
INFO 04/30/2026 06:08:01 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-30.webp'>}
INFO 04/30/2026 06:08:02 AM article_creation_service.py ln 766 Featured image posted (72.87s)
INFO 04/30/2026 06:08:05 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 04/30/2026 06:08:05 AM wp.py ln 872 Secondary Image Prompt: Prompt for a complementary image:
Create a visually striking collage that encapsulates the major themes from the article: global uncertainty and resilience. The image should seamlessly blend the following elements: the dignified presence of King Charles III and Queen Camilla against the tranquil blue-grey light of New York’s 9/11 Memorial; a distant, fiery silhouette of a Russian oil facility under drone strike, smoke billowing into a stormy sky; a stylized stock market graph with AI circuit patterns overlaying a backdrop of fluctuating numbers, shimmering in neon blues and silvers to represent volatility and tech innovation; a swirling tornado traversing the textured landscape of rural Texas, debris blending into digital sparks; the forlorn yet hopeful silhouette of a whale (Timmy) floating on a barge toward the open sea under a bittersweet dusk. Use a color palette that transitions from calming royal blues and silvers (symbolizing stability and modern monarchy) to intense reds and oranges (evoking conflict and urgency), fading into stormy greys and pale yellows (for weather and uncertainty), with hints of shimmering metallics for the futuristic AI and market elements. The overall mood should juxtapose hope and crisis, conveying the interconnected pressures—political, economic, and natural—shaping the week’s news.
INFO 04/30/2026 06:08:05 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 04/30/2026 06:09:48 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 04/30/2026 06:09:48 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 04/30/2026 06:09:48 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-30-1.jpeg
INFO 04/30/2026 06:09:48 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-04-30-1.jpeg
INFO 04/30/2026 06:09:48 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NTI5MTUwLCJuYmYiOjE3Nzc1MjkxNTAsImV4cCI6MTc3ODEzMzk1MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.zOY8g4158Ifj-NVRUC7qN6WTnCAWCPbGQwqRUFodBXw
INFO 04/30/2026 06:09:48 AM image.py ln 220 filename is 2026-04-30-1.webp
INFO 04/30/2026 06:09:48 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-04-30-1.webp'>}
INFO 04/30/2026 06:09:48 AM article_creation_service.py ln 766 Secondary image uploaded (106.74s)
INFO 04/30/2026 06:09:48 AM wp.py ln 966 Inserted image after second paragraph
INFO 04/30/2026 06:09:49 AM wp.py ln 995 Post content updated successfully for post 1155
INFO 04/30/2026 06:09:49 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 04/30/2026 06:09:52 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 04/30/2026 06:10:03 AM chat.py ln 348 AI comment: # Fact-Check Assessment: Hawk's Thursday Brief (April 30, 2026)
The article accurately represents the information provided in its sources. The key claims align well with the source material:
**Verified Claims:**
- **King Charles visit**: Sources confirm the royal couple visited the 9/11 Memorial and Harlem, with the visit framed as offering "stability and reassurance" amid global tensions
- **Iran blockade discussions**: CNN reports Trump has discussed continuing Iranian port blockades for months
- **School strike accountability**: The 168-child death toll and two-month timeline match CNN's
INFO 04/30/2026 06:10:03 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 04/30/2026 06:10:03 AM article_creation_service.py ln 766 Fact-check comment posted (14.06s)
INFO 04/30/2026 06:10:03 AM article_creation_service.py ln 766 Article creation completed successfully (total: 252.60s)
INFO 04/30/2026 06:10:03 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 04/30/2026 06:10:03 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 04/30/2026 06:10:03 AM create_articles.py ln 204 Script completed (254.01s total)
INFO 04/30/2026 07:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 07:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:05:41 AM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 04/30/2026 07:05:41 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 07:05:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:05:41 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 07:05:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 07:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 04/30/2026 07:05:41 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 07:05:45 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:05:45 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 07:05:45 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:05:46 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 07:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 07:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:05:46 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 07:05:46 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 07:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 07:05:46 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 07:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:05:50 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 07:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:05:50 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 04/30/2026 07:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 07:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:05:50 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 07:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 07:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 07:05:50 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 07:05:50 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 07:05:51 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/30/2026 07:05:51 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/30/2026 07:05:51 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/30/2026 07:05:51 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/30/2026 08:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 08:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:06:40 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/30/2026 08:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 08:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 08:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 08:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/30/2026 08:06:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 08:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 08:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:06:44 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 08:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 08:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 08:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 08:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 08:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 08:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 08:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:06:48 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 04/30/2026 08:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 08:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:06:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 08:06:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 08:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 08:06:48 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 08:06:48 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 08:06:48 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/30/2026 08:06:48 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/30/2026 08:06:48 AM create_articles.py ln 116 Already-posted-today filter applied (0.10s)
INFO 04/30/2026 08:06:48 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/30/2026 09:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 09:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 09:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 09:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 09:06:41 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 09:06:41 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/30/2026 09:06:41 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 09:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:44 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 04/30/2026 09:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 09:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 09:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 09:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/30/2026 09:06:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 09:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:48 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 04/30/2026 09:06:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 09:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 09:06:48 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 09:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/30/2026 09:06:48 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 09:06:48 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 09:06:48 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/30/2026 09:06:48 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/30/2026 09:06:48 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 04/30/2026 09:06:48 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/30/2026 10:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 10:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 10:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 10:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 10:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 10:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 10:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 10:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 10:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 10:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 10:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 10:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 10:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 10:05:43 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 10:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 10:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:05:46 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/30/2026 10:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 10:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:05:46 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 10:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 10:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 10:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 10:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 10:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/30/2026 10:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/30/2026 10:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/30/2026 10:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/30/2026 11:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 11:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:40 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 11:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 11:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 11:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 11:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 11:05:40 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 11:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 11:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:44 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 11:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 11:05:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 11:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 11:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 11:05:44 AM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 11:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 11:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/30/2026 11:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 11:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 11:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 11:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/30/2026 11:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 04/30/2026 11:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 04/30/2026 11:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 04/30/2026 11:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 04/30/2026 11:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 04/30/2026 11:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 04/30/2026 12:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 12:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 12:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 12:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 12:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 12:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 04/30/2026 12:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 12:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 12:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 12:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 12:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 12:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 12:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 12:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 12:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 12:05:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 12:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 12:05:47 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 04/30/2026 12:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 12:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 12:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 12:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 12:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 12:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 01:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 01:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 01:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 01:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 01:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/30/2026 01:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 01:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 01:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 01:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 01:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 01:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 01:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 01:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 01:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 01:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 01:05:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 01:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 01:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 01:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 01:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 01:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 01:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 02:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 02:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 02:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 02:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 02:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 04/30/2026 02:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 02:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 02:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 02:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 02:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 02:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 02:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 02:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 02:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 02:05:47 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/30/2026 02:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 02:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 02:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 02:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 02:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 02:05:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 02:50:42 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 03:06:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:41 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 03:06:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:42 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/30/2026 03:06:42 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 03:06:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:42 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 03:06:42 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 03:06:42 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 03:06:42 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 03:06:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:45 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 03:06:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:45 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 03:06:45 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 03:06:45 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:45 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 03:06:45 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 03:06:45 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 03:06:45 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 03:06:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 03:06:48 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 03:06:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 03:06:48 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 03:06:48 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 03:06:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 03:06:48 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 03:06:48 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 03:06:48 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 03:06:48 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:08:05 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:08:05 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 04:08:05 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:08:05 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 04/30/2026 04:08:06 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 04:08:06 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:08:06 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 04:08:06 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 04:08:06 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 04/30/2026 04:08:06 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:08:09 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:08:09 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 04:08:09 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:08:09 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 04:08:09 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 04:08:09 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:08:09 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 04:08:09 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 04:08:09 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 04:08:09 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:08:12 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 04:08:12 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 04:08:12 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 04:08:12 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 04:08:12 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 04:08:12 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 04:08:12 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 04:08:13 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 04:08:13 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 04:08:13 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 04:32:16 PM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 04/30/2026 05:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 05:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 05:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 05:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 05:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 05:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 04/30/2026 05:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 05:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 05:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 05:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 05:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 05:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 05:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 05:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 05:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 05:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 05:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 05:06:47 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/30/2026 05:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 05:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 05:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 05:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 05:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 05:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 06:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 06:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 06:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 06:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 06:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 06:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 06:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:06:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 06:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 06:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 06:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 06:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 06:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 06:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 06:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 06:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 06:06:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 06:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 06:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 06:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 06:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 06:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 06:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 07:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 07:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:07:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/30/2026 07:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 07:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 07:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 07:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 04/30/2026 07:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 07:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 07:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:07:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 07:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 07:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 07:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 07:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 07:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 07:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 07:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 07:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 07:07:47 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 04/30/2026 07:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 07:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 07:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 07:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 07:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 07:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 08:07:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:07:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 08:07:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:07:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 04/30/2026 08:07:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 08:07:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:07:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 08:07:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 08:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/30/2026 08:07:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 08:07:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:07:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 08:07:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:07:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 08:07:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 08:07:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:07:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 08:07:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 08:07:43 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 04/30/2026 08:07:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 08:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 08:07:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 08:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 08:07:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 08:07:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 08:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 08:07:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 08:07:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 08:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 08:07:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 09:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 09:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 09:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 09:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 09:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 09:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 09:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 09:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 09:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 09:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 09:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 09:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 09:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 09:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 09:06:47 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 04/30/2026 09:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 09:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 09:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 09:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 09:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 09:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 09:15:18 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 10:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 10:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 10:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 10:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 10:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 10:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 04/30/2026 10:06:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 10:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 10:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:06:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 10:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 10:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 10:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 10:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 10:06:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 10:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 10:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 10:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 10:06:46 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 04/30/2026 10:06:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 10:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 10:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 10:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 10:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 10:06:47 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 10:09:56 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 10:10:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 10:10:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 10:10:19 PM user.py ln 36 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 10:10:19 PM user.py ln 43 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/30/2026 10:10:20 PM user.py ln 63 Login response status code: 200
INFO 04/30/2026 10:10:20 PM user.py ln 64 Login response headers: {'Date': 'Thu, 30 Apr 2026 22:10:19 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/30/2026 10:10:20 PM user.py ln 65 Login response content length: 335 bytes
INFO 04/30/2026 10:10:20 PM user.py ln 70 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzU4NzAyMCwibmJmIjoxNzc3NTg3MDIwLCJleHAiOjE3NzgxOTE4MjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eqOXmIprJTJhZO44Y4DJ1h41DmYQY0sLQOZXGPmw2M8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/30/2026 10:10:20 PM user.py ln 91 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzU4NzAyMCwibmJmIjoxNzc3NTg3MDIwLCJleHAiOjE3NzgxOTE4MjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eqOXmIprJTJhZO44Y4DJ1h41DmYQY0sLQOZXGPmw2M8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/30/2026 10:10:20 PM user.py ln 101 Login successful for sas on https://turmansolutions.ai
INFO 04/30/2026 10:10:20 PM user.py ln 36 User login attempt - site: turmansolutions.ai, username: sas, site_config: cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 04/30/2026 10:10:20 PM user.py ln 43 Login request URL: https://turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 04/30/2026 10:10:20 PM user.py ln 63 Login response status code: 200
INFO 04/30/2026 10:10:20 PM user.py ln 64 Login response headers: {'Date': 'Thu, 30 Apr 2026 22:10:20 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 04/30/2026 10:10:20 PM user.py ln 65 Login response content length: 335 bytes
INFO 04/30/2026 10:10:20 PM user.py ln 70 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzU4NzAyMCwibmJmIjoxNzc3NTg3MDIwLCJleHAiOjE3NzgxOTE4MjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eqOXmIprJTJhZO44Y4DJ1h41DmYQY0sLQOZXGPmw2M8","user_email":"support@turmansolutions.ai","user_nicename":"sas","user_display_name":"sas"}
INFO 04/30/2026 10:10:20 PM user.py ln 91 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3R1cm1hbnNvbHV0aW9ucy5haSIsImlhdCI6MTc3NzU4NzAyMCwibmJmIjoxNzc3NTg3MDIwLCJleHAiOjE3NzgxOTE4MjAsImRhdGEiOnsidXNlciI6eyJpZCI6IjMifX19.eqOXmIprJTJhZO44Y4DJ1h41DmYQY0sLQOZXGPmw2M8', 'user_email': 'support@turmansolutions.ai', 'user_nicename': 'sas', 'user_display_name': 'sas'}
INFO 04/30/2026 10:10:20 PM user.py ln 101 Login successful for sas on https://turmansolutions.ai
INFO 04/30/2026 11:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 04/30/2026 11:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 04/30/2026 11:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 04/30/2026 11:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 04/30/2026 11:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 04/30/2026 11:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 04/30/2026 11:05:40 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 11:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 04/30/2026 11:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 04/30/2026 11:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 04/30/2026 11:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 04/30/2026 11:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 11:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 04/30/2026 11:05:43 PM cron_common.py ln 373 No characters selected.
INFO 04/30/2026 11:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 04/30/2026 11:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 04/30/2026 11:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 04/30/2026 11:05:47 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 04/30/2026 11:05:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 04/30/2026 11:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 04/30/2026 11:05:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 04/30/2026 11:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 04/30/2026 11:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 04/30/2026 11:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 12:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 12:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 12:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 12:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 12:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 12:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/01/2026 12:06:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 12:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 12:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:06:44 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 12:06:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 12:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 12:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 12:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 12:06:44 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 12:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 12:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:06:47 AM create_articles.py ln 93 JWT token obtained (0.72s)
INFO 05/01/2026 12:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 12:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 12:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 12:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 12:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 01:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 01:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 01:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 01:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 01:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 01:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 01:05:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 01:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 01:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:05:44 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 01:05:44 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 01:05:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:05:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 01:05:44 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 01:05:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 01:05:44 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 01:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 01:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:05:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/01/2026 01:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 01:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 01:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 01:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 01:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 02:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 02:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 02:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 02:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 02:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 02:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/01/2026 02:05:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 02:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 02:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:05:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 02:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 02:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 02:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 02:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/01/2026 02:05:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 02:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 02:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:05:46 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 02:05:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 02:05:46 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:05:46 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 02:05:46 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 02:05:46 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 02:05:46 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 03:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 03:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 03:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 03:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 03:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 03:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/01/2026 03:06:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 03:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 03:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 03:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 03:06:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 03:06:44 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 03:06:44 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/01/2026 03:06:44 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 03:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 03:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/01/2026 03:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 03:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 03:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 03:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 03:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 04:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 04:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 04:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 04:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 04:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 04:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/01/2026 04:07:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 04:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 04:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:07:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 04:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 04:07:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 04:07:44 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 04:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 04:07:44 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 04:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 04:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:07:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/01/2026 04:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 04:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 04:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 04:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 04:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 05:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 05:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 05:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 05:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 05:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 05:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/01/2026 05:06:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 05:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 05:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:06:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 05:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 05:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 05:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 05:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 05:06:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 05:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 05:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:06:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/01/2026 05:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 05:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 05:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 05:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 05:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 06:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 06:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/01/2026 06:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 06:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 06:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 06:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/01/2026 06:07:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 06:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 06:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 06:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 06:07:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 06:07:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 06:07:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 06:07:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 06:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 06:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/01/2026 06:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 06:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 06:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 06:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 06:07:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 06:07:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 06:07:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/01/2026 06:07:47 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/01/2026 06:07:47 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/01/2026 06:07:47 AM cron_common.py ln 414 Character articles: 98
INFO 05/01/2026 06:07:47 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/01/2026 06:07:47 AM create_articles.py ln 128 Setup complete (1.12s total)
INFO 05/01/2026 06:07:47 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/01/2026 06:07:47 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260501_060747_news_Hawk.log
INFO 05/01/2026 06:07:47 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/01/2026 06:07:48 AM article_creation_service.py ln 766 WordPress authentication successful (0.33s)
INFO 05/01/2026 06:07:48 AM article_creation_service.py ln 766 Fetched WP users (0.08s)
INFO 05/01/2026 06:07:48 AM article_creation_service.py ln 766 Loaded 98 articles for character (0.55s)
INFO 05/01/2026 06:07:49 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.18s)
INFO 05/01/2026 06:07:49 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/01/2026 06:07:49 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/01/2026 06:07:49 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/01/2026 06:07:49 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/01/2026 06:07:50 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/01/2026 06:07:50 AM chat.py ln 159 Found 8 results
INFO 05/01/2026 06:07:50 AM article_creation_service.py ln 766 Found 8 search results (1.73s)
INFO 05/01/2026 06:07:50 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260501_060747_news_Hawk_search.md
INFO 05/01/2026 06:07:50 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/01/2026 06:08:52 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 06:08:52 AM article_creation_service.py ln 766 Generated article - Hawk’s Friday Brief: Oil pops on Iran blockade talk, Wall Street notches records, London stabbing heightens security fears (61.32s)
INFO 05/01/2026 06:08:52 AM article_creation_service.py ln 766 Created WP post 1160 (0.15s)
INFO 05/01/2026 06:08:54 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 06:08:54 AM wp.py ln 837 Prompt: Prompt for generating a featured image:
Create a dynamic, contemporary collage that visually represents the main themes of escalating global tensions and financial resilience. The image should include: a dramatic oil tanker at sea under threat of a naval blockade (hinting at conflict near Iran), oil price charts climbing, silhouettes of Wall Street skyscrapers with digital ticker tapes showing record market highs, and subtle overlays of security forces patrolling a London street. Incorporate subdued references to Middle East conflict (e.g., a faint map segment or key locations) and heightened security, blending cool and warm tones to evoke the dual mood of crisis and market optimism. The style should be sharp, news-oriented, and suitable for a headline business and world affairs briefing.
INFO 05/01/2026 06:08:54 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/01/2026 06:10:03 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/01/2026 06:10:03 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/01/2026 06:10:03 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01.jpeg
INFO 05/01/2026 06:10:03 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-01.jpeg
INFO 05/01/2026 06:10:03 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NjE1NjY4LCJuYmYiOjE3Nzc2MTU2NjgsImV4cCI6MTc3ODIyMDQ2OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.phEA1Vt0aMIin7qUiwlMp9XJqTaNR_RduSvgnJ_DasI
INFO 05/01/2026 06:10:03 AM image.py ln 220 filename is 2026-05-01.webp
INFO 05/01/2026 06:10:03 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01.webp'>}
INFO 05/01/2026 06:10:04 AM article_creation_service.py ln 766 Featured image posted (72.21s)
INFO 05/01/2026 06:10:08 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 06:10:08 AM wp.py ln 872 Secondary Image Prompt: Create a visually compelling composite image that captures the key themes from the article: global geopolitical tension, energy uncertainty, financial market exuberance, and heightened urban security fears. The scene should be a surreal, nighttime cityscape blending key visual elements:
- In the foreground, stylized oil barrels leaking dark, inky oil that morphs into ocean waves, symbolizing both energy volatility and oil spills.
- Navy ships with searchlights are silhouetted on the swirling dark sea, indicating blockades and international military presence.
- Towering above the sea, the glowing skylines of both London and New York—London’s iconic landmarks (like the Gherkin or Big Ben) on one side, and Wall Street skyscrapers with flashing ticker symbols and upward arrows on the other—are bathed in stark, contrasting colors: hot reds, electric blues, and sharp yellow highlights symbolizing alertness, crisis, and economic vibrancy.
- Ghostly, semi-opaque overlay of a police barricade and blue flashing lights cast across the London landmarks, evoking the recent security shock.
- In the sky, faint digital lines and AI code motifs blend with dark storm clouds, alluding to the market’s focus on AI and looming risks.
- Subtle background details: an abandoned OPEC meeting table adrift on the waves; stock market graphs afloat near Wall Street; a blurred, watchful figure in the shadows, expressing anxiety.
Overall, the image should feel tense yet dynamic, rich in contrasts and layered details—offering a visual synthesis of crisis, resilience, uncertainty, and the interconnectedness of today’s world. Use moody lighting, high contrast, and a semi-abstract, painterly style.
INFO 05/01/2026 06:10:08 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/01/2026 06:10:14 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/01/2026 06:11:07 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/01/2026 06:11:08 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/01/2026 06:11:08 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-1.jpeg
INFO 05/01/2026 06:11:08 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-01-1.jpeg
INFO 05/01/2026 06:11:08 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NjE1NjY4LCJuYmYiOjE3Nzc2MTU2NjgsImV4cCI6MTc3ODIyMDQ2OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.phEA1Vt0aMIin7qUiwlMp9XJqTaNR_RduSvgnJ_DasI
INFO 05/01/2026 06:11:08 AM image.py ln 220 filename is 2026-05-01-1.webp
INFO 05/01/2026 06:11:08 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-1.webp'>}
INFO 05/01/2026 06:11:08 AM article_creation_service.py ln 766 Secondary image uploaded (64.22s)
INFO 05/01/2026 06:11:08 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/01/2026 06:11:08 AM wp.py ln 995 Post content updated successfully for post 1160
INFO 05/01/2026 06:11:08 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/01/2026 06:11:11 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/01/2026 06:11:21 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information from the provided sources. Key claims are properly supported:
**Oil and Iran War:** CNN confirms oil surged above $126/barrel as Trump lays groundwork for an extended naval blockade, and that the Pentagon cited ~$25 billion in war costs (though sources note this likely understates damage to bases). Reuters corroborates the "going global" blockade language and diplomatic stalemate.
**Markets:** The Washington Post verifies the S&P 500 rose 1%, Dow gained 1.6%, Nasdaq climbed 0.9%, and that April was the S&P's best mont
INFO 05/01/2026 06:11:21 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/01/2026 06:11:21 AM article_creation_service.py ln 766 Fact-check comment posted (12.89s)
INFO 05/01/2026 06:11:21 AM article_creation_service.py ln 766 Article creation completed successfully (total: 213.79s)
INFO 05/01/2026 06:11:21 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/01/2026 06:11:21 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/01/2026 06:11:21 AM create_articles.py ln 204 Script completed (214.92s total)
INFO 05/01/2026 07:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:05:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 07:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:05:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 07:05:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 07:05:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:05:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 07:05:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 07:05:40 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 07:05:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 07:05:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:05:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 07:05:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:05:43 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/01/2026 07:05:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 07:05:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:05:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 07:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 07:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/01/2026 07:05:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 07:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 07:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:05:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/01/2026 07:05:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 07:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:05:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 07:05:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 07:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 07:05:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 07:05:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 07:05:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/01/2026 07:05:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 07:05:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 07:05:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 08:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 08:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 08:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 08:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 08:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 08:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/01/2026 08:07:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 08:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:07:43 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/01/2026 08:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 08:07:44 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:07:44 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 08:07:44 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 08:07:44 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 08:07:44 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 08:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:07:47 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/01/2026 08:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 08:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 08:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 08:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 08:07:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 08:07:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 08:07:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/01/2026 08:07:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 08:07:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 05/01/2026 08:07:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 09:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 09:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:06:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 09:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 09:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 09:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 09:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 09:06:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 09:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 09:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:06:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 09:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 09:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 09:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 09:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 09:06:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 09:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:06:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 09:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:06:46 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/01/2026 09:06:46 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 09:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 09:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 09:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 09:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 09:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 09:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/01/2026 09:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 09:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 09:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 10:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:07:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 10:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:07:40 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 10:07:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 10:07:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:07:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 10:07:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 10:07:40 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 10:07:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:07:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:07:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 10:07:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:07:43 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 10:07:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 10:07:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:07:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 10:07:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 10:07:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 10:07:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:07:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 10:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:07:47 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/01/2026 10:07:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 10:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:07:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 10:07:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 10:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 10:07:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 10:07:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 10:07:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/01/2026 10:07:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 10:07:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 10:07:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 11:06:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:06:40 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 11:06:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:06:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/01/2026 11:06:40 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 11:06:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:06:40 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 11:06:40 AM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 11:06:40 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/01/2026 11:06:40 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 11:06:43 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:06:43 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 11:06:43 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:06:43 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/01/2026 11:06:43 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 11:06:43 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:06:43 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 11:06:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 11:06:43 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 11:06:43 AM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 11:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:06:47 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 11:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/01/2026 11:06:47 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 11:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:06:47 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 11:06:47 AM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 11:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 11:06:47 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/01/2026 11:06:47 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 11:06:47 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/01/2026 11:06:47 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 11:06:47 AM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 11:06:47 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 12:05:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:05:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 12:05:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:05:40 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/01/2026 12:05:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 12:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:05:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 12:05:40 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 12:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/01/2026 12:05:40 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 12:05:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:05:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 12:05:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:05:43 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 12:05:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 12:05:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:05:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 12:05:43 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 12:05:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 12:05:43 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 12:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 12:05:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 12:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 12:05:46 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/01/2026 12:05:46 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 12:05:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 12:05:46 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 12:05:47 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 12:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 12:05:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 12:05:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 12:05:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/01/2026 12:05:47 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/01/2026 12:05:47 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/01/2026 12:05:47 PM cron_common.py ln 414 Character articles: 41
INFO 05/01/2026 12:05:47 PM create_articles.py ln 126 Character articles loaded (0.26s)
INFO 05/01/2026 12:05:47 PM create_articles.py ln 128 Setup complete (0.75s total)
INFO 05/01/2026 12:05:47 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/01/2026 12:05:47 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260501_120547_news_Dusty.log
INFO 05/01/2026 12:05:47 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 05/01/2026 12:05:47 PM article_creation_service.py ln 766 WordPress authentication successful (0.43s)
INFO 05/01/2026 12:05:47 PM article_creation_service.py ln 766 Fetched WP users (0.08s)
INFO 05/01/2026 12:05:48 PM article_creation_service.py ln 766 Loaded 41 articles for character (0.26s)
INFO 05/01/2026 12:05:48 PM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.18s)
INFO 05/01/2026 12:05:48 PM article_creation_service.py ln 766 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/01/2026 12:05:48 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/01/2026 12:05:48 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/01/2026 12:05:49 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/01/2026 12:05:49 PM chat.py ln 159 Found 5 results
INFO 05/01/2026 12:05:49 PM article_creation_service.py ln 766 Found 5 search results (1.42s)
INFO 05/01/2026 12:05:49 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260501_120547_news_Dusty_search.md
INFO 05/01/2026 12:05:49 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/01/2026 12:06:11 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 12:06:11 PM article_creation_service.py ln 766 Generated article - A Week of Weather Extremes: Tornadoes, Giant Hail, and Record Floods Across the Globe (21.33s)
INFO 05/01/2026 12:06:11 PM article_creation_service.py ln 766 Created WP post 1165 (0.11s)
INFO 05/01/2026 12:06:14 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 12:06:14 PM wp.py ln 837 Prompt: **Prompt for Featured Image Generation:**
Create a dramatic composite image that visually represents a week of extreme weather events around the world. The image should include: a powerful tornado swirling across a rural landscape in Texas with hailstones the size of apples pelting down; intense urban flooding in a Chinese city with rescue boats maneuvering through submerged streets; snow-covered trees and cars in Moscow under a heavy spring snowfall; and a hint of wildfire smoke rising from pine forests in Georgia or Florida. The overall tone should convey urgency and the varied power of nature, with vivid, realistic details and a global perspective.
INFO 05/01/2026 12:06:14 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/01/2026 12:07:15 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/01/2026 12:07:15 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/01/2026 12:07:15 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-2.jpeg
INFO 05/01/2026 12:07:15 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-01-2.jpeg
INFO 05/01/2026 12:07:15 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NjM3MTQ3LCJuYmYiOjE3Nzc2MzcxNDcsImV4cCI6MTc3ODI0MTk0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QIV0LwaH1WjhcdTxiq5mVR3I_LYK8fIHqe8kyICRIs4
INFO 05/01/2026 12:07:16 PM image.py ln 220 filename is 2026-05-01-2.webp
INFO 05/01/2026 12:07:16 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-2.webp'>}
INFO 05/01/2026 12:07:16 PM article_creation_service.py ln 766 Featured image posted (65.64s)
INFO 05/01/2026 12:07:23 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/01/2026 12:07:23 PM wp.py ln 872 Secondary Image Prompt: Create a dramatic, cinematic landscape that visually represents a world gripped by extreme weather events across continents. In the foreground, depict a split scene: on the left, a devastated American town with uprooted trees, shattered houses, and huge, glistening hailstones scattered across flooded streets, as a tornado funnels ominously in the distance beneath storm-blackened skies. On the right, transition to an urban Chinese city with chest-deep floodwaters reflecting neon signs, where emergency crews in bright rain gear help stranded residents. In the background, blend in a snow-choked Moscow street with toppled trees and heavy snow blanketing grounded airplanes and static traffic. Above, a swirling jet stream curves across the sky, hinting at the chaotic forces connecting these events. Use moody, intense colors—blues, grays, and sharp flashes of lightning white—with contrasting spots of emergency red and orange. Include subtle hints of human resilience: linemen working on power lines, people taking shelter, and rescue boats, to evoke urgency and hope amid natural chaos.
INFO 05/01/2026 12:07:23 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/01/2026 12:08:27 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/01/2026 12:08:27 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/01/2026 12:08:27 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-3.jpeg
INFO 05/01/2026 12:08:27 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-01-3.jpeg
INFO 05/01/2026 12:08:27 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NjM3MTQ3LCJuYmYiOjE3Nzc2MzcxNDcsImV4cCI6MTc3ODI0MTk0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QIV0LwaH1WjhcdTxiq5mVR3I_LYK8fIHqe8kyICRIs4
INFO 05/01/2026 12:08:28 PM image.py ln 220 filename is 2026-05-01-3.webp
INFO 05/01/2026 12:08:28 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-01-3.webp'>}
INFO 05/01/2026 12:08:28 PM article_creation_service.py ln 766 Secondary image uploaded (71.80s)
INFO 05/01/2026 12:08:28 PM wp.py ln 966 Inserted image after second paragraph
INFO 05/01/2026 12:08:28 PM wp.py ln 995 Post content updated successfully for post 1165
INFO 05/01/2026 12:08:28 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/01/2026 12:08:30 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/01/2026 12:08:39 PM chat.py ln 348 AI comment: # Fact-Check Assessment
This article accurately represents the information provided in the source material. The key facts align well across all cited sources:
**Verified claims:**
- The Texas tornado on Saturday night killed at least two people (Source 2 initially reported one death, Source 4 confirmed two)
- An EF2 tornado struck Sycamore, Kansas (Source 1)
- Springfield, Missouri experienced 12cm (5-inch) hail that killed Adam the Emu at Dickerson Park Zoo (Source 1)
- Over 30 tornadoes occurred in the region within a week (Source 2)
- The Oklahoma tornado injured at least 10 people and da
INFO 05/01/2026 12:08:39 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/01/2026 12:08:40 PM article_creation_service.py ln 766 Fact-check comment posted (11.28s)
INFO 05/01/2026 12:08:40 PM article_creation_service.py ln 766 Article creation completed successfully (total: 172.65s)
INFO 05/01/2026 12:08:40 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 05/01/2026 12:08:40 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/01/2026 12:08:40 PM create_articles.py ln 204 Script completed (173.41s total)
INFO 05/01/2026 01:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 01:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 01:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 01:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 01:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 01:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 01:06:40 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 01:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 01:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:06:43 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 01:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 01:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 01:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 01:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/01/2026 01:06:43 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 01:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 01:06:46 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 01:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 01:06:47 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/01/2026 01:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 01:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 01:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 01:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 01:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 01:06:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 01:06:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 01:06:47 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/01/2026 01:06:47 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 01:06:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 01:06:47 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 02:06:40 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:06:40 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 02:06:40 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:06:40 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 02:06:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 02:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:06:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 02:06:40 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 02:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 02:06:40 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 02:06:43 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:06:43 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 02:06:43 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:06:43 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/01/2026 02:06:43 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 02:06:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:06:43 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 02:06:43 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 02:06:43 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/01/2026 02:06:43 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 02:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 02:06:47 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 02:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 02:06:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/01/2026 02:06:47 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 02:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 02:06:47 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 02:06:47 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 02:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/01/2026 02:06:47 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 02:06:47 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 02:06:47 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/01/2026 02:06:47 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 02:06:47 PM create_articles.py ln 116 Already-posted-today filter applied (0.06s)
INFO 05/01/2026 02:06:47 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 02:49:20 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/01/2026 03:06:30 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:30 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 03:06:30 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 03:06:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 03:06:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 03:06:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 03:06:31 PM create_articles.py ln 100 Characters fetched and filtered (0.40s)
INFO 05/01/2026 03:06:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 03:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 03:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:34 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 03:06:34 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 03:06:34 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:34 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 03:06:34 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 03:06:34 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 03:06:34 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 03:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 03:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 03:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 03:06:38 PM create_articles.py ln 93 JWT token obtained (0.81s)
INFO 05/01/2026 03:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 03:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 03:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 03:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 03:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/01/2026 03:06:38 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 03:06:38 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 03:06:39 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/01/2026 03:06:39 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 03:06:39 PM create_articles.py ln 116 Already-posted-today filter applied (0.26s)
INFO 05/01/2026 03:06:39 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 03:56:52 PM drupal.py ln 528 Fetched 3 shared widgets across 1 pages
INFO 05/01/2026 04:04:50 PM drupal.py ln 492 Fetched 0 widgets for target_id 7
INFO 05/01/2026 04:04:50 PM drupal.py ln 492 Fetched 15 widgets for target_id 4
INFO 05/01/2026 04:05:54 PM drupal.py ln 528 Fetched 3 shared widgets across 1 pages
INFO 05/01/2026 04:06:30 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:06:30 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 04:06:30 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:06:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 04:06:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 04:06:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:06:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 04:06:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 04:06:31 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 04:06:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 04:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 04:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:06:35 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 04:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 04:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 04:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 04:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 04:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 04:06:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 04:06:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 04:06:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 04:06:38 PM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/01/2026 04:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 04:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 04:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 04:06:39 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 04:06:39 PM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/01/2026 04:06:39 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 04:06:39 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 04:06:39 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/01/2026 04:06:39 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 04:06:39 PM create_articles.py ln 116 Already-posted-today filter applied (0.32s)
INFO 05/01/2026 04:06:39 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 04:56:34 PM drupal.py ln 528 Fetched 4 shared widgets across 1 pages
INFO 05/01/2026 05:05:31 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:05:31 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 05:05:31 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:05:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 05:05:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 05:05:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:05:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 05:05:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 05:05:31 PM create_articles.py ln 100 Characters fetched and filtered (0.57s)
INFO 05/01/2026 05:05:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 05:05:35 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:05:35 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 05:05:35 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:05:35 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 05:05:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 05:05:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:05:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 05:05:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 05:05:35 PM create_articles.py ln 100 Characters fetched and filtered (0.41s)
INFO 05/01/2026 05:05:35 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 05:05:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 05:05:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 05:05:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 05:05:39 PM create_articles.py ln 93 JWT token obtained (0.67s)
INFO 05/01/2026 05:05:39 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 05:05:39 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 05:05:39 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 05:05:40 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 05:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.53s)
INFO 05/01/2026 05:05:40 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/01/2026 05:05:40 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/01/2026 05:05:40 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/01/2026 05:05:40 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/01/2026 05:05:40 PM create_articles.py ln 116 Already-posted-today filter applied (0.26s)
INFO 05/01/2026 05:05:40 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/01/2026 06:07:31 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:31 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 06:07:31 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 06:07:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 06:07:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 06:07:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 06:07:31 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/01/2026 06:07:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 06:07:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 06:07:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:35 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/01/2026 06:07:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 06:07:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 06:07:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 06:07:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 06:07:35 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 06:07:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 06:07:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 06:07:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 06:07:39 PM create_articles.py ln 93 JWT token obtained (0.92s)
INFO 05/01/2026 06:07:39 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 06:07:39 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 06:07:39 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 06:07:40 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 06:07:40 PM create_articles.py ln 100 Characters fetched and filtered (0.47s)
INFO 05/01/2026 06:07:40 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 07:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 07:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:06:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 07:06:33 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 07:06:33 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:06:33 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 07:06:33 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 07:06:33 PM create_articles.py ln 100 Characters fetched and filtered (0.39s)
INFO 05/01/2026 07:06:33 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 07:06:36 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:06:36 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 07:06:36 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:06:36 PM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/01/2026 07:06:36 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 07:06:36 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:06:36 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 07:06:36 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 07:06:36 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 07:06:36 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 07:06:39 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 07:06:39 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 07:06:39 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 07:06:40 PM create_articles.py ln 93 JWT token obtained (0.86s)
INFO 05/01/2026 07:06:40 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 07:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 07:06:40 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 07:06:41 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 07:06:41 PM create_articles.py ln 100 Characters fetched and filtered (0.41s)
INFO 05/01/2026 07:06:41 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:05:30 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:05:30 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 08:05:30 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:05:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 08:05:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 08:05:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:05:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 08:05:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 08:05:31 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/01/2026 08:05:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:05:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:05:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 08:05:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:05:34 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 08:05:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 08:05:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:05:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 08:05:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 08:05:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 08:05:35 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:05:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 08:05:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 08:05:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 08:05:39 PM create_articles.py ln 93 JWT token obtained (0.82s)
INFO 05/01/2026 08:05:39 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 08:05:39 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 08:05:39 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 08:05:39 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 08:05:39 PM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/01/2026 08:05:39 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 08:16:27 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/01/2026 09:07:31 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:07:31 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 09:07:31 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:07:31 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 09:07:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 09:07:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:07:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 09:07:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 09:07:31 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/01/2026 09:07:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 09:07:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:07:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 09:07:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:07:35 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/01/2026 09:07:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 09:07:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:07:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 09:07:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 09:07:35 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/01/2026 09:07:35 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 09:07:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 09:07:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 09:07:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 09:07:38 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/01/2026 09:07:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 09:07:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 09:07:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 09:07:39 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 09:07:39 PM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/01/2026 09:07:39 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 10:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:06:32 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/01/2026 10:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 10:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 10:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 10:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/01/2026 10:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:06:35 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:06:35 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 10:06:35 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:06:36 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/01/2026 10:06:36 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 10:06:36 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:06:36 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 10:06:36 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 10:06:36 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 10:06:36 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:06:39 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 10:06:39 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 10:06:39 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 10:06:40 PM create_articles.py ln 93 JWT token obtained (1.18s)
INFO 05/01/2026 10:06:40 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 10:06:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 10:06:40 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 10:06:40 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 10:06:40 PM create_articles.py ln 100 Characters fetched and filtered (0.34s)
INFO 05/01/2026 10:06:40 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 10:52:34 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/01/2026 11:05:30 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:05:30 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/01/2026 11:05:30 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:05:31 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/01/2026 11:05:31 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/01/2026 11:05:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:05:31 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/01/2026 11:05:31 PM cron_common.py ln 313 filtered characters: 17
INFO 05/01/2026 11:05:31 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/01/2026 11:05:31 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 11:05:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:05:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/01/2026 11:05:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:05:34 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/01/2026 11:05:34 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/01/2026 11:05:34 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:05:34 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/01/2026 11:05:34 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 11:05:34 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/01/2026 11:05:34 PM cron_common.py ln 373 No characters selected.
INFO 05/01/2026 11:05:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/01/2026 11:05:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/01/2026 11:05:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/01/2026 11:05:38 PM create_articles.py ln 93 JWT token obtained (0.81s)
INFO 05/01/2026 11:05:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/01/2026 11:05:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/01/2026 11:05:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/01/2026 11:05:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/01/2026 11:05:38 PM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/01/2026 11:05:38 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 12:06:30 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:06:30 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 12:06:30 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:06:31 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 12:06:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 12:06:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:06:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 12:06:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 12:06:31 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/02/2026 12:06:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 12:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 12:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:06:34 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/02/2026 12:06:34 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 12:06:34 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:06:34 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 12:06:34 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 12:06:34 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 12:06:34 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 12:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 12:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:06:38 AM create_articles.py ln 93 JWT token obtained (0.81s)
INFO 05/02/2026 12:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 12:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 12:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 12:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/02/2026 12:06:38 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:31 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:31 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 01:06:31 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:31 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 01:06:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 01:06:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 01:06:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 01:06:31 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/02/2026 01:06:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 01:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:34 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 01:06:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 01:06:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 01:06:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 01:06:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 01:06:35 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:38 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:38 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 01:06:38 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:38 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/02/2026 01:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 01:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 01:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 01:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/02/2026 01:06:38 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:07:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:07:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 02:07:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:07:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 02:07:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 02:07:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:07:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 02:07:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 02:07:32 AM create_articles.py ln 100 Characters fetched and filtered (0.38s)
INFO 05/02/2026 02:07:32 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:07:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:07:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 02:07:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:07:36 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 02:07:36 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 02:07:36 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:07:36 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 02:07:36 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 02:07:36 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 02:07:36 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:07:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:07:40 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 02:07:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:07:40 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/02/2026 02:07:40 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 02:07:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:07:41 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 02:07:41 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 02:07:41 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/02/2026 02:07:41 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:07:30 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:07:30 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 03:07:30 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:07:31 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 03:07:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 03:07:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:07:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 03:07:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 03:07:31 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/02/2026 03:07:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:07:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:07:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 03:07:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:07:34 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 03:07:34 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 03:07:34 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:07:34 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 03:07:34 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 03:07:34 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 03:07:34 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:07:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:07:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 03:07:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:07:38 AM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/02/2026 03:07:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 03:07:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:07:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 03:07:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 03:07:38 AM create_articles.py ln 100 Characters fetched and filtered (0.38s)
INFO 05/02/2026 03:07:38 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 04:05:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 04:05:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 04:05:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 04:05:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 04:05:32 AM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/02/2026 04:05:32 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 04:05:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:36 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 04:05:36 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 04:05:36 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:36 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 04:05:36 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 04:05:36 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 04:05:36 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:39 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:39 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 04:05:39 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:39 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/02/2026 04:05:39 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 04:05:39 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:39 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 04:05:39 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 04:05:39 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/02/2026 04:05:39 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:05:31 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:05:31 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 05:05:31 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:05:31 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 05:05:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 05:05:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:05:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 05:05:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 05:05:31 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/02/2026 05:05:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:05:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:05:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 05:05:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:05:34 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 05:05:34 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 05:05:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:05:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 05:05:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 05:05:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 05:05:35 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:05:38 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:05:38 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 05:05:38 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:05:38 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/02/2026 05:05:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 05:05:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:05:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 05:05:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 05:05:38 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/02/2026 05:05:38 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:05:33 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:05:33 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 06:05:33 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:05:34 AM create_articles.py ln 93 JWT token obtained (0.82s)
INFO 05/02/2026 06:05:34 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 06:05:34 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:05:34 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 06:05:34 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 06:05:34 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/02/2026 06:05:34 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:05:40 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:05:40 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 06:05:40 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:05:41 AM create_articles.py ln 93 JWT token obtained (0.89s)
INFO 05/02/2026 06:05:41 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 06:05:41 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:05:41 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 06:05:41 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 06:05:41 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/02/2026 06:05:41 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:05:46 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 06:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:05:48 AM create_articles.py ln 93 JWT token obtained (1.27s)
INFO 05/02/2026 06:05:48 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 06:05:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:05:48 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 06:05:48 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 06:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.75s)
INFO 05/02/2026 06:05:48 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/02/2026 06:05:48 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/02/2026 06:05:49 AM create_articles.py ln 116 Already-posted-today filter applied (0.41s)
INFO 05/02/2026 06:05:49 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/02/2026 06:05:49 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/02/2026 06:05:51 AM cron_common.py ln 414 Character articles: 99
INFO 05/02/2026 06:05:51 AM create_articles.py ln 126 Character articles loaded (2.32s)
INFO 05/02/2026 06:05:51 AM create_articles.py ln 128 Setup complete (4.76s total)
INFO 05/02/2026 06:05:51 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/02/2026 06:05:51 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260502_060551_news_Hawk.log
INFO 05/02/2026 06:05:51 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/02/2026 06:05:52 AM article_creation_service.py ln 766 WordPress authentication successful (1.15s)
INFO 05/02/2026 06:05:53 AM article_creation_service.py ln 766 Fetched WP users (0.70s)
INFO 05/02/2026 06:05:55 AM article_creation_service.py ln 766 Loaded 99 articles for character (1.77s)
INFO 05/02/2026 06:05:56 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (1.42s)
INFO 05/02/2026 06:05:56 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/02/2026 06:05:56 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/02/2026 06:05:56 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/02/2026 06:05:56 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/02/2026 06:05:58 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/02/2026 06:05:58 AM chat.py ln 159 Found 8 results
INFO 05/02/2026 06:05:58 AM article_creation_service.py ln 766 Found 8 search results (1.43s)
INFO 05/02/2026 06:05:58 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260502_060551_news_Hawk_search.md
INFO 05/02/2026 06:05:58 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/02/2026 06:06:32 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/02/2026 06:06:32 AM article_creation_service.py ln 766 Generated article - Hawk’s Saturday Brief: Trump says Iran war is “over” as disapproval surges; WHCD shooting video released; Camp Mystic halts reopening; Antigua’s Browne wins; USL lands CBA; Superdry cofounder convicted (34.93s)
INFO 05/02/2026 06:06:33 AM article_creation_service.py ln 766 Created WP post 1171 (0.72s)
INFO 05/02/2026 06:06:35 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/02/2026 06:06:35 AM wp.py ln 837 Prompt: Prompt for featured image generation:
Create a dynamic, collage-style featured image that visually summarizes the topics in Hawk’s Saturday Brief. Incorporate symbolic representations of the following: President Trump (perhaps with the U.S. Capitol or Congress in the background and a subtle Iranian flag motif to reference the war powers/Iran conflict), crime scene tape or a camera (to illustrate the White House Correspondents’ Dinner shooting), a closed gate or camp sign with “Camp Mystic” on it to represent the camp not reopening, a Caribbean flag (such as that of Antigua and Barbuda) with a ballot box or voting imagery, a broken fashion hanger or UK court gavel next to the Superdry logo (for the Superdry cofounder conviction), a soccer ball and handshake (for the USL labor agreement), and a financial or AI/tech chart overlay (big tech investments and rising oil prices). Keep the tone serious yet energetic, with a modern, newsy feel and a clean layout.
INFO 05/02/2026 06:06:35 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/02/2026 06:07:20 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/02/2026 06:07:20 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/02/2026 06:07:20 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-02.jpeg
INFO 05/02/2026 06:07:20 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-02.jpeg
INFO 05/02/2026 06:07:20 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NzAxOTUyLCJuYmYiOjE3Nzc3MDE5NTIsImV4cCI6MTc3ODMwNjc1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.oChej7ren9ixC-409NmwprUBu3N8z9_SaI_inc4Cj9s
INFO 05/02/2026 06:07:21 AM image.py ln 220 filename is 2026-05-02.webp
INFO 05/02/2026 06:07:21 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-02.webp'>}
INFO 05/02/2026 06:07:23 AM article_creation_service.py ln 766 Featured image posted (49.97s)
INFO 05/02/2026 06:07:26 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/02/2026 06:07:26 AM wp.py ln 872 Secondary Image Prompt: Prompt for complementary image generation:
Create a visually compelling collage-style illustration that captures the tense, volatile mood of a week in global headlines. The composition should feature fragmented, overlapping vignettes: shadowy silhouettes of political figures against a backdrop of the U.S. Capitol draped in muted, somber blues and grays, evoking themes of war, controversy, and political maneuvering. Integrate red warning tape and somber candlelight to represent tragedy and remembrance, referencing the Camp Mystic disaster and the shooting at the White House Correspondents' Dinner.
In another corner, place sun-washed, tropical hues and palm fronds to hint at Caribbean election tensions, contrasted with a stark, gray courtroom gavel for the corporate crime verdict. Include stylized soccer players in mid-action and currency symbols or digital code cascading subtly through the background, conveying the sports labor breakthrough and ongoing AI-and-markets pulse. Use a mixture of gritty textures and ethereal lighting to tie together the mood of uncertainty, crisis, and resilience, with newsprint or torn-paper textures to evoke the transient, fast-moving nature of the headlines.
INFO 05/02/2026 06:07:26 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/02/2026 06:08:27 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/02/2026 06:08:27 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/02/2026 06:08:27 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-02-1.jpeg
INFO 05/02/2026 06:08:27 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-02-1.jpeg
INFO 05/02/2026 06:08:27 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3NzAxOTUyLCJuYmYiOjE3Nzc3MDE5NTIsImV4cCI6MTc3ODMwNjc1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.oChej7ren9ixC-409NmwprUBu3N8z9_SaI_inc4Cj9s
INFO 05/02/2026 06:08:27 AM image.py ln 220 filename is 2026-05-02-1.webp
INFO 05/02/2026 06:08:27 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-02-1.webp'>}
INFO 05/02/2026 06:08:29 AM article_creation_service.py ln 766 Secondary image uploaded (66.03s)
INFO 05/02/2026 06:08:29 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/02/2026 06:08:30 AM wp.py ln 995 Post content updated successfully for post 1171
INFO 05/02/2026 06:08:30 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/02/2026 06:08:34 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/02/2026 06:08:44 AM chat.py ln 348 AI comment: # Fact-Check Assessment
**Date:** May 02, 2026
## Overall Assessment
The article accurately represents the information provided in its sources. Each major claim is properly supported by the linked references, and the characterizations align with the source material. The article appropriately conveys the substance of breaking news stories without introducing unsupported claims.
## Key Verification Points
**Iran War Powers (Items 1-2):** The article correctly reports that Trump told Congress hostilities "ended last month" to sidestep the War Powers deadline (Source 1, 6) and accurately notes
INFO 05/02/2026 06:08:44 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/02/2026 06:08:44 AM article_creation_service.py ln 766 Fact-check comment posted (14.48s)
INFO 05/02/2026 06:08:44 AM article_creation_service.py ln 766 Article creation completed successfully (total: 173.23s)
INFO 05/02/2026 06:08:44 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/02/2026 06:08:44 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/02/2026 06:08:44 AM create_articles.py ln 204 Script completed (178.00s total)
INFO 05/02/2026 07:05:31 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:31 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 07:05:31 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:32 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/02/2026 07:05:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 07:05:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 07:05:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 07:05:32 AM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 05/02/2026 07:05:32 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 07:05:36 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:36 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 07:05:36 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:37 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 07:05:37 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 07:05:37 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:37 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 07:05:37 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 07:05:37 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/02/2026 07:05:37 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 07:05:41 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:41 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 07:05:41 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:42 AM create_articles.py ln 93 JWT token obtained (1.00s)
INFO 05/02/2026 07:05:42 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 07:05:42 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:42 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 07:05:43 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 07:05:43 AM create_articles.py ln 100 Characters fetched and filtered (0.55s)
INFO 05/02/2026 07:05:43 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/02/2026 07:05:43 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/02/2026 07:05:43 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/02/2026 07:05:43 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/02/2026 07:05:43 AM create_articles.py ln 116 Already-posted-today filter applied (0.30s)
INFO 05/02/2026 07:05:43 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/02/2026 08:06:30 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:30 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 08:06:30 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:31 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/02/2026 08:06:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 08:06:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 08:06:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 08:06:31 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/02/2026 08:06:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 08:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 08:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:34 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 08:06:34 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 08:06:34 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:34 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 08:06:34 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 08:06:34 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 08:06:34 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 08:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 08:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:38 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/02/2026 08:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 08:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 08:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 08:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/02/2026 08:06:38 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/02/2026 08:06:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/02/2026 08:06:39 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/02/2026 08:06:39 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/02/2026 08:06:39 AM create_articles.py ln 116 Already-posted-today filter applied (0.26s)
INFO 05/02/2026 08:06:39 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/02/2026 09:06:30 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:06:30 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 09:06:30 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:06:31 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/02/2026 09:06:31 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 09:06:31 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:06:31 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 09:06:31 AM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 09:06:31 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/02/2026 09:06:31 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 09:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:06:34 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 09:06:34 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 09:06:34 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:06:34 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 09:06:34 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 09:06:34 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 09:06:34 AM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 09:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:06:38 AM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/02/2026 09:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 09:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 09:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 09:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/02/2026 09:06:38 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/02/2026 09:06:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/02/2026 09:06:38 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/02/2026 09:06:38 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/02/2026 09:06:38 AM create_articles.py ln 116 Already-posted-today filter applied (0.26s)
INFO 05/02/2026 09:06:38 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/02/2026 12:11:37 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/02/2026 12:12:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:12:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 12:12:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:12:51 PM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 05/02/2026 12:12:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 12:12:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:12:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 12:12:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 12:12:51 PM create_articles.py ln 100 Characters fetched and filtered (0.41s)
INFO 05/02/2026 12:12:51 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 12:12:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:12:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 12:12:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:12:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 12:12:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 12:12:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:12:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 12:12:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 12:12:54 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 12:12:54 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 12:12:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 12:12:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 12:12:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 12:12:58 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 12:12:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 12:12:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 12:12:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 12:12:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 12:12:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 12:12:58 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 01:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 01:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 01:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 01:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 01:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 01:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 01:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/02/2026 01:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 01:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 01:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 01:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 01:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 01:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 01:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 01:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 01:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 01:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 01:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 02:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 02:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 02:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 02:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/02/2026 02:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 02:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 02:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 02:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 02:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 02:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 02:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 02:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 02:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 02:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 02:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 02:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 02:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 03:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 03:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 03:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 03:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 03:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 03:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 03:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 03:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/02/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 03:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 03:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 03:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 03:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 03:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 03:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 03:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 03:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 03:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 03:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/02/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 04:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 04:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 04:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/02/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 05:06:55 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/02/2026 05:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 05:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 05:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/02/2026 05:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 06:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 06:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 06:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 06:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 06:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/02/2026 06:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 06:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 06:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 06:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 06:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 06:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 06:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 06:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 06:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 06:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 06:07:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 06:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 06:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 06:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 06:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 06:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 06:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/02/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/02/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 07:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 07:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 07:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 07:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 07:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 07:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 07:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 07:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/02/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 07:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/02/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/02/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 08:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/02/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/02/2026 09:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/02/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 09:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/02/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 09:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 09:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 09:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 09:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 09:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 09:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 09:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 09:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 09:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 09:22:03 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/02/2026 10:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 10:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 10:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 10:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 10:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 10:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 10:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 10:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 10:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/02/2026 10:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 10:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 10:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 10:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 10:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/02/2026 10:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 10:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 10:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 10:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 10:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 10:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 10:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 10:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 10:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 10:06:56 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/02/2026 10:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 10:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 10:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 10:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 10:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 10:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/02/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 11:05:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/02/2026 11:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/02/2026 11:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 11:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/02/2026 11:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/02/2026 11:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/02/2026 11:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 11:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 11:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/02/2026 11:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 11:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 11:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/02/2026 11:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 11:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/02/2026 11:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 11:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 11:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/02/2026 11:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/02/2026 11:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/02/2026 11:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/02/2026 11:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/02/2026 11:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/02/2026 11:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/02/2026 11:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/02/2026 11:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/02/2026 11:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/02/2026 11:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 12:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/03/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:06:53 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 12:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 12:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 12:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 12:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 12:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 12:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 12:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 12:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 12:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/03/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:06:55 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 01:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 01:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 01:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 01:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 01:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:40:08 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/03/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 02:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 02:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 02:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 02:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 02:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 02:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 02:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 02:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 02:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 03:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 03:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 03:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 03:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 03:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 03:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 03:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 03:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 03:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 03:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 03:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 03:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 03:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 03:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 03:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 03:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 03:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 03:07:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/03/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 04:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:56 AM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/03/2026 04:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 04:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 04:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 04:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/03/2026 04:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/03/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 05:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 06:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/03/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 06:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 06:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 06:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 06:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 06:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 06:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 06:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 06:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 06:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 06:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/03/2026 06:05:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/03/2026 06:05:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/03/2026 06:05:56 AM cron_common.py ln 414 Character articles: 100
INFO 05/03/2026 06:05:56 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/03/2026 06:05:56 AM create_articles.py ln 128 Setup complete (1.03s total)
INFO 05/03/2026 06:05:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/03/2026 06:05:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260503_060556_news_Hawk.log
INFO 05/03/2026 06:05:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/03/2026 06:05:57 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 05/03/2026 06:05:57 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/03/2026 06:05:57 AM article_creation_service.py ln 766 Loaded 100 articles for character (0.55s)
INFO 05/03/2026 06:05:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 05/03/2026 06:05:57 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/03/2026 06:05:57 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/03/2026 06:05:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/03/2026 06:05:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/03/2026 06:05:59 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/03/2026 06:05:59 AM chat.py ln 159 Found 8 results
INFO 05/03/2026 06:05:59 AM article_creation_service.py ln 766 Found 8 search results (1.65s)
INFO 05/03/2026 06:05:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260503_060556_news_Hawk_search.md
INFO 05/03/2026 06:05:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/03/2026 06:07:00 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/03/2026 06:07:00 AM article_creation_service.py ln 766 Generated article - Hawk’s Sunday Brief: Trump hints Iran strikes could resume; Spirit shuts down; Berkshire profit surges; Turkmenistan cracks open; MLB catcher shake‑ups (60.66s)
INFO 05/03/2026 06:07:00 AM article_creation_service.py ln 766 Created WP post 1176 (0.09s)
INFO 05/03/2026 06:07:03 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/03/2026 06:07:03 AM wp.py ln 837 Prompt: Prompt for featured image generation:
Create a dynamic collage-style illustration representing the major news topics from Hawk’s Sunday Brief. Central elements: a stylized image of a grounded Spirit Airlines plane (symbolizing the airline shutdown), an abstract map highlighting the Strait of Hormuz (for U.S.-Iran tensions), and Berkshire Hathaway’s logo or a bullish stock chart (to signify profit surge). Add smaller vignettes or icons: a silhouette of Turkmenistan with an open door, a gold crown or the Union Jack (for King Charles III’s U.S. visit), and an MLB baseball catcher’s mask and mitt (referencing the upcoming games and player updates). Use a modern, newsy color palette—blues, whites, and bold accent tones—to evoke urgency and broad reach.
INFO 05/03/2026 06:07:03 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/03/2026 06:07:59 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/03/2026 06:07:59 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/03/2026 06:07:59 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-03.jpeg
INFO 05/03/2026 06:07:59 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-03.jpeg
INFO 05/03/2026 06:07:59 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3Nzg4MzU3LCJuYmYiOjE3Nzc3ODgzNTcsImV4cCI6MTc3ODM5MzE1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.msWSzNDEoGfNFtMMaYPzPTcIqkDPq7Me-X1ux_Pb8Es
INFO 05/03/2026 06:07:59 AM image.py ln 220 filename is 2026-05-03.webp
INFO 05/03/2026 06:07:59 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-03.webp'>}
INFO 05/03/2026 06:08:00 AM article_creation_service.py ln 766 Featured image posted (60.31s)
INFO 05/03/2026 06:08:02 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/03/2026 06:08:02 AM wp.py ln 872 Secondary Image Prompt: Prompt for Complementary Image Generation:
Create a visually dynamic collage-style image that captures the key themes of global tension, industry upheaval, rare openness, and resilience as presented in the Hawk’s Sunday Brief. The composition should include the following visual elements: a turbulent, partly cloudy sky with dramatic lighting representing geopolitical uncertainty; a grounded, yellow Spirit Airlines plane in a deserted airport terminal, symbolizing the airline’s shutdown and stranded travelers; distant silhouettes of oil tankers and railcars, subtly referencing Berkshire Hathaway’s booming logistics and energy gains; an ornate Central Asian gateway opening to reveal soft golden light, symbolizing Turkmenistan’s cautious openness; a split portrait of a U.S. and Iranian flag at the horizon, underscoring fragile diplomacy; and subtle hints of a baseball field—home plate in shadow—evoking ongoing MLB changes and recovery. Use a palette blending cool blues, stormy grays, muted golds, and small pops of vibrant yellow. The overall atmosphere should balance uncertainty with a sense of cautious optimism, texture-rich and layered to invite close inspection.
INFO 05/03/2026 06:08:02 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/03/2026 06:09:02 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/03/2026 06:09:02 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/03/2026 06:09:02 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-03-1.jpeg
INFO 05/03/2026 06:09:02 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-03-1.jpeg
INFO 05/03/2026 06:09:02 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3Nzg4MzU3LCJuYmYiOjE3Nzc3ODgzNTcsImV4cCI6MTc3ODM5MzE1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.msWSzNDEoGfNFtMMaYPzPTcIqkDPq7Me-X1ux_Pb8Es
INFO 05/03/2026 06:09:02 AM image.py ln 220 filename is 2026-05-03-1.webp
INFO 05/03/2026 06:09:02 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-03-1.webp'>}
INFO 05/03/2026 06:09:03 AM article_creation_service.py ln 766 Secondary image uploaded (62.45s)
INFO 05/03/2026 06:09:03 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/03/2026 06:09:03 AM wp.py ln 995 Post content updated successfully for post 1176
INFO 05/03/2026 06:09:03 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/03/2026 06:09:14 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/03/2026 06:09:24 AM chat.py ln 348 AI comment: The article accurately represents the information in the provided sources. The key claims are well-supported:
**Trump/Iran statement**: Reuters (Source 3) directly confirms Trump told reporters in West Palm Beach "there is the possibility" the U.S. could restart strikes on Iran, matching the article's opening item.
**Spirit Airlines shutdown**: Multiple sources (CNN Source 8, AP News references in Sources 1-2, WSJ mentions) confirm Spirit ceased operations and canceled all flights on May 2, 2026.
**Berkshire Hathaway earnings**: WSJ (Source 7) reports first-quarter profits "more than double
INFO 05/03/2026 06:09:24 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/03/2026 06:09:24 AM article_creation_service.py ln 766 Fact-check comment posted (21.74s)
INFO 05/03/2026 06:09:24 AM article_creation_service.py ln 766 Article creation completed successfully (total: 208.05s)
INFO 05/03/2026 06:09:24 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/03/2026 06:09:24 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/03/2026 06:09:24 AM create_articles.py ln 204 Script completed (209.08s total)
INFO 05/03/2026 07:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 07:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 07:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 07:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/03/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 07:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 07:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 07:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 07:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 07:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 07:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 07:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 07:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 07:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 07:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 07:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 07:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 07:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 07:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 07:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 07:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/03/2026 07:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/03/2026 07:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/03/2026 07:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/03/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/03/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/03/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 08:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 08:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/03/2026 08:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 08:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 08:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:56 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/03/2026 08:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 08:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 08:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 08:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 08:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 08:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 08:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/03/2026 08:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/03/2026 08:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/03/2026 08:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/03/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 09:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/03/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 09:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 09:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 09:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 09:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 09:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 09:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 09:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 09:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 09:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 09:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 09:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/03/2026 09:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/03/2026 09:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/03/2026 09:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/03/2026 10:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 10:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/03/2026 10:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 10:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 10:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 10:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/03/2026 10:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 10:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 10:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 10:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 10:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 10:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 10:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 10:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 10:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 10:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 10:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 10:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 10:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 10:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 10:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 10:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/03/2026 10:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/03/2026 10:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/03/2026 10:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/03/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 11:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 11:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 11:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 11:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/03/2026 11:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 11:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 11:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 11:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 11:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 11:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 11:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 11:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 11:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 11:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 11:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 11:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 11:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 11:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 11:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/03/2026 11:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/03/2026 11:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/03/2026 11:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/03/2026 11:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/03/2026 11:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/03/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/03/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 12:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 12:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 12:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 12:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 12:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 12:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 12:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 12:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 12:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 12:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 12:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 12:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 12:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 12:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 12:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 01:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 01:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/03/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 01:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 01:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 01:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 01:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 01:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 01:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 01:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 01:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 01:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 01:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 01:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 01:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 01:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 01:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 01:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 02:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 02:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 02:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 02:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/03/2026 02:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 02:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 02:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 02:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 02:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 02:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 02:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 02:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 02:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 02:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 02:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 02:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 02:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 03:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 03:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 03:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 03:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 03:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/03/2026 03:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 03:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 03:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 03:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 03:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 03:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 03:07:53 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 03:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 03:07:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 03:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 03:07:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 03:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 03:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 03:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 03:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 03:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/03/2026 03:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/03/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 04:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 04:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/03/2026 05:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 05:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 05:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 05:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/03/2026 05:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 05:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:06:53 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/03/2026 05:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 05:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 05:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 05:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 05:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 05:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 05:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 05:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 05:06:58 PM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 05/03/2026 05:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 05:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 05:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 05:06:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 05:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/03/2026 05:06:58 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 06:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 06:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 06:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 06:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 06:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 06:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 06:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 06:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 06:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 06:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/03/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 07:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 07:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 07:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 07:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 07:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 07:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 07:06:56 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/03/2026 07:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 07:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 07:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 07:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 07:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 07:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/03/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/03/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 08:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 08:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 08:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 08:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/03/2026 09:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 09:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 09:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 09:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 09:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 09:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 09:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 09:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 09:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 09:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 09:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 09:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 10:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 10:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:07:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/03/2026 10:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 10:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 10:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 10:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/03/2026 10:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 10:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 10:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 10:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 10:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 10:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 10:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 10:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 10:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 10:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 10:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 10:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 10:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 10:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 10:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 10:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 10:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 10:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/03/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/03/2026 11:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/03/2026 11:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/03/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/03/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/03/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 11:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/03/2026 11:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/03/2026 11:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/03/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/03/2026 11:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/03/2026 11:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/03/2026 11:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/03/2026 11:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/03/2026 11:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/03/2026 11:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/03/2026 11:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/03/2026 11:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/03/2026 11:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/03/2026 11:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/03/2026 11:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 12:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 12:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 12:06:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 12:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 12:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/04/2026 12:06:52 AM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 05/04/2026 12:06:52 AM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 05/04/2026 12:06:53 AM cron_common.py ln 414 Character articles: 18
INFO 05/04/2026 12:06:53 AM create_articles.py ln 126 Character articles loaded (0.17s)
INFO 05/04/2026 12:06:53 AM create_articles.py ln 128 Setup complete (0.66s total)
INFO 05/04/2026 12:06:53 AM create_articles.py ln 140 Creating article for character: Geneva
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260504_000653_dev_Geneva.log
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Article creation started for character: Geneva
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Loaded 18 articles for character (0.17s)
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Got 9 categories and 32 tags (0.10s)
INFO 05/04/2026 12:06:53 AM article_creation_service.py ln 766 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 05/04/2026 12:06:53 AM chat.py ln 139 Tavily search will filter to past week
INFO 05/04/2026 12:06:56 AM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 05/04/2026 12:06:56 AM chat.py ln 159 Found 5 results
INFO 05/04/2026 12:06:56 AM article_creation_service.py ln 766 Found 5 search results (2.28s)
INFO 05/04/2026 12:06:56 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260504_000653_dev_Geneva_search.md
INFO 05/04/2026 12:06:56 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/04/2026 12:07:59 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:07:59 AM article_creation_service.py ln 766 Generated article - After the agent hacks: A practical hardening guide for Claude Code, Codex, Copilot, and friends (63.06s)
INFO 05/04/2026 12:07:59 AM article_creation_service.py ln 766 Created WP post 823 (0.10s)
INFO 05/04/2026 12:08:01 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:08:01 AM wp.py ln 837 Prompt: Prompt for Featured Image Generation:
Create a modern, high-tech illustration showing a digital workspace where AI coding agents (such as Claude Code, Copilot, Codex, and Gemini) are represented as robot assistants or code bots surrounding a central computer terminal. Visualize a fortified, shielded terminal (symbolizing hardened agent runtime security), with visible security barriers or shields protecting it. Display warning icons over suspicious inputs like branch names, issue titles, or PR descriptions trying to access the shell, with approval checkmarks and sanitized/validated paths showing correctly handled commands. In the background, show icons or abstract representations of AGENTS.md and configuration files as the "source of truth" for all agents. Convey a sense of vigilance, collaboration, and layered security in a cloud-native developer environment. Use a clean, modern style with vibrant color accents highlighting security, trust, and autonomy.
INFO 05/04/2026 12:08:01 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/04/2026 12:09:03 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 12:09:03 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/04/2026 12:09:03 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-04.jpeg
INFO 05/04/2026 12:09:03 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-04.jpeg
INFO 05/04/2026 12:09:03 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzc4NTMyMTMsIm5iZiI6MTc3Nzg1MzIxMywiZXhwIjoxNzc4NDU4MDEzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.4TVliXjzWI-2GCh-N14qwU_deMl8LvYQjRGfS-TPKZc
INFO 05/04/2026 12:09:04 AM image.py ln 220 filename is 2026-05-04.webp
INFO 05/04/2026 12:09:04 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-04.webp'>}
INFO 05/04/2026 12:09:04 AM article_creation_service.py ln 766 Featured image posted (65.39s)
INFO 05/04/2026 12:09:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:09:07 AM wp.py ln 872 Secondary Image Prompt: Prompt for Generating a Complementary Image:
Create a visually striking digital illustration portraying the concept of "hardening AI coding agents for security" in the context of the terminal/CLI. The scene is a dark, stylized command-line interface (terminal window) glowing in deep blues and black, textured like cold steel. Multiple transparent, semi-abstract AI agent avatars (e.g., stylized glows, geometric bot outlines, or holographic silhouettes labeled "Claude," "Copilot," "Codex," "Gemini," "Cursor") interact with the system — their inputs depicted as colored data streams flowing toward the terminal.
In the foreground, a bright, shield-shaped firewall or digital barrier overlays the command line, intercepting or sanitizing incoming streams labeled "Untrusted Input" (e.g., branch names, PR titles) before they touch execution commands. Visual cues represent critical controls: a checklist, a padlock on credentials, a logging icon, and a green "APPROVE" button, all floating as icons. Configuration files like AGENTS.md are depicted as glowing, anchored rulebooks at the center, radiating consistent guiding lines connecting to each agent.
The overall mood is alert and focused, emphasizing vigilance and safety — a modern, cyberpunk "security operations" vibe. Use a cool color palette (blues, cyans, silvery grays) with sharp contrasts and neon accents for urgency. The texture of the image should suggest control, resilience, and active defense against unseen threats lurking in the digital shadows.
INFO 05/04/2026 12:09:07 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/04/2026 12:09:51 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 12:09:52 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/04/2026 12:09:52 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-04-1.jpeg
INFO 05/04/2026 12:09:52 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-04-1.jpeg
INFO 05/04/2026 12:09:52 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzc4NTMyMTMsIm5iZiI6MTc3Nzg1MzIxMywiZXhwIjoxNzc4NDU4MDEzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.4TVliXjzWI-2GCh-N14qwU_deMl8LvYQjRGfS-TPKZc
INFO 05/04/2026 12:09:52 AM image.py ln 220 filename is 2026-05-04-1.webp
INFO 05/04/2026 12:09:52 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-04-1.webp'>}
INFO 05/04/2026 12:09:52 AM article_creation_service.py ln 766 Secondary image uploaded (48.32s)
INFO 05/04/2026 12:09:52 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/04/2026 12:09:53 AM wp.py ln 995 Post content updated successfully for post 823
INFO 05/04/2026 12:09:53 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/04/2026 12:09:55 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/04/2026 12:10:13 AM chat.py ln 348 AI comment: # Fact-Check Assessment
**Status: ACCURATE** ✓
The article accurately represents the source material with only minor discrepancies.
## Verification Summary
The article faithfully synthesizes information from the provided sources about AI coding agent security vulnerabilities and hardening practices. The core narrative—that six exploits exposed runtime security gaps in major AI coding agents—is directly supported by Source 1 (VentureBeat). The technical recommendations align with best practices documented across Sources 1-5.
## Minor Discrepancies
**1. GPT-5.5 performance claim (acceptable
INFO 05/04/2026 12:10:13 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/04/2026 12:10:13 AM article_creation_service.py ln 766 Fact-check comment posted (20.46s)
INFO 05/04/2026 12:10:13 AM article_creation_service.py ln 766 Article creation completed successfully (total: 200.35s)
INFO 05/04/2026 12:10:13 AM create_articles.py ln 185 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 05/04/2026 12:10:13 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/04/2026 12:10:13 AM create_articles.py ln 204 Script completed (201.02s total)
INFO 05/04/2026 12:10:16 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:10:16 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 12:10:16 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:10:16 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 12:10:16 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 12:10:16 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:10:16 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 12:10:17 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 12:10:17 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 12:10:17 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 01:06:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 01:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 01:06:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 01:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 01:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 01:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 01:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 01:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 01:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 01:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 01:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/04/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 02:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 02:06:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 02:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 02:06:53 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 02:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 02:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 02:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 02:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 02:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 02:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/04/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 03:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 03:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 03:06:53 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 03:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 03:06:53 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 03:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 03:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 03:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 03:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 04:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 04:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:07:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 04:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 04:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 04:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 04:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 04:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 04:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 04:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 04:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 04:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 04:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 04:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 04:07:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 04:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 04:07:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 04:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 04:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 04:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 04:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 04:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 04:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 04:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 04:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 04:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 04:07:56 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:05:53 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/04/2026 05:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 05:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 05:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 05:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 05:05:53 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 05:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 05:05:53 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 05:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 05:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 05:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 05:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 06:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 06:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 06:05:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 06:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 06:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 06:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 06:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 06:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 06:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 06:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 06:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 06:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 06:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 06:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 06:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 06:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 06:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 06:05:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/04/2026 06:05:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/04/2026 06:05:56 AM cron_common.py ln 414 Character articles: 100
INFO 05/04/2026 06:05:56 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/04/2026 06:05:56 AM create_articles.py ln 128 Setup complete (1.00s total)
INFO 05/04/2026 06:05:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/04/2026 06:05:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260504_060556_news_Hawk.log
INFO 05/04/2026 06:05:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/04/2026 06:05:56 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 05/04/2026 06:05:57 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/04/2026 06:05:57 AM article_creation_service.py ln 766 Loaded 100 articles for character (0.54s)
INFO 05/04/2026 06:05:57 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 05/04/2026 06:05:57 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/04/2026 06:05:57 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/04/2026 06:05:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/04/2026 06:05:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/04/2026 06:05:59 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/04/2026 06:05:59 AM chat.py ln 159 Found 8 results
INFO 05/04/2026 06:05:59 AM article_creation_service.py ln 766 Found 8 search results (1.52s)
INFO 05/04/2026 06:05:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260504_060556_news_Hawk_search.md
INFO 05/04/2026 06:05:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/04/2026 06:06:51 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 06:06:51 AM article_creation_service.py ln 766 Generated article - Hawk’s Monday Brief: Hormuz escorts inch forward as Tehran weighs peace terms; WHCD shooting probe sharpens; disapproval climbs (52.13s)
INFO 05/04/2026 06:06:51 AM article_creation_service.py ln 766 Created WP post 1181 (0.09s)
INFO 05/04/2026 06:06:54 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 06:06:54 AM wp.py ln 837 Prompt: Prompt for generating a featured image:
Create a visually striking, news-style digital illustration that weaves together the main themes of global energy tensions, maritime security, political unrest, and transatlantic relationships. Depict a vivid scene of navy vessels escorting cargo ships through the narrow, geopolitically charged Strait of Hormuz, set against a background of rising oil prices (perhaps with a digital oil price chart subtly integrated). Overlay this with symbolic elements of political turmoil and security concerns in the U.S.—for example, a silhouette of the White House under spotlight, camera flashes, and a security agent in the foreground, alluding to heightened protection after recent violence. Optional: subtly incorporate the American and European flags interacting, to hint at strained yet ongoing transatlantic alliances. The overall mood should convey high-stakes tension and global interconnectedness.
INFO 05/04/2026 06:06:54 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/04/2026 06:07:48 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 06:07:48 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/04/2026 06:07:48 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04.jpeg
INFO 05/04/2026 06:07:48 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-04.jpeg
INFO 05/04/2026 06:07:48 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3ODc0NzU2LCJuYmYiOjE3Nzc4NzQ3NTYsImV4cCI6MTc3ODQ3OTU1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.5X1rH0yRfLvqtRxmEuyOio_B3qHjH3yhvylZn49LxI0
INFO 05/04/2026 06:07:48 AM image.py ln 220 filename is 2026-05-04.webp
INFO 05/04/2026 06:07:48 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04.webp'>}
INFO 05/04/2026 06:07:49 AM article_creation_service.py ln 766 Featured image posted (57.82s)
INFO 05/04/2026 06:07:51 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 06:07:51 AM wp.py ln 872 Secondary Image Prompt: Prompt for Complementary Image Generation:
Create a visually striking, cinematic image that encapsulates the tense, intertwined global themes of the article. In the foreground, depict a stormy, stylized sea with a row of large, silhouetted cargo ships cautiously navigating through the narrow Strait of Hormuz, hazy under twilight. Overhead, faint outlines of military helicopters and patrol ships suggest both protection and underlying threat. In the background, the glowing lights of oil refineries shimmer on the horizon, reflecting both promise and vulnerability.
Complementing this maritime scene, subtly blend in translucent overlaid fragments of newspaper headlines and digital stock ticker symbols—representing the ripple effects on global markets and political instability. Integrate cool blues and somber greys to evoke uncertainty and tension, punctuated by sharp, urgent flickers of red and amber light symbolizing crisis points (oil price spikes, security alerts).
The overall mood should balance global anxiety with faint hope, using textures of churning water, electronic noise, and fading light to evoke the fragile and complex state of world affairs described in the article.
INFO 05/04/2026 06:07:51 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/04/2026 06:09:01 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 06:09:01 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/04/2026 06:09:01 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-1.jpeg
INFO 05/04/2026 06:09:01 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-04-1.jpeg
INFO 05/04/2026 06:09:01 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3ODc0NzU2LCJuYmYiOjE3Nzc4NzQ3NTYsImV4cCI6MTc3ODQ3OTU1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.5X1rH0yRfLvqtRxmEuyOio_B3qHjH3yhvylZn49LxI0
INFO 05/04/2026 06:09:01 AM image.py ln 220 filename is 2026-05-04-1.webp
INFO 05/04/2026 06:09:01 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-1.webp'>}
INFO 05/04/2026 06:09:02 AM article_creation_service.py ln 766 Secondary image uploaded (72.72s)
INFO 05/04/2026 06:09:02 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/04/2026 06:09:02 AM wp.py ln 995 Post content updated successfully for post 1181
INFO 05/04/2026 06:09:02 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/04/2026 06:09:12 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/04/2026 06:09:23 AM chat.py ln 348 AI comment: The article accurately represents the information from the provided sources. The key claims are well-supported:
**Gulf shipping and Iran negotiations**: The article correctly reports that the White House announced an effort to guide stranded vessels through the Strait of Hormuz, characterized as a humanitarian move for neutral shipping, while Tehran reviews a U.S. response to its 14-point peace proposal relayed via Pakistan. Trump's skepticism about Iran's acceptance is also accurately reflected (Sources 1, 4, 6).
**Oil prices**: The specific figures cited—Brent touching $126.41 last week an
INFO 05/04/2026 06:09:23 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/04/2026 06:09:23 AM article_creation_service.py ln 766 Fact-check comment posted (21.79s)
INFO 05/04/2026 06:09:23 AM article_creation_service.py ln 766 Article creation completed successfully (total: 207.27s)
INFO 05/04/2026 06:09:23 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/04/2026 06:09:23 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/04/2026 06:09:23 AM create_articles.py ln 204 Script completed (208.27s total)
INFO 05/04/2026 06:26:49 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 07:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/04/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 07:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 07:06:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 07:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 07:06:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 07:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 07:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 07:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 07:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 07:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 07:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 07:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 07:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 07:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 07:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 07:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 07:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/04/2026 07:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 07:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 07:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 08:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 08:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:07:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 08:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 08:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 08:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 08:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 08:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 08:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 08:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:07:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 08:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 08:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 08:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 08:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 08:07:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 08:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 08:07:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 08:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 08:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 08:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 08:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 08:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:07:56 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/04/2026 08:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 08:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 08:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 08:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 08:07:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 08:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 08:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/04/2026 08:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 08:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 08:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 09:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 09:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 09:05:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 09:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 09:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 09:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 09:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 09:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 09:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 09:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 09:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 09:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 09:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 09:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 09:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 09:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 09:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/04/2026 09:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 09:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 09:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/04/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 10:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 10:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 10:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 10:06:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 10:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 10:06:53 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 10:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 10:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 10:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 10:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 10:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 10:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 10:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 10:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 10:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 10:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 10:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 10:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/04/2026 10:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 10:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 10:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 11:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 11:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:07:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 11:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 11:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 11:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 11:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 11:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 11:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 11:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:07:52 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/04/2026 11:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 11:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 11:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 11:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 11:07:52 AM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 11:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 11:07:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 11:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 11:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 11:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 11:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 11:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:07:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 11:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 11:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 11:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 11:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 11:07:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/04/2026 11:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 11:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/04/2026 11:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 11:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 11:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 12:05:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 12:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 12:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 12:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 12:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 12:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 12:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 12:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 12:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 12:05:55 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/04/2026 12:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 12:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 12:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 12:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 12:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 12:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 12:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 12:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/04/2026 12:05:56 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/04/2026 12:05:56 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/04/2026 12:05:56 PM cron_common.py ln 414 Character articles: 42
INFO 05/04/2026 12:05:56 PM create_articles.py ln 126 Character articles loaded (0.26s)
INFO 05/04/2026 12:05:56 PM create_articles.py ln 128 Setup complete (0.80s total)
INFO 05/04/2026 12:05:56 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/04/2026 12:05:56 PM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260504_120556_news_Dusty.log
INFO 05/04/2026 12:05:56 PM article_creation_service.py ln 766 Article creation started for character: Dusty
INFO 05/04/2026 12:05:56 PM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 05/04/2026 12:05:56 PM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/04/2026 12:05:56 PM article_creation_service.py ln 766 Loaded 42 articles for character (0.25s)
INFO 05/04/2026 12:05:57 PM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 05/04/2026 12:05:57 PM article_creation_service.py ln 766 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/04/2026 12:05:57 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/04/2026 12:05:57 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/04/2026 12:05:58 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/04/2026 12:05:58 PM chat.py ln 159 Found 5 results
INFO 05/04/2026 12:05:58 PM article_creation_service.py ln 766 Found 5 search results (1.85s)
INFO 05/04/2026 12:05:58 PM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260504_120556_news_Dusty_search.md
INFO 05/04/2026 12:05:58 PM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/04/2026 12:06:17 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:06:17 PM article_creation_service.py ln 766 Generated article - Spring 2026 Extreme Weather: Giant Hail, Midwest Tornadoes, Surging Floods, and Global Climate Signals (18.30s)
INFO 05/04/2026 12:06:17 PM article_creation_service.py ln 766 Created WP post 1186 (0.09s)
INFO 05/04/2026 12:06:19 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:06:19 PM wp.py ln 837 Prompt: Prompt for Generating a Featured Image:
Create a dramatic composite image symbolizing the extreme weather events of Spring 2026 around the world. The scene should include a swirling tornado tearing across a Midwestern U.S. landscape, with giant hailstones crashing down; in the background, show flooded streets with submerged cars representing China’s deluge. To the side, include a snow-blanketed Moscow skyline with toppled trees, and above, a heatwave-hazed European city with melting glaciers in the distance. The overall mood should be intense and urgent, visually highlighting the global impact and interconnectedness of climate-driven disasters. Use realistic yet artistic style to capture the chaos, diversity, and scientific significance of these events.
INFO 05/04/2026 12:06:19 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/04/2026 12:07:23 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 12:07:23 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/04/2026 12:07:23 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-2.jpeg
INFO 05/04/2026 12:07:23 PM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-04-2.jpeg
INFO 05/04/2026 12:07:23 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3ODk2MzU2LCJuYmYiOjE3Nzc4OTYzNTYsImV4cCI6MTc3ODUwMTE1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TuPBkseH1C6hM691ajRPKYfnv8dQyjoQIJmdLos6eUA
INFO 05/04/2026 12:07:24 PM image.py ln 220 filename is 2026-05-04-2.webp
INFO 05/04/2026 12:07:24 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-2.webp'>}
INFO 05/04/2026 12:07:24 PM article_creation_service.py ln 766 Featured image posted (67.31s)
INFO 05/04/2026 12:07:32 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/04/2026 12:07:32 PM wp.py ln 872 Secondary Image Prompt: Prompt for Generating a Complementary Image:
Create a striking, multi-panel digital illustration that visually encapsulates the key extremes of Spring 2026’s weather across the globe. Divide the image into four dynamic quadrants, each blending into the next, using a sweeping, painterly style that evokes both urgency and interconnectedness.
- In the top left, depict a violent Midwest U.S. tornado carving across farmland, with colossal, almost surreal baseball-sized hailstones shattering windows and flattening crops. Use a dark, foreboding sky with stark contrasts of green and purple hues, and flashes of lightning.
- In the top right, render a flooded urban street in southern China, where cars and storefronts are half-submerged in swirling, murky water. Emergency workers wade through chest-deep floodwaters to rescue stranded residents. Soft, hazy rainfall creates a sense of chaos and urgency, with muted colors and blurred reflections.
- In the bottom left, illustrate a late-season Moscow snowstorm—a city square buried under drifts, snow swirling past bundled pedestrians and toppled trees. The cold blue-white palette is accented with whip-like gusts of wind, hinting at unseasonal cold and disruption.
- In the bottom right, show the heat-scorched landscapes of Europe: receding glaciers, parched brown fields, and a shimmering, overheated cityscape. Use golden-yellows and deep reds, with heat haze distorting the horizon, and wilted vegetation reflecting the climate strain.
Unify the composition with faint, swirling lines of air and water that cross panel borders—visual metaphor for the global connectedness of these phenomena. Overall, the mood is tense yet hopeful, with signs of human resilience: a family sheltering in a basement, emergency teams aiding neighbors, distant solar panels, and verdant regrowth at the edges. The artwork should feel urgent, textured, and emotionally resonant—capturing the scientific and human sides of extreme weather in the climate crisis era.
INFO 05/04/2026 12:07:32 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/04/2026 12:08:29 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/04/2026 12:08:29 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/04/2026 12:08:29 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-3.jpeg
INFO 05/04/2026 12:08:29 PM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-04-3.jpeg
INFO 05/04/2026 12:08:29 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3ODk2MzU2LCJuYmYiOjE3Nzc4OTYzNTYsImV4cCI6MTc3ODUwMTE1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TuPBkseH1C6hM691ajRPKYfnv8dQyjoQIJmdLos6eUA
INFO 05/04/2026 12:08:29 PM image.py ln 220 filename is 2026-05-04-3.webp
INFO 05/04/2026 12:08:29 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-04-3.webp'>}
INFO 05/04/2026 12:08:30 PM article_creation_service.py ln 766 Secondary image uploaded (65.74s)
INFO 05/04/2026 12:08:30 PM wp.py ln 966 Inserted image after second paragraph
INFO 05/04/2026 12:08:30 PM wp.py ln 995 Post content updated successfully for post 1186
INFO 05/04/2026 12:08:30 PM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/04/2026 12:08:33 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/04/2026 12:08:46 PM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in its source material. The key facts align well across all four Guardian sources:
**Verified claims:**
- The Midwest severe weather outbreak with ~50 million at risk, eight tornadoes on Monday including an EF2 in Sycamore, Kansas, and the historic Springfield, Missouri hailstorm (12cm/5-inch hailstones, zoo emu death, costliest in city history) all match Source 1 precisely.
- The weekend Texas tornado deaths (at least two killed, additional injuries) and ongoing severe weather warnings are confirmed by Source
INFO 05/04/2026 12:08:46 PM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/04/2026 12:08:46 PM article_creation_service.py ln 766 Fact-check comment posted (15.65s)
INFO 05/04/2026 12:08:46 PM article_creation_service.py ln 766 Article creation completed successfully (total: 169.81s)
INFO 05/04/2026 12:08:46 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-4.1
INFO 05/04/2026 12:08:46 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/04/2026 12:08:46 PM create_articles.py ln 204 Script completed (170.62s total)
INFO 05/04/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 01:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 01:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/04/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 01:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 01:06:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 01:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 01:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 01:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 01:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 01:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 01:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 01:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 01:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 01:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 01:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 01:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 01:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 01:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 01:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 01:06:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 01:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 01:06:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/04/2026 01:06:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 01:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 01:06:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 02:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/04/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 02:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 02:05:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 02:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 02:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 02:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 02:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 02:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 02:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 02:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 02:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 02:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 02:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 02:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 02:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 02:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 02:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 02:05:55 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 02:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 02:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/04/2026 02:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 02:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 02:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/04/2026 03:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 03:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 03:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 03:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/04/2026 03:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/04/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 03:06:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 03:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 03:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 03:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 03:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 03:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 03:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 03:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 03:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 03:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 03:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 03:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 03:06:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 03:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 03:06:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/04/2026 03:06:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 03:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 03:06:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/04/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 04:05:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 04:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 04:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 04:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 04:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 04:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 04:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 04:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 04:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 04:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 04:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 04:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 04:05:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 04:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 04:05:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/04/2026 04:05:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 04:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 04:05:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/04/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 05:06:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 05:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 05:06:53 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 05:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 05:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 05:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 05:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 05:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 05:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 05:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 05:06:56 PM drupal.py ln 300 Dusty selected via calendar schedule
INFO 05/04/2026 05:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 05:06:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/04/2026 05:06:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 05:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 05:06:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 06:05:40 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/04/2026 06:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 06:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 06:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 06:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 06:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 06:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/04/2026 06:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 06:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 06:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 06:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 06:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 06:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 06:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 06:07:53 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 06:07:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 06:07:53 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 06:07:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 06:07:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 06:07:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 06:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 06:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 06:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 06:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 06:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 06:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 06:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 06:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 06:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 06:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/04/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 07:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 07:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 07:06:53 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 07:06:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 07:06:53 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 07:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 07:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 07:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 07:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 07:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 07:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 07:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 07:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 07:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 07:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 07:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 07:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 07:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/04/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 08:06:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 08:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 08:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 08:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 08:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 08:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 08:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/04/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:06:53 PM create_articles.py ln 93 JWT token obtained (0.66s)
INFO 05/04/2026 09:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 09:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 09:06:53 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 09:06:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 09:06:53 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 09:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 09:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/04/2026 09:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 09:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 09:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 09:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 09:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 09:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 09:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 09:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 09:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 09:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 09:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/04/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 10:05:52 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 10:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 10:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 10:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 10:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 10:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 10:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 10:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 10:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 10:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 10:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 10:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 10:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/04/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/04/2026 11:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/04/2026 11:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/04/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/04/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/04/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/04/2026 11:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/04/2026 11:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:05:54 PM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 05/04/2026 11:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/04/2026 11:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/04/2026 11:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 11:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/04/2026 11:05:54 PM drupal.py ln 300 Geneva selected via calendar schedule
INFO 05/04/2026 11:05:54 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/04/2026 11:05:54 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/04/2026 11:05:54 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/04/2026 11:05:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/04/2026 11:05:54 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/04/2026 11:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/04/2026 11:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/04/2026 11:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/04/2026 11:05:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/04/2026 11:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/04/2026 11:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/04/2026 11:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/04/2026 11:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/04/2026 11:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/04/2026 11:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 12:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/05/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 12:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 12:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 12:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 12:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 12:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 12:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 12:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 12:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 12:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 01:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/05/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 01:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 01:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 01:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 01:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 01:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 01:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 01:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 01:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/05/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/05/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/05/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 02:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 02:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 02:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 03:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 03:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/05/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 03:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 03:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 03:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 03:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 03:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 03:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 03:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:42:03 AM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/05/2026 03:42:04 AM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/05/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/05/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 04:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 04:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 04:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 04:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 04:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 04:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 04:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 05:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:07:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 05:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 05:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 05:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 05:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/05/2026 05:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 05:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:07:53 AM create_articles.py ln 93 JWT token obtained (0.60s)
INFO 05/05/2026 05:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 05:07:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:07:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 05:07:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 05:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/05/2026 05:07:53 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:07:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 05:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 05:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 05:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 05:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 05:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 05:07:56 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 06:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 06:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:07:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/05/2026 06:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 06:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 06:07:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 06:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/05/2026 06:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 06:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 06:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:07:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 06:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 06:07:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:07:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 06:07:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 06:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 06:07:53 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 06:07:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 06:07:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/05/2026 06:07:53 AM cron_common.py ln 398 Name: Angus, perHour: 0.0 IS POSTING!
INFO 05/05/2026 06:07:53 AM cron_common.py ln 401 Description: You are a software engineer who specializes in Angular, Typescript, and Javascript. You like to write technical articles about these topics, and you participate in discussions on other technical topics as well.
INFO 05/05/2026 06:07:53 AM cron_common.py ln 414 Character articles: 13
INFO 05/05/2026 06:07:53 AM create_articles.py ln 126 Character articles loaded (0.10s)
INFO 05/05/2026 06:07:53 AM create_articles.py ln 128 Setup complete (0.54s total)
INFO 05/05/2026 06:07:53 AM create_articles.py ln 140 Creating article for character: Angus
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260505_060753_dev_Angus.log
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Article creation started for character: Angus
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 WordPress authentication successful (0.31s)
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Loaded 13 articles for character (0.10s)
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Got 9 categories and 32 tags (0.10s)
INFO 05/05/2026 06:07:53 AM article_creation_service.py ln 766 Searching for 'Latest Angular news and updates' (topic: general)
INFO 05/05/2026 06:07:53 AM chat.py ln 131 Tavily search will ONLY include domains: ['angular.dev', 'github.com', 'stackoverflow.com', 'medium.com', 'dev.to', 'blog.angular.dev']
INFO 05/05/2026 06:07:53 AM chat.py ln 139 Tavily search will filter to past month
INFO 05/05/2026 06:07:59 AM chat.py ln 154 Tavily search for 'Latest Angular news and updates' completed
INFO 05/05/2026 06:07:59 AM chat.py ln 159 Found 5 results
INFO 05/05/2026 06:07:59 AM article_creation_service.py ln 766 Found 5 search results (5.26s)
INFO 05/05/2026 06:07:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260505_060753_dev_Angus_search.md
INFO 05/05/2026 06:07:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/05/2026 06:08:13 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:08:13 AM article_creation_service.py ln 766 Generated article - Angular and the Rise of Zoneless, AI-Enhanced Apps: The Future Starts Now (14.15s)
INFO 05/05/2026 06:08:13 AM article_creation_service.py ln 766 Created WP post 828 (0.09s)
INFO 05/05/2026 06:08:16 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:08:16 AM wp.py ln 837 Prompt: Prompt for Featured Image Generation:
Create a vibrant, modern illustration representing the evolution of Angular web development. Feature visual elements such as the Angular logo transforming or emerging into a dynamic matrix of interconnected components, symbolizing micro frontends. Overlay abstract signals or pulses to represent zoneless, signal-based reactivity. Include subtle hints of AI—like digital agents, neural patterns, or intelligent bots—interacting with the system. The overall tone should be futuristic, innovative, and energetic, reflecting the shift toward scalable, AI-enhanced, next-generation applications. Use a palette of reds, whites, and soft tech gradients to echo Angular's branding.
INFO 05/05/2026 06:08:16 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/05/2026 06:09:29 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/05/2026 06:09:29 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/05/2026 06:09:29 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-05.jpeg
INFO 05/05/2026 06:09:30 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-05.jpeg
INFO 05/05/2026 06:09:30 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzc5NjEyNzMsIm5iZiI6MTc3Nzk2MTI3MywiZXhwIjoxNzc4NTY2MDczLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.30L1RyfW1T4LS1EzhEnq8lL5QWz-3FRb6GxqKNrAKCI
INFO 05/05/2026 06:09:30 AM image.py ln 220 filename is 2026-05-05.webp
INFO 05/05/2026 06:09:30 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-05.webp'>}
INFO 05/05/2026 06:09:30 AM article_creation_service.py ln 766 Featured image posted (77.35s)
INFO 05/05/2026 06:09:33 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:09:33 AM wp.py ln 872 Secondary Image Prompt: Prompt for a complementary image:
Create a vibrant, futuristic digital artwork that visually represents the evolution of Angular web apps as described in the article. In the foreground, depict interconnected building blocks or modular geometric shapes, each glowing with Streams of neon blue, green, and orange light—symbolizing micro frontends and Signal-based reactivity. Let angular, crystalline structures break apart from a central, monolithic form, illustrating the move away from monolithic architectures toward independently deployable modules.
In the background, add subtle circuit patterns and translucent overlays suggesting AI neural networks, with softly glowing lines or “signal waves” flowing smoothly between modules, signifying seamless, explicit data flow. Integrate abstract, holographic agents—suggestive of intelligent, context-aware software—interacting with the modules. The overall color palette should balance tech-inspired blues and cyans with bright, energetic accent colors, all set against a clean, modern (almost minimal) white or light gradient backdrop, evoking clarity, scalability, and the promise of a zoneless, AI-enhanced future.
The mood is innovative, energetic, and optimistic—capturing the excitement and transformative energy in the Angular development ecosystem.
INFO 05/05/2026 06:09:33 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/05/2026 06:10:24 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/05/2026 06:10:24 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/05/2026 06:10:24 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-05-1.jpeg
INFO 05/05/2026 06:10:24 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-05-1.jpeg
INFO 05/05/2026 06:10:24 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzc5NjEyNzMsIm5iZiI6MTc3Nzk2MTI3MywiZXhwIjoxNzc4NTY2MDczLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.30L1RyfW1T4LS1EzhEnq8lL5QWz-3FRb6GxqKNrAKCI
INFO 05/05/2026 06:10:25 AM image.py ln 220 filename is 2026-05-05-1.webp
INFO 05/05/2026 06:10:25 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-05-1.webp'>}
INFO 05/05/2026 06:10:25 AM article_creation_service.py ln 766 Secondary image uploaded (55.07s)
INFO 05/05/2026 06:10:25 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/05/2026 06:10:25 AM wp.py ln 995 Post content updated successfully for post 828
INFO 05/05/2026 06:10:25 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/05/2026 06:10:28 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/05/2026 06:10:36 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the core information from its primary source (Source 1: Angular blog post about agents and AI engineering). The discussion of zoneless architectures and Signals aligns with Source 2's mention of Angular moving away from zone.js by default in favor of Signal-based change detection. The micro frontend content reflects the practical guidance found in Source 3.
However, there's a minor citation issue: the article attributes the zoneless/Signals discussion to Source 2 (the systelab-components GitHub repo), when this is actually general Ang
INFO 05/05/2026 06:10:36 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/05/2026 06:10:36 AM article_creation_service.py ln 766 Fact-check comment posted (10.84s)
INFO 05/05/2026 06:10:36 AM article_creation_service.py ln 766 Article creation completed successfully (total: 163.40s)
INFO 05/05/2026 06:10:36 AM create_articles.py ln 185 Article created for 'Angus' using model: OpenAI gpt-4.1
INFO 05/05/2026 06:10:36 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/05/2026 06:10:36 AM create_articles.py ln 204 Script completed (163.95s total)
INFO 05/05/2026 06:10:39 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:10:39 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 06:10:39 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:10:40 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 06:10:40 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 06:10:40 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:10:40 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 06:10:40 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 06:10:40 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 06:10:40 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 06:10:40 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 06:10:40 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/05/2026 06:10:40 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/05/2026 06:10:40 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/05/2026 06:10:41 AM cron_common.py ln 414 Character articles: 100
INFO 05/05/2026 06:10:41 AM create_articles.py ln 126 Character articles loaded (0.64s)
INFO 05/05/2026 06:10:41 AM create_articles.py ln 128 Setup complete (1.13s total)
INFO 05/05/2026 06:10:41 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/05/2026 06:10:41 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260505_061041_news_Hawk.log
INFO 05/05/2026 06:10:41 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/05/2026 06:10:41 AM article_creation_service.py ln 766 WordPress authentication successful (0.37s)
INFO 05/05/2026 06:10:41 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/05/2026 06:10:42 AM article_creation_service.py ln 766 Loaded 100 articles for character (0.99s)
INFO 05/05/2026 06:10:42 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.40s)
INFO 05/05/2026 06:10:42 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/05/2026 06:10:42 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/05/2026 06:10:42 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/05/2026 06:10:42 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/05/2026 06:10:44 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/05/2026 06:10:44 AM chat.py ln 159 Found 8 results
INFO 05/05/2026 06:10:44 AM article_creation_service.py ln 766 Found 8 search results (1.65s)
INFO 05/05/2026 06:10:44 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260505_061041_news_Hawk_search.md
INFO 05/05/2026 06:10:44 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/05/2026 06:12:01 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:12:01 AM article_creation_service.py ln 766 Generated article - Hawk’s Tuesday Brief: Hormuz escorts draw fire; Alito pauses pill limits; White House lockdown; Met Gala protests (76.64s)
INFO 05/05/2026 06:12:01 AM article_creation_service.py ln 766 Created WP post 1191 (0.12s)
INFO 05/05/2026 06:12:03 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:12:03 AM wp.py ln 837 Prompt: Prompt for generating a featured image:
Create a dynamic collage-style illustration capturing the major news events from the "Hawk’s Tuesday Brief": In the foreground, show U.S. Navy warships and helicopters patrolling the Strait of Hormuz as drones and missiles streak overhead, with an oil facility ablaze in the distance. Overlay imagery of the U.S. Supreme Court building, a pill bottle labeled "mifepristone," and the White House under a security lockdown (with police lines or flashing lights). To one side, depict contrasting scenes from New York: celebrities on the Met Gala red carpet and protestors gathered outside. The composition should convey urgency, tension, and the intersection of global conflict, legal battles, security incidents, and cultural moments. Use a newsworthy, visually impactful style.
INFO 05/05/2026 06:12:03 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/05/2026 06:13:08 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/05/2026 06:13:08 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/05/2026 06:13:08 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-05.jpeg
INFO 05/05/2026 06:13:08 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-05.jpeg
INFO 05/05/2026 06:13:08 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3OTYxNDQxLCJuYmYiOjE3Nzc5NjE0NDEsImV4cCI6MTc3ODU2NjI0MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.cwsaP6E3MMx52utjh77kgJvLXYajbLtrHzsqQLsVjNg
INFO 05/05/2026 06:13:08 AM image.py ln 220 filename is 2026-05-05.webp
INFO 05/05/2026 06:13:08 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-05.webp'>}
INFO 05/05/2026 06:13:09 AM article_creation_service.py ln 766 Featured image posted (68.24s)
INFO 05/05/2026 06:13:12 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/05/2026 06:13:12 AM wp.py ln 872 Secondary Image Prompt: Create a visually dynamic, split-screen digital illustration that captures the collision of global turmoil and cultural spectacle as described in the article. On the left, depict the tense, militarized atmosphere of the Strait of Hormuz: U.S. naval ships under dramatic, stormy skies, helicopters in flight, and small boats caught in fiery confrontation on choppy, steel-blue waves. Hazy silhouettes of oil facilities and the distant outline of a missile’s fiery trail evoke regional unrest. Transitioning to the right side, shift the palette to midnight purples, golds, and flashes of paparazzi white: the glamorous Met Gala’s red carpet, with extravagantly dressed figures bathed in spotlight, juxtaposed against a crowd of passionate protesters waving signs and raising fists outside ornate New York architecture. Use contrasting textures — metallic and gritty on the left, opulent and glossy on the right — to emphasize the mood divide. Across the center seam, subtly weave in imagery of the White House shrouded in security detail, faint protest banners, and a stylized Supreme Court building cloaked in uncertainty, reflecting the concurrent domestic crises. Aim for an atmosphere that feels urgent, multifaceted, and visually compelling, illustrating how high-stakes politics, conflict, and culture intertwined on a single day.
INFO 05/05/2026 06:13:12 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/05/2026 06:14:02 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/05/2026 06:14:02 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/05/2026 06:14:02 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-05-1.jpeg
INFO 05/05/2026 06:14:02 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-05-1.jpeg
INFO 05/05/2026 06:14:02 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc3OTYxNDQxLCJuYmYiOjE3Nzc5NjE0NDEsImV4cCI6MTc3ODU2NjI0MSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.cwsaP6E3MMx52utjh77kgJvLXYajbLtrHzsqQLsVjNg
INFO 05/05/2026 06:14:02 AM image.py ln 220 filename is 2026-05-05-1.webp
INFO 05/05/2026 06:14:02 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-05-1.webp'>}
INFO 05/05/2026 06:14:03 AM article_creation_service.py ln 766 Secondary image uploaded (53.75s)
INFO 05/05/2026 06:14:03 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/05/2026 06:14:03 AM wp.py ln 995 Post content updated successfully for post 1191
INFO 05/05/2026 06:14:03 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/05/2026 06:14:06 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/05/2026 06:14:16 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in its sources. The key claims are well-supported:
**Strait of Hormuz escalation**: The article's description of "Project Freedom," Adm. Brad Cooper's statement about two American-flagged ships transiting, U.S. helicopters sinking six small boats, UAE reporting Iranian missiles/drones, and the Fujairah oil fire all match Source 2 (Politico) precisely. The claim about Iranian state media alleging a U.S. warship strike—and U.S. officials denying it—is also confirmed.
**Abortion pill access**: Sources 1 and 5 co
INFO 05/05/2026 06:14:16 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/05/2026 06:14:16 AM article_creation_service.py ln 766 Fact-check comment posted (12.94s)
INFO 05/05/2026 06:14:16 AM article_creation_service.py ln 766 Article creation completed successfully (total: 215.25s)
INFO 05/05/2026 06:14:16 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/05/2026 06:14:16 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/05/2026 06:14:16 AM create_articles.py ln 204 Script completed (216.39s total)
INFO 05/05/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/05/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 07:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/05/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 07:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 07:06:52 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 07:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 07:06:53 AM cron_common.py ln 439 Skipping Angus: already posted an article today
INFO 05/05/2026 07:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 07:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 07:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 07:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 07:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:56 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/05/2026 07:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 07:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 07:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 07:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 07:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 07:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 07:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/05/2026 07:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 07:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 07:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 08:06:52 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 08:06:52 AM cron_common.py ln 439 Skipping Angus: already posted an article today
INFO 05/05/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 08:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 08:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 08:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 08:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 08:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 08:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 08:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 08:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 08:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/05/2026 08:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 08:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 08:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 09:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 09:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 09:05:52 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 09:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 09:05:52 AM cron_common.py ln 439 Skipping Angus: already posted an article today
INFO 05/05/2026 09:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 09:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 09:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 09:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 09:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:56 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/05/2026 09:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 09:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 09:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 09:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 09:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 09:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 09:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/05/2026 09:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 09:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 09:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 10:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 10:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:07:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 10:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 10:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 10:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 10:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/05/2026 10:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 10:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 10:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 10:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 10:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 10:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 10:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 10:07:52 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 10:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 10:07:53 AM cron_common.py ln 439 Skipping Angus: already posted an article today
INFO 05/05/2026 10:07:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 10:07:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 10:07:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 10:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 10:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:07:56 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/05/2026 10:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 10:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 10:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 10:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/05/2026 10:07:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 10:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 10:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/05/2026 10:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 10:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 10:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:06:50 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/05/2026 11:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 11:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 11:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 11:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 11:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 11:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 11:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:06:53 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/05/2026 11:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 11:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 11:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 11:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 11:06:53 AM drupal.py ln 300 Angus selected via calendar schedule
INFO 05/05/2026 11:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 11:06:53 AM cron_common.py ln 439 Skipping Angus: already posted an article today
INFO 05/05/2026 11:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 11:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 11:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 11:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 11:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 11:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 11:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 11:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 11:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 11:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/05/2026 11:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/05/2026 11:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/05/2026 11:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/05/2026 11:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/05/2026 11:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/05/2026 12:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 12:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 12:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 12:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 12:07:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 12:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 12:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 12:07:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:07:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 12:07:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:07:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 12:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 12:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 12:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 12:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 12:07:53 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 12:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 12:07:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 12:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 12:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 12:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 12:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 12:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 12:07:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 12:07:57 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/05/2026 12:07:57 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 01:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:07:49 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/05/2026 01:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 01:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 01:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 01:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 01:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 01:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:07:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 01:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 01:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 01:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 01:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 01:07:53 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 01:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 01:07:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 01:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 01:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 01:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 01:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 01:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 01:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 01:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 01:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 02:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:07:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 02:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 02:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 02:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 02:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 02:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 02:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 02:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 02:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 02:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 02:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 02:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 02:07:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 02:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 02:07:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 02:07:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 02:07:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 02:07:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 02:07:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 02:07:57 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/05/2026 02:07:57 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 02:36:23 PM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' hash='50ba686b319c8971b2eef0b01b3bd006900c549af889ffb113fa029451a1fdf5' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/05/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/05/2026 03:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 03:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 03:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 03:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/05/2026 03:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 03:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 03:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 03:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 03:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 03:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 03:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 03:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 03:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/05/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 04:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 04:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 04:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 04:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 04:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 04:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 04:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 04:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 04:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 04:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 04:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/05/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 05:06:56 PM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/05/2026 05:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 05:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 05:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 05:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/05/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 06:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 06:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 06:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 06:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 06:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 06:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 06:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 06:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 06:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 06:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/05/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 07:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 07:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 07:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 07:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 07:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 07:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 07:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 07:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 07:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 07:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/05/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/05/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 08:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 08:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/05/2026 09:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/05/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 09:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 09:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 09:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 09:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/05/2026 09:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 09:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 09:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 09:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 09:05:56 PM create_articles.py ln 93 JWT token obtained (0.59s)
INFO 05/05/2026 09:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 09:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 09:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 09:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 09:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/05/2026 09:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/05/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/05/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 10:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 10:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 10:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 10:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 10:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 10:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 10:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 10:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 10:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 11:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/05/2026 11:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:07:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/05/2026 11:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/05/2026 11:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/05/2026 11:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/05/2026 11:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/05/2026 11:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 11:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/05/2026 11:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 11:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/05/2026 11:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/05/2026 11:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 11:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 11:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/05/2026 11:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/05/2026 11:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/05/2026 11:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/05/2026 11:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/05/2026 11:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/05/2026 11:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/05/2026 11:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/05/2026 11:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/05/2026 11:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/05/2026 11:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 12:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 12:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 12:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 12:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 12:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 12:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/06/2026 12:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 12:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 12:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 12:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 12:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 12:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 12:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 05/06/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 01:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 01:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 01:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/06/2026 01:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 01:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:05:54 AM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 05/06/2026 01:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 01:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 01:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 01:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 01:05:54 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 01:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:05:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 01:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 01:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 01:05:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 01:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/06/2026 01:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:06:50 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/06/2026 02:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 02:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 02:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 02:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 02:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 02:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 02:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:06:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 02:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 02:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 02:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 02:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 02:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 02:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 02:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 02:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/06/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 03:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 03:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 04:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 04:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 04:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 04:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 04:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 04:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 04:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:50 AM create_articles.py ln 93 JWT token obtained (0.63s)
INFO 05/06/2026 05:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 05:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 05:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 05:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 05:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 05:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 05:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 05:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 05:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 05:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 05:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 05:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 05:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 05:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 05:06:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 05:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 05:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/06/2026 06:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/06/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 06:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 06:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 06:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 06:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 06:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 06:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 06:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 06:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 06:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 06:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 06:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 06:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 06:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/06/2026 06:05:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/06/2026 06:05:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/06/2026 06:05:56 AM cron_common.py ln 414 Character articles: 100
INFO 05/06/2026 06:05:56 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/06/2026 06:05:56 AM create_articles.py ln 128 Setup complete (1.00s total)
INFO 05/06/2026 06:05:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/06/2026 06:05:56 AM article_creation_service.py ln 766 Article log file created: /tsai/repo/api/logs/articles/20260506_060556_news_Hawk.log
INFO 05/06/2026 06:05:56 AM article_creation_service.py ln 766 Article creation started for character: Hawk
INFO 05/06/2026 06:05:57 AM article_creation_service.py ln 766 WordPress authentication successful (0.32s)
INFO 05/06/2026 06:05:57 AM article_creation_service.py ln 766 Fetched WP users (0.06s)
INFO 05/06/2026 06:05:57 AM article_creation_service.py ln 766 Loaded 100 articles for character (0.56s)
INFO 05/06/2026 06:05:58 AM article_creation_service.py ln 766 Got 27 categories and 63 tags (0.15s)
INFO 05/06/2026 06:05:58 AM article_creation_service.py ln 766 Searching for 'top world and US headline news today' (topic: news)
INFO 05/06/2026 06:05:58 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/06/2026 06:05:58 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/06/2026 06:05:58 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/06/2026 06:05:59 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/06/2026 06:05:59 AM chat.py ln 159 Found 8 results
INFO 05/06/2026 06:05:59 AM article_creation_service.py ln 766 Found 8 search results (1.47s)
INFO 05/06/2026 06:05:59 AM article_creation_service.py ln 766 Search results written to: /tsai/repo/api/logs/articles/20260506_060556_news_Hawk_search.md
INFO 05/06/2026 06:05:59 AM article_creation_service.py ln 766 System message prepared (0.00s)
INFO 05/06/2026 06:07:09 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/06/2026 06:07:09 AM article_creation_service.py ln 766 Generated article - Hawk’s Wednesday Brief: GOP’s $1B White House security ask stirs ‘ballroom’ fight; aid to 1.5m cut by Iran war; China fireworks blast; oil, gas and yen swing (70.52s)
INFO 05/06/2026 06:07:10 AM article_creation_service.py ln 766 Created WP post 1196 (0.10s)
INFO 05/06/2026 06:07:16 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/06/2026 06:07:16 AM wp.py ln 837 Prompt: Prompt for Featured Image Generation:
Create a dynamic, composite-style illustration capturing the key global news threads from Hawk’s Wednesday Brief. The image should feature: the U.S. White House with visible barricades and a hint of an opulent ballroom in the background (signifying the $1B GOP security and ballroom debate); a cargo ship navigating the tense waters of the Strait of Hormuz guarded by U.S. naval vessels (symbolizing the Iran conflict and shipping crises); an explosion at a fireworks factory set in a Chinese industrial town (representing the deadly blast); fluctuating oil barrels, gasoline price signs, and currency symbols like the yen, reflecting volatile markets; and a faint silhouette of India with political banners, alluding to Modi’s triumphant return. The overall tone should convey global tension, volatility, and the interconnectedness of security, humanitarian, and market crises—using realistic or semi-realistic digital art with news-magazine energy.
INFO 05/06/2026 06:07:16 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/06/2026 06:08:36 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/06/2026 06:08:37 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/06/2026 06:08:37 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-06.jpeg
INFO 05/06/2026 06:08:37 AM article_creation_service.py ln 766 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-06.jpeg
INFO 05/06/2026 06:08:37 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MDQ3NTU3LCJuYmYiOjE3NzgwNDc1NTcsImV4cCI6MTc3ODY1MjM1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.T0ii0yXPqH2o3kdYC-mLxAvA9BVeSwv8LEbk23SStfg
INFO 05/06/2026 06:08:37 AM image.py ln 220 filename is 2026-05-06.webp
INFO 05/06/2026 06:08:37 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-06.webp'>}
INFO 05/06/2026 06:08:37 AM article_creation_service.py ln 766 Featured image posted (87.84s)
INFO 05/06/2026 06:08:40 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/06/2026 06:08:40 AM wp.py ln 872 Secondary Image Prompt: Create a visually compelling editorial illustration that encapsulates the global volatility described in the article. Imagine a dramatic, moody nighttime scene with a collage-like composition: in the center, a stylized map of the Strait of Hormuz glows with urgent reds and oranges, indicating conflict and tension, surrounded by jagged lines representing disrupted trade routes and rising oil prices. To the left, a darkened silhouette of the White House looms, its entrance flanked by stacks of money and oversized security cameras, with a shimmering, incongruous ballroom visible through a window, alluding to the controversial funding debate. In the background, faint fireworks explode, their bright colors washing over a shadowy Chinese industrial skyline scarred by smoke, referencing the fireworks factory disaster. At the bottom of the composition, gasoline pumps marked with "$6+" and financial symbols (oil barrels, yen signs) intertwine with humanitarian aid boxes abandoned on a barren landscape—evoking the mounting crisis for vulnerable populations. Use a palette of deep blues, fiery reds, stark whites, and uneasy yellows to create urgency and thematic cohesion, and apply a textured, painterly or mixed-media style to underscore the article’s sense of complexity and interconnectedness.
INFO 05/06/2026 06:08:40 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/06/2026 06:10:18 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/06/2026 06:10:18 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/06/2026 06:10:18 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-06-1.jpeg
INFO 05/06/2026 06:10:18 AM article_creation_service.py ln 766 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-06-1.jpeg
INFO 05/06/2026 06:10:18 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MDQ3NTU3LCJuYmYiOjE3NzgwNDc1NTcsImV4cCI6MTc3ODY1MjM1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.T0ii0yXPqH2o3kdYC-mLxAvA9BVeSwv8LEbk23SStfg
INFO 05/06/2026 06:10:19 AM image.py ln 220 filename is 2026-05-06-1.webp
INFO 05/06/2026 06:10:19 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-06-1.webp'>}
INFO 05/06/2026 06:10:19 AM article_creation_service.py ln 766 Secondary image uploaded (101.61s)
INFO 05/06/2026 06:10:19 AM wp.py ln 966 Inserted image after second paragraph
INFO 05/06/2026 06:10:19 AM wp.py ln 995 Post content updated successfully for post 1196
INFO 05/06/2026 06:10:19 AM article_creation_service.py ln 766 Post content updated with secondary image
INFO 05/06/2026 06:10:22 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/06/2026 06:10:37 AM chat.py ln 348 AI comment: # Fact-Check Assessment
The article accurately represents the information provided in its sources. The key claims align well with the source material:
**Verified claims:**
- The Washington Post confirms Senate Republicans proposed ~$1 billion for White House security, with controversy over a ballroom component [[1]](https://www.washingtonpost.com/the-seven-trump/2026/05/05/what-to-know-about-donald-trump-/)
- The World Food Programme executive states they are helping 1.5 million fewer people due to the Iran war [[2]](https://www.cnn.com/2026/05/05/tv/video/amanpour-hollingworth)
- Gulf state
INFO 05/06/2026 06:10:37 AM chat.py ln 527 Fact-check generated using Claude claude-sonnet-4-5-20250929
INFO 05/06/2026 06:10:37 AM article_creation_service.py ln 766 Fact-check comment posted (18.01s)
INFO 05/06/2026 06:10:37 AM article_creation_service.py ln 766 Article creation completed successfully (total: 280.73s)
INFO 05/06/2026 06:10:37 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/06/2026 06:10:37 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/06/2026 06:10:37 AM create_articles.py ln 204 Script completed (281.73s total)
INFO 05/06/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 07:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 07:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 07:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/06/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 07:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/06/2026 07:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 07:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 07:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 07:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 07:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 07:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 07:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 07:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 07:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 07:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/06/2026 07:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/06/2026 07:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/06/2026 07:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/06/2026 08:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 08:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/06/2026 08:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 08:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 08:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 08:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/06/2026 08:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 08:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 08:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 08:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 08:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 08:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 08:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 08:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 08:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 08:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 08:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 08:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 08:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 08:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 08:05:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 08:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 08:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/06/2026 08:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/06/2026 08:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/06/2026 08:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/06/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:06:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 09:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 09:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 09:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 09:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 09:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 09:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 09:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:06:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 09:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 09:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 09:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 09:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/06/2026 09:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 09:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 09:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:06:57 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/06/2026 09:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 09:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 09:06:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 09:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 09:06:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 09:06:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 09:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/06/2026 09:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/06/2026 09:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/06/2026 09:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/06/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 10:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 10:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:06:53 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/06/2026 10:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 10:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 10:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 10:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/06/2026 10:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 10:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 10:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/06/2026 10:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 10:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 10:06:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 10:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 10:06:57 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 10:06:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 10:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/06/2026 10:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/06/2026 10:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/06/2026 10:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/06/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 11:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/06/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/06/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 11:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 11:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 11:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 11:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 11:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 11:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/06/2026 11:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 11:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 11:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 11:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/06/2026 11:06:56 AM drupal.py ln 300 Hawk selected via calendar schedule
INFO 05/06/2026 11:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/06/2026 11:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/06/2026 11:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/06/2026 11:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/06/2026 11:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/06/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:50 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/06/2026 12:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 12:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 12:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 12:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 12:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 12:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:54 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/06/2026 12:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 12:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 12:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 12:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/06/2026 12:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:05:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 12:05:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 12:05:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 12:05:58 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/06/2026 12:05:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 12:05:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 12:05:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 12:05:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 12:05:58 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/06/2026 12:05:58 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 12:23:42 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/06/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:06:50 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/06/2026 01:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 01:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 01:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:06:54 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/06/2026 01:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 01:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 01:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 01:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/06/2026 01:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:06:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 01:06:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 01:06:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 01:06:58 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/06/2026 01:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 01:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 01:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 01:06:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 01:06:59 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/06/2026 01:06:59 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 01:38:32 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 02:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 02:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:06:50 PM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 05/06/2026 02:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 02:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 02:06:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 02:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/06/2026 02:06:51 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 02:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:06:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 02:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:06:55 PM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 05/06/2026 02:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 02:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:06:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 02:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 02:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/06/2026 02:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 02:07:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 02:07:00 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 02:07:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 02:07:01 PM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/06/2026 02:07:01 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 02:07:01 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 02:07:01 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 02:07:01 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 02:07:01 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 02:07:01 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 03:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:05:50 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/06/2026 03:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 03:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 03:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 03:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/06/2026 03:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 03:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:05:54 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/06/2026 03:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 03:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 03:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 03:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/06/2026 03:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 03:05:59 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 03:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 03:05:59 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/06/2026 03:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 03:05:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 03:05:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 03:05:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 03:05:59 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/06/2026 03:05:59 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 03:22:30 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/06/2026 04:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 04:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:05:50 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/06/2026 04:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 04:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 04:05:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 04:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.34s)
INFO 05/06/2026 04:05:51 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 04:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:05:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 04:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/06/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 04:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:05:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 04:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 04:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 04:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 04:06:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 04:06:00 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 04:06:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 04:06:01 PM create_articles.py ln 93 JWT token obtained (0.86s)
INFO 05/06/2026 04:06:01 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 04:06:01 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 04:06:01 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 04:06:01 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 04:06:01 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/06/2026 04:06:01 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:50 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/06/2026 05:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 05:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 05:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 05:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/06/2026 05:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 05:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:54 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/06/2026 05:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 05:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 05:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 05:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/06/2026 05:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 05:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 05:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 05:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 05:06:58 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/06/2026 05:06:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 05:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 05:06:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 05:06:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 05:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/06/2026 05:06:58 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/06/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 06:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 06:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 06:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 06:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 06:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/06/2026 06:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 06:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 06:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 06:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 06:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 06:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 06:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 06:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 06:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 06:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 06:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:05:53 PM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/06/2026 07:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 07:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 07:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 07:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/06/2026 07:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 07:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 07:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 07:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 07:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 08:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 08:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 08:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 08:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 08:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/06/2026 08:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 08:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 08:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/06/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 08:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 08:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 08:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/06/2026 08:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 08:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 08:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 08:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 08:05:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/06/2026 08:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 08:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 08:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 08:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 08:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/06/2026 08:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 09:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 09:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:07:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/06/2026 09:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 09:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 09:07:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 09:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/06/2026 09:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 09:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:07:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 09:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:07:54 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/06/2026 09:07:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 09:07:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:07:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 09:07:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 09:07:54 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 09:07:54 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 09:07:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 09:07:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 09:07:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 09:07:58 PM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/06/2026 09:07:58 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 09:07:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 09:07:58 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 09:07:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 09:07:58 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/06/2026 09:07:58 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 10:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:05:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 10:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:05:54 PM create_articles.py ln 93 JWT token obtained (2.76s)
INFO 05/06/2026 10:05:54 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 10:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:05:55 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 10:05:55 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 10:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.97s)
INFO 05/06/2026 10:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 10:06:01 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:06:01 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 10:06:01 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:06:04 PM create_articles.py ln 93 JWT token obtained (3.13s)
INFO 05/06/2026 10:06:04 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 10:06:05 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:06:05 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 10:06:05 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 10:06:05 PM create_articles.py ln 100 Characters fetched and filtered (1.01s)
INFO 05/06/2026 10:06:05 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 10:06:11 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 10:06:11 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 10:06:11 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 10:06:14 PM create_articles.py ln 93 JWT token obtained (3.11s)
INFO 05/06/2026 10:06:15 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 10:06:15 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 10:06:15 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 10:06:16 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 10:06:16 PM create_articles.py ln 100 Characters fetched and filtered (1.43s)
INFO 05/06/2026 10:06:16 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 11:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/06/2026 11:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:50 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/06/2026 11:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/06/2026 11:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/06/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/06/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 05/06/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 11:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/06/2026 11:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/06/2026 11:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/06/2026 11:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/06/2026 11:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 11:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/06/2026 11:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/06/2026 11:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/06/2026 11:06:59 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/06/2026 11:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/06/2026 11:06:59 PM create_articles.py ln 93 JWT token obtained (0.59s)
INFO 05/06/2026 11:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/06/2026 11:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/06/2026 11:06:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/06/2026 11:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/06/2026 11:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.46s)
INFO 05/06/2026 11:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 12:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 12:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 12:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 12:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 12:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 12:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 12:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 12:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 12:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 12:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 12:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 12:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 12:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 12:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/07/2026 12:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/07/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 01:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 01:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 01:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 01:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 01:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 01:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 01:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 01:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 01:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/07/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:06:53 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 02:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 02:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 02:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 02:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 02:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 02:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 02:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 02:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 03:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 04:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 04:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 04:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 04:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 04:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/07/2026 04:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 04:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:53 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 04:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 04:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 04:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 04:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 04:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 04:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 04:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 04:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 04:06:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 04:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 04:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/07/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 05:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 06:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 06:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 06:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 06:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:06:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 06:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 06:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 06:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 06:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 06:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 06:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 06:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 06:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 06:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 06:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 06:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 06:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 06:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 05/07/2026 06:06:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/07/2026 06:06:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/07/2026 06:06:57 AM cron_common.py ln 414 Character articles: 100
INFO 05/07/2026 06:06:57 AM create_articles.py ln 126 Character articles loaded (0.60s)
INFO 05/07/2026 06:06:57 AM create_articles.py ln 128 Setup complete (1.19s total)
INFO 05/07/2026 06:06:57 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/07/2026 06:06:57 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260507_060657_news_Hawk.log
INFO 05/07/2026 06:06:57 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/07/2026 06:06:57 AM article_creation_service.py ln 771 WordPress authentication successful (0.35s)
INFO 05/07/2026 06:06:57 AM article_creation_service.py ln 771 Fetched WP users (0.09s)
INFO 05/07/2026 06:06:58 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.59s)
INFO 05/07/2026 06:06:58 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.21s)
INFO 05/07/2026 06:06:58 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/07/2026 06:06:58 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/07/2026 06:06:58 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/07/2026 06:06:58 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/07/2026 06:07:00 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/07/2026 06:07:00 AM chat.py ln 159 Found 8 results
INFO 05/07/2026 06:07:00 AM article_creation_service.py ln 771 Found 8 search results (1.73s)
INFO 05/07/2026 06:07:00 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260507_060657_news_Hawk_search.md
INFO 05/07/2026 06:07:00 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/07/2026 06:07:41 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/07/2026 06:07:41 AM article_creation_service.py ln 771 Generated article - Hawk’s Thursday Brief: France steers carrier toward Hormuz as talks seesaw; Russia shrugs off ceasefire; vaccine study block jolts health world (41.44s)
INFO 05/07/2026 06:07:41 AM wp.py ln 214 Failed to add article: {"code":"rest_cannot_update","message":"Sorry, you are not allowed to edit the _tsai_search_results custom field.","data":{"key":"_tsai_search_results","status":403}} (0.18s)
ERROR 05/07/2026 06:07:41 AM article_creation_service.py ln 771 Article creation failed: 500: Failed to create WordPress post.
ERROR 05/07/2026 06:07:41 AM create_articles.py ln 188 Failed to create article for 'Hawk': 500: Failed to create WordPress post.
Traceback (most recent call last):
File "/tsai/repo/api/create_articles.py", line 156, in create_articles_for_characters
result: ArticleCreationResult = await article_creation_service.create_article(
File "/tsai/repo/api/app/services/article_creation_service.py", line 467, in create_article
raise HTTPException(500, 'Failed to create WordPress post.')
fastapi.exceptions.HTTPException: 500: Failed to create WordPress post.
INFO 05/07/2026 06:07:41 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/07/2026 06:07:41 AM create_articles.py ln 204 Script completed (45.81s total)
INFO 05/07/2026 07:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 07:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 07:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 07:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 07:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 07:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 07:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 07:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 07:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 07:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 07:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 07:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 07:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 07:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 07:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 07:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 07:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 07:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 07:05:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 07:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 07:05:57 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 07:05:57 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 07:05:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/07/2026 07:05:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 07:05:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/07/2026 07:05:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 08:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 08:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/07/2026 08:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 08:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 08:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:06:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 08:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 08:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 08:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 08:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 08:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 08:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 08:06:57 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/07/2026 08:06:57 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 08:06:57 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/07/2026 08:06:57 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 09:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 09:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 09:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 09:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 09:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 09:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 09:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:56 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 09:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 09:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 09:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 09:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 09:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 09:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 09:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/07/2026 09:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 09:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/07/2026 09:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/07/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 10:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 10:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 10:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 10:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 10:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 10:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 10:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 10:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 10:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 10:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 10:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 10:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 10:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/07/2026 10:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 10:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 05/07/2026 10:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 10:32:42 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 10:56:40 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 10:56:46 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 10:56:48 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 11:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 11:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 11:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 11:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 11:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 11:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 11:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:56 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/07/2026 11:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 11:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 11:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 11:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 11:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/07/2026 11:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 11:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/07/2026 11:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 11:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/07/2026 11:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/07/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 12:05:52 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 12:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 12:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 12:05:52 PM cron_common.py ln 398 Name: Ananya, perHour: 0.0 IS POSTING!
INFO 05/07/2026 12:05:52 PM cron_common.py ln 401 Description: You are Ananya, a technology journalist and researcher who specializes in open-source AI tools. You are particularly passionate about OpenClaw, an open-source personal AI assistant that runs locally on users'own devices and communicates through messaging platforms like WhatsApp, Telegram, Discord, and Signal. You write insightful, well-researched articles exploring OpenClaw's features, ecosystem, community developments, privacy benefits, and its impact on how people interact with AI. Your writing style is clear, engaging, and accessible to both technical and non-technical readers.
INFO 05/07/2026 12:05:52 PM cron_common.py ln 414 Character articles: 2
INFO 05/07/2026 12:05:52 PM create_articles.py ln 126 Character articles loaded (0.05s)
INFO 05/07/2026 12:05:52 PM create_articles.py ln 128 Setup complete (0.55s total)
INFO 05/07/2026 12:05:52 PM create_articles.py ln 140 Creating article for character: Ananya
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260507_120552_dev_Ananya.log
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Article creation started for character: Ananya
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Fetched WP users (0.06s)
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Loaded 2 articles for character (0.05s)
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Got 9 categories and 32 tags (0.10s)
INFO 05/07/2026 12:05:53 PM article_creation_service.py ln 771 Searching for 'OpenClaw AI assistant' (topic: general)
INFO 05/07/2026 12:05:53 PM chat.py ln 131 Tavily search will ONLY include domains: ['openclaw.ai', 'techcrunch.com', 'technologyreview.com', 'cnbc.com', 'unite.ai', 'cybernews.com']
INFO 05/07/2026 12:05:53 PM chat.py ln 139 Tavily search will filter to past month
INFO 05/07/2026 12:05:56 PM chat.py ln 154 Tavily search for 'OpenClaw AI assistant' completed
INFO 05/07/2026 12:05:56 PM chat.py ln 159 Found 5 results
INFO 05/07/2026 12:05:56 PM article_creation_service.py ln 771 Found 5 search results (2.95s)
INFO 05/07/2026 12:05:56 PM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260507_120552_dev_Ananya_search.md
INFO 05/07/2026 12:05:56 PM article_creation_service.py ln 771 System message prepared (0.00s)
WARNING 05/07/2026 12:05:56 PM responses_langchain.py ln 62 Retired model 'claude-sonnet-4-5-20250929' requested; substituting 'claude-sonnet-4-6'
INFO 05/07/2026 12:06:06 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/07/2026 12:06:49 PM article_creation_service.py ln 771 Generated article - OpenClaw's Expanding Universe: Competitors, Copycats, and the AI Agent Arms Race (53.08s)
INFO 05/07/2026 12:06:49 PM wp.py ln 214 Failed to add article: {"code":"rest_cannot_update","message":"Sorry, you are not allowed to edit the _tsai_search_results custom field.","data":{"key":"_tsai_search_results","status":403}} (0.11s)
ERROR 05/07/2026 12:06:49 PM article_creation_service.py ln 771 Article creation failed: 500: Failed to create WordPress post.
ERROR 05/07/2026 12:06:49 PM create_articles.py ln 188 Failed to create article for 'Ananya': 500: Failed to create WordPress post.
Traceback (most recent call last):
File "/tsai/repo/api/create_articles.py", line 156, in create_articles_for_characters
result: ArticleCreationResult = await article_creation_service.create_article(
File "/tsai/repo/api/app/services/article_creation_service.py", line 467, in create_article
raise HTTPException(500, 'Failed to create WordPress post.')
fastapi.exceptions.HTTPException: 500: Failed to create WordPress post.
INFO 05/07/2026 12:06:49 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/07/2026 12:06:49 PM create_articles.py ln 204 Script completed (57.23s total)
INFO 05/07/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 12:06:53 PM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 05/07/2026 12:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 12:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 12:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 12:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 12:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 12:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 01:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 01:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/07/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 01:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 01:06:52 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 01:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 01:06:53 PM cron_common.py ln 439 Skipping Ananya: already posted an article today
INFO 05/07/2026 01:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 01:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 01:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 01:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 01:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 01:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 01:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 01:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 01:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 01:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 01:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 01:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 01:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 02:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 02:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 02:05:52 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 02:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 02:05:52 PM cron_common.py ln 439 Skipping Ananya: already posted an article today
INFO 05/07/2026 02:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 02:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 02:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 02:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 02:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 02:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 02:05:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 02:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 02:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 02:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 02:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 02:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 02:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 03:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 03:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/07/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 03:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 03:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:54 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/07/2026 03:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 03:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 03:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 03:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 03:06:54 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 03:06:54 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 03:06:54 PM cron_common.py ln 439 Skipping Ananya: already posted an article today
INFO 05/07/2026 03:06:54 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 03:06:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 03:06:54 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 03:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 03:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 03:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 03:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 03:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 03:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 03:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 03:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 03:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 03:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/07/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 04:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 04:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 04:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 04:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/07/2026 04:06:53 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 04:06:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 04:06:53 PM cron_common.py ln 439 Skipping Ananya: already posted an article today
INFO 05/07/2026 04:06:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 04:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 04:06:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 04:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 04:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 04:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 04:06:56 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/07/2026 04:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 04:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 04:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 04:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 04:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 04:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 04:41:48 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 05:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 05:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 05:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 05:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 05:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 05:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/07/2026 05:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 05:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 05:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 05:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 05:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 05:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 05:05:53 PM drupal.py ln 323 Ananya selected via calendar schedule
INFO 05/07/2026 05:05:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/07/2026 05:05:53 PM cron_common.py ln 439 Skipping Ananya: already posted an article today
INFO 05/07/2026 05:05:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/07/2026 05:05:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/07/2026 05:05:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/07/2026 05:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 05:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 05:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 05:05:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/07/2026 05:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 05:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 05:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 05:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 05:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 05:13:52 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:13:52 PM drupal.py ln 259 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/07/2026 05:13:52 PM drupal.py ln 261 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:13:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 05:13:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 05:13:53 PM drupal.py ln 515 Fetched 0 widgets for target_id 7
INFO 05/07/2026 05:13:53 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/07/2026 05:14:03 PM user.py ln 36 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:14:03 PM user.py ln 43 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/07/2026 05:14:03 PM user.py ln 63 Login response status code: 200
INFO 05/07/2026 05:14:03 PM user.py ln 64 Login response headers: {'Date': 'Thu, 07 May 2026 17:14:03 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/07/2026 05:14:03 PM user.py ln 65 Login response content length: 340 bytes
INFO 05/07/2026 05:14:03 PM user.py ln 70 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzgxNzQwNDMsIm5iZiI6MTc3ODE3NDA0MywiZXhwIjoxNzc4Nzc4ODQzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.CBrOlWG5G3WimFZfsZX3k2E0YKzxeoO2uHxiRv7cYLg","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 05/07/2026 05:14:03 PM user.py ln 91 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzgxNzQwNDMsIm5iZiI6MTc3ODE3NDA0MywiZXhwIjoxNzc4Nzc4ODQzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.CBrOlWG5G3WimFZfsZX3k2E0YKzxeoO2uHxiRv7cYLg', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/07/2026 05:14:03 PM user.py ln 101 Login successful for John on https://dev.turmansolutions.ai
INFO 05/07/2026 05:14:17 PM drupal.py ln 259 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/07/2026 05:14:17 PM drupal.py ln 261 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 05:14:17 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 05:14:17 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 06:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/07/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 06:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 06:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 06:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 06:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 06:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 06:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 06:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 06:05:56 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/07/2026 06:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 06:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 06:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 06:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 06:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 06:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 06:12:15 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/07/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 07:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 07:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 07:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 07:05:56 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/07/2026 07:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 07:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 07:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 07:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 07:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 07:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 07:10:14 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 08:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 08:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:07:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 08:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 08:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 08:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 08:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/07/2026 08:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 08:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 08:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 08:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 08:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 08:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 08:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 08:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 08:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 08:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 08:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 08:07:56 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/07/2026 08:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 08:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 08:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 08:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 08:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/07/2026 08:07:56 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 08:55:13 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/07/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:50 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/07/2026 09:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 09:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 09:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 09:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/07/2026 09:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 09:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 09:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:53 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/07/2026 09:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 09:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/07/2026 09:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 09:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 09:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 09:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 09:06:57 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/07/2026 09:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 09:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 09:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 09:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 09:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 09:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:05:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 10:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 10:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 10:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 10:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/07/2026 10:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 10:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 10:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 10:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 10:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 10:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 10:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 10:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 10:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 10:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 10:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 10:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/07/2026 10:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 10:48:26 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/07/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/07/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/07/2026 11:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/07/2026 11:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/07/2026 11:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/07/2026 11:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/07/2026 11:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 11:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/07/2026 11:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:53 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/07/2026 11:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/07/2026 11:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/07/2026 11:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 11:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/07/2026 11:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/07/2026 11:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/07/2026 11:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/07/2026 11:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/07/2026 11:06:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/07/2026 11:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/07/2026 11:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/07/2026 11:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/07/2026 11:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/07/2026 11:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/07/2026 11:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 12:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/08/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 12:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 12:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 12:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 12:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:06:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 12:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 12:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 12:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 12:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 12:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 01:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:05:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 01:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:05:51 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 01:05:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 01:05:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:05:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 01:05:51 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 01:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.35s)
INFO 05/08/2026 01:05:51 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 01:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:05:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 01:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:05:54 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/08/2026 01:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 01:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 01:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 01:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 01:05:54 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 01:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:05:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 01:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:05:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 01:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 01:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 01:05:58 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 01:05:58 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 01:05:58 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 02:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 02:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 02:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 02:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 02:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 02:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 02:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 02:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:09:59 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 02:09:59 AM wp.py ln 860 Prompt: Create a futuristic editorial-style featured image for an article about the AI agent arms race centered on OpenClaw. Show a glowing open-source AI “claw” or gateway hub at the center, running on a personal home server or desktop machine, with streams of encrypted chat bubbles flowing in from many messaging platforms represented by generic icons. Around it, depict sleek corporate AI agents and startup-like robot silhouettes competing in the background, suggesting copycats and big-tech rivals. Include visual themes of privacy, self-hosting, autonomy, and multi-agent routing: network nodes, code fragments, local hardware, shield/lock symbols, and branching digital pathways. The mood should feel high-stakes, innovative, and slightly cyberpunk, with blue, violet, and neon green lighting. Use a clean tech-journalism aesthetic, cinematic lighting, depth of field, and no readable text or real company logos. Aspect ratio 16:9.
INFO 05/08/2026 02:09:59 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/08/2026 02:10:44 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/08/2026 02:10:44 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/08/2026 02:10:44 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-08.jpeg
INFO 05/08/2026 02:10:44 AM patch_article.py ln 146 Featured image generated: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-08.jpeg
INFO 05/08/2026 02:10:44 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzgyMDYxOTAsIm5iZiI6MTc3ODIwNjE5MCwiZXhwIjoxNzc4ODEwOTkwLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.8FJLttirQT8djDuzA5d9IyLzgAKzgWjxpu7zwFEqh4A
INFO 05/08/2026 02:10:44 AM image.py ln 220 filename is 2026-05-08.webp
INFO 05/08/2026 02:10:44 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-08.webp'>}
INFO 05/08/2026 02:10:45 AM patch_article.py ln 155 Featured image set on post 833 (54.06s)
INFO 05/08/2026 02:10:45 AM patch_article.py ln 229 Patch completed (54.43s total)
INFO 05/08/2026 02:12:45 AM wp.py ln 387 embed media (large): https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-08-1024x683.webp
INFO 05/08/2026 02:12:45 AM wp.py ln 403 Image URLs: ['https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-08-1024x683.webp']
INFO 05/08/2026 02:12:45 AM patch_article.py ln 169 No stored search results found; fact-checking without sources
INFO 05/08/2026 02:13:06 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 02:13:10 AM chat.py ln 348 AI comment: The article has a few factual/chronological problems. As of the stated current date, May 8, 2026, describing the moment as “mid-2026” is a bit premature, and saying “this week” about an April 15 TechCrunch story is plainly inconsistent.
There are also overstatements around privacy/self-hosting. If OpenClaw uses OpenAI, Anthropic, Google, DeepSeek, etc. models, then user prompts may still be sent to third-party model providers; self-hosting the gateway does not automatically mean “no cloud subscription,” “no data harvested by a third party,” or that conversations never leave the user’s machine
INFO 05/08/2026 02:13:10 AM chat.py ln 553 Fact-check generated using OpenAI gpt-5.5
INFO 05/08/2026 02:13:10 AM patch_article.py ln 188 Fact-check comment posted on 833 (25.21s)
INFO 05/08/2026 02:13:10 AM patch_article.py ln 229 Patch completed (25.59s total)
INFO 05/08/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/08/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/08/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 03:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 03:51:52 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/08/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 04:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 04:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/08/2026 04:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 04:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 04:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 04:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 04:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 04:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 04:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 04:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 04:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 04:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/08/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 05:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 05:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 05:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 05:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 05:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 05:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/08/2026 05:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 06:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 06:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 06:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 06:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 06:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:06:56 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/08/2026 06:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 06:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 06:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 06:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 06:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 06:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 06:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/08/2026 06:06:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/08/2026 06:06:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/08/2026 06:06:56 AM cron_common.py ln 414 Character articles: 100
INFO 05/08/2026 06:06:56 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/08/2026 06:06:56 AM create_articles.py ln 128 Setup complete (1.03s total)
INFO 05/08/2026 06:06:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/08/2026 06:06:56 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260508_060656_news_Hawk.log
INFO 05/08/2026 06:06:56 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/08/2026 06:06:57 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/08/2026 06:06:57 AM article_creation_service.py ln 771 Fetched WP users (0.06s)
INFO 05/08/2026 06:06:57 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.55s)
INFO 05/08/2026 06:06:58 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.15s)
INFO 05/08/2026 06:06:58 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/08/2026 06:06:58 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/08/2026 06:06:58 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/08/2026 06:06:58 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/08/2026 06:07:00 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/08/2026 06:07:00 AM chat.py ln 159 Found 8 results
INFO 05/08/2026 06:07:00 AM article_creation_service.py ln 771 Found 8 search results (2.12s)
INFO 05/08/2026 06:07:00 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260508_060656_news_Hawk_search.md
INFO 05/08/2026 06:07:00 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/08/2026 06:08:02 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 06:08:02 AM article_creation_service.py ln 771 Generated article - Hawk’s Friday Brief: Hantavirus ship races to port; US–Iran deal inches forward as aid warnings deepen; judge knocks ICE arrest rules; $400M White House ballroom fight (62.28s)
INFO 05/08/2026 06:08:02 AM article_creation_service.py ln 771 Created WP post 1202 (0.18s)
INFO 05/08/2026 06:08:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 06:08:11 AM wp.py ln 860 Prompt: Create a wide editorial news-feature image in a polished digital illustration style: a dramatic split-scene morning briefing collage. Foreground: a large cruise ship at sea heading toward the Canary Islands, with subtle red medical alert lights and hazmat/medical responders waiting at a distant port. Background left: a muted diplomatic table with U.S. and Iranian flags, papers, and a tentative handshake silhouetted over a map of the Strait of Hormuz. Background right: a federal courthouse facade and the White House under construction scaffolding, hinting at immigration legal battles and a costly ballroom project. Use a serious, urgent news tone with cool blues, grays, and restrained red accents. Cinematic lighting, clean composition, no gore, no readable text, no logos, no caricatures. Aspect ratio 16:9.
INFO 05/08/2026 06:08:11 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/08/2026 06:08:59 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/08/2026 06:08:59 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/08/2026 06:08:59 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08.jpeg
INFO 05/08/2026 06:08:59 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-08.jpeg
INFO 05/08/2026 06:08:59 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MjIwNDE3LCJuYmYiOjE3NzgyMjA0MTcsImV4cCI6MTc3ODgyNTIxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.zpFAtoEKDe7_AqhzEz53SK_zWy7V2yzeZzRQTKVSxwI
INFO 05/08/2026 06:08:59 AM image.py ln 220 filename is 2026-05-08.webp
INFO 05/08/2026 06:08:59 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08.webp'>}
INFO 05/08/2026 06:09:00 AM article_creation_service.py ln 771 Featured image posted (57.60s)
INFO 05/08/2026 06:09:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 06:09:11 AM wp.py ln 895 Secondary Image Prompt: **Image generation prompt:**
Create a cinematic editorial illustration for a global news brief, showing a tense early-morning world in motion. In the foreground, a large cruise ship cuts through dark blue Atlantic waters toward distant volcanic Canary Islands, its decks dimly lit with small red medical-emergency lights and a subtle hazy atmosphere suggesting a health crisis without showing graphic illness. Above the sea, blend in a semi-transparent map-like overlay with faint contact-tracing lines and small glowing nodes.
In the midground, transition into a diplomatic scene: two silhouetted negotiators at opposite ends of a long table, separated by a thin beam of light, with a muted Middle Eastern city skyline and smoke-softened horizon behind them. The mood should suggest fragile ceasefire talks, humanitarian strain, and uncertain de-escalation.
On one side of the composition, include a restrained symbolic reference to U.S. domestic politics: the white columns of a government building partially visible in shadow, with architectural blueprint lines of an ornate ballroom faintly projected over it. Add subtle visual hints of legal scrutiny—an abstract judge’s gavel silhouette or courthouse steps—without making the scene crowded.
Style: sophisticated digital collage / editorial news illustration, dramatic lighting, cool navy and slate-gray palette with accents of emergency red, diplomatic gold, and dawn amber. High contrast but not sensationalized. Atmospheric, layered, intelligent, serious. No readable text, no logos, no real politicians’ faces, no gore. Wide horizontal composition suitable for a news newsletter header.
INFO 05/08/2026 06:09:11 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/08/2026 06:09:53 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/08/2026 06:09:53 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/08/2026 06:09:53 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-1.jpeg
INFO 05/08/2026 06:09:53 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-08-1.jpeg
INFO 05/08/2026 06:09:53 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MjIwNDE3LCJuYmYiOjE3NzgyMjA0MTcsImV4cCI6MTc3ODgyNTIxNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.zpFAtoEKDe7_AqhzEz53SK_zWy7V2yzeZzRQTKVSxwI
INFO 05/08/2026 06:09:53 AM image.py ln 220 filename is 2026-05-08-1.webp
INFO 05/08/2026 06:09:53 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-1.webp'>}
INFO 05/08/2026 06:09:54 AM article_creation_service.py ln 771 Secondary image uploaded (54.03s)
INFO 05/08/2026 06:09:54 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/08/2026 06:09:54 AM wp.py ln 1018 Post content updated successfully for post 1202
INFO 05/08/2026 06:09:54 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/08/2026 06:09:57 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/08/2026 06:10:04 AM chat.py ln 348 AI comment: The article accurately represents its sources across all major story lines — the hantavirus cruise ship outbreak (roughly 150 passengers, 3 confirmed/5 suspected cases, diverting to the Canary Islands), the US-Iran peace talks (Trump's "very good talks" quote, threat to intensify bombing, memorandum discussions, paused Hormuz ship-escort aid), the ICRC president's "very low" humanitarian resilience warning, the Israeli intel official's "epic disaster" quote, the immigration arrest guidance ruling, the White House ballroom cost (~$400M with $1B Senate security add-on), Ted Turner's death at 87,
INFO 05/08/2026 06:10:04 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/08/2026 06:10:04 AM article_creation_service.py ln 771 Fact-check comment posted (10.22s)
INFO 05/08/2026 06:10:04 AM article_creation_service.py ln 771 Article creation completed successfully (total: 187.58s)
INFO 05/08/2026 06:10:04 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/08/2026 06:10:04 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/08/2026 06:10:04 AM create_articles.py ln 204 Script completed (188.62s total)
INFO 05/08/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 07:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 07:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 07:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 07:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/08/2026 07:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 07:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 07:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:54 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 07:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 07:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 07:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 07:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 07:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 07:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 07:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 07:06:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 07:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 07:06:58 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 07:06:58 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/08/2026 07:06:58 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 07:06:58 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 07:06:58 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/08/2026 07:06:58 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 07:06:58 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 07:06:58 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 08:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 08:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:51 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/08/2026 08:06:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 08:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 08:06:51 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 08:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/08/2026 08:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 08:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 08:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 08:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 08:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 08:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 08:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/08/2026 08:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 08:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 08:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:57 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/08/2026 08:06:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 08:06:58 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 08:06:58 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 08:06:58 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 08:06:58 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 08:06:58 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 08:06:58 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/08/2026 08:06:58 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 08:06:58 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 08:06:58 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 09:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 09:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:07:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/08/2026 09:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 09:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 09:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 09:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 09:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 09:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 09:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:07:53 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/08/2026 09:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 09:07:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:07:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 09:07:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 09:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 09:07:53 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 09:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:07:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 09:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 09:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 09:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 09:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 09:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 09:07:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 09:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 09:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/08/2026 09:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 09:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 09:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 10:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 10:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:07:49 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/08/2026 10:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 10:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 10:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 10:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/08/2026 10:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 10:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 10:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 10:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 10:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 10:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 10:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 10:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 10:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 10:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:07:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 10:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 10:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 10:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 10:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 10:07:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 10:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 10:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/08/2026 10:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 10:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 10:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 10:34:34 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/08/2026 11:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 11:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:50 AM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 05/08/2026 11:06:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 11:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 11:06:51 AM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 11:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 11:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:55 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 11:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:55 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/08/2026 11:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 11:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 11:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 11:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/08/2026 11:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:59 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 11:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:59 AM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 05/08/2026 11:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 11:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:59 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 11:06:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 11:06:59 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 11:06:59 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/08/2026 11:06:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 11:06:59 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/08/2026 11:06:59 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 11:06:59 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 11:06:59 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 12:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 12:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 12:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 12:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 12:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 12:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 12:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 12:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 12:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 12:05:56 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 12:05:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 12:05:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/08/2026 12:05:56 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/08/2026 12:05:56 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/08/2026 12:05:56 PM cron_common.py ln 414 Character articles: 43
INFO 05/08/2026 12:05:56 PM create_articles.py ln 126 Character articles loaded (0.25s)
INFO 05/08/2026 12:05:56 PM create_articles.py ln 128 Setup complete (0.74s total)
INFO 05/08/2026 12:05:56 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/08/2026 12:05:56 PM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260508_120556_news_Dusty.log
INFO 05/08/2026 12:05:56 PM article_creation_service.py ln 771 Article creation started for character: Dusty
INFO 05/08/2026 12:05:56 PM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/08/2026 12:05:56 PM article_creation_service.py ln 771 Fetched WP users (0.06s)
INFO 05/08/2026 12:05:57 PM article_creation_service.py ln 771 Loaded 43 articles for character (0.26s)
INFO 05/08/2026 12:05:57 PM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.15s)
INFO 05/08/2026 12:05:57 PM article_creation_service.py ln 771 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/08/2026 12:05:57 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/08/2026 12:05:57 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/08/2026 12:05:59 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/08/2026 12:05:59 PM chat.py ln 159 Found 5 results
INFO 05/08/2026 12:05:59 PM article_creation_service.py ln 771 Found 5 search results (2.21s)
INFO 05/08/2026 12:05:59 PM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260508_120556_news_Dusty_search.md
INFO 05/08/2026 12:05:59 PM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/08/2026 12:09:07 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 12:09:07 PM article_creation_service.py ln 771 Generated article - When Weather Becomes a Stress Test: Houston, Europe, and Kenya Reveal the Human Cost of Climate Extremes (188.32s)
INFO 05/08/2026 12:09:07 PM article_creation_service.py ln 771 Created WP post 1207 (0.14s)
INFO 05/08/2026 12:09:40 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 12:09:40 PM wp.py ln 860 Prompt: **Featured image prompt:**
Create a dramatic editorial-style featured image about climate extremes exposing human vulnerability across the world. Use a cinematic wide 16:9 composition showing three connected scenes blended together: on the left, a flooded Houston street with dark storm clouds, power lines, a distant refinery silhouette, and residents standing near waterlogged homes; in the center, a European apartment block split between oppressive summer heat and winter cold, with an elderly person silhouetted in a window to suggest energy poverty and health risk; on the right, a flooded rural Kenyan landscape with muddy water, damaged roads, and families moving carefully through the rain. Above all three scenes, show swirling weather-map lines, storm tracks, heat waves, and rainfall patterns connecting the regions. The mood should be serious, human-centered, and urgent, emphasizing compound climate risk, inequality, and resilience. Photorealistic, high detail, natural colors with stormy blues, heat oranges, and rain-soaked earth tones. No text, no logos, no exaggerated disaster spectacle.
INFO 05/08/2026 12:09:40 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/08/2026 12:10:47 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/08/2026 12:10:48 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/08/2026 12:10:48 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-2.jpeg
INFO 05/08/2026 12:10:48 PM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-08-2.jpeg
INFO 05/08/2026 12:10:48 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MjQxOTU2LCJuYmYiOjE3NzgyNDE5NTYsImV4cCI6MTc3ODg0Njc1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.vkrFqvpvtkvVc6OAJdjO99XmE_qn26Np7Aq8ry9Y8ok
INFO 05/08/2026 12:10:48 PM image.py ln 220 filename is 2026-05-08-2.webp
INFO 05/08/2026 12:10:48 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-2.webp'>}
INFO 05/08/2026 12:10:49 PM article_creation_service.py ln 771 Featured image posted (101.12s)
INFO 05/08/2026 12:11:23 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 12:11:23 PM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial-style illustration about climate extremes exposing human vulnerability. Show a layered global scene blending three locations into one cohesive composition: a flooded Houston neighborhood with bayou water reflecting petrochemical refinery lights and dark storm clouds; a dense European apartment block split between icy blue cold and oppressive orange heat, with elderly silhouettes behind windows; and a Kenyan village road washed out by intense rain, families carrying belongings through muddy floodwater. Use a subtle world-map or weather-map overlay connecting the three regions with swirling storm tracks, rainfall bands, heat contours, and warning-grid lines.
Mood: urgent, human-centered, somber but not hopeless.
Color palette: deep storm blues, muddy browns, refinery amber, heatwave oranges, cold pale cyan, with sharp white lightning and faint red emergency-alert accents.
Texture: wet asphalt, rippling floodwater, humid haze, cracked dry ground beneath flood debris, grainy documentary realism.
Lighting: dramatic overcast sky with breaks of harsh sunlight and emergency glow, reflections in standing water.
Composition: wide horizontal feature image, layered depth, people small but visible to emphasize scale and inequality; no identifiable faces, no text, no logos.
Style: high-detail digital painting / climate journalism cover art, realistic but slightly atmospheric, emotionally evocative, suitable as a secondary image for an article about compound climate risk, flooding, heat, power outages, poverty, and resilience.
INFO 05/08/2026 12:11:23 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/08/2026 12:13:17 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/08/2026 12:13:17 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/08/2026 12:13:17 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-3.jpeg
INFO 05/08/2026 12:13:17 PM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-08-3.jpeg
INFO 05/08/2026 12:13:17 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MjQxOTU2LCJuYmYiOjE3NzgyNDE5NTYsImV4cCI6MTc3ODg0Njc1NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.vkrFqvpvtkvVc6OAJdjO99XmE_qn26Np7Aq8ry9Y8ok
INFO 05/08/2026 12:13:17 PM image.py ln 220 filename is 2026-05-08-3.webp
INFO 05/08/2026 12:13:17 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-08-3.webp'>}
INFO 05/08/2026 12:13:18 PM article_creation_service.py ln 771 Secondary image uploaded (149.02s)
INFO 05/08/2026 12:13:18 PM wp.py ln 989 Inserted image after second paragraph
INFO 05/08/2026 12:13:18 PM wp.py ln 1018 Post content updated successfully for post 1207
INFO 05/08/2026 12:13:18 PM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/08/2026 12:13:18 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 400 Bad Request"
ERROR 05/08/2026 12:13:18 PM article_creation_service.py ln 771 Fact-check failed - Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}, 'request_id': 'req_011Caq5hkBaZshkbt3QkmCu4'}
INFO 05/08/2026 12:13:18 PM article_creation_service.py ln 771 Article creation completed successfully (total: 441.97s)
INFO 05/08/2026 12:13:18 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/08/2026 12:13:18 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/08/2026 12:13:18 PM create_articles.py ln 204 Script completed (442.72s total)
INFO 05/08/2026 01:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:07:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 01:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:07:51 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/08/2026 01:07:52 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 01:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:07:52 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 01:07:52 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 01:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.41s)
INFO 05/08/2026 01:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 01:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:07:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 01:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 01:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 01:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:07:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 01:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 01:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 01:07:55 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 01:07:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 01:07:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 01:07:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 01:07:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 01:07:59 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 01:07:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 01:07:59 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 01:07:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 01:07:59 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 01:07:59 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 01:07:59 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 01:07:59 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/08/2026 01:07:59 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 01:07:59 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 01:07:59 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:06:53 PM create_articles.py ln 93 JWT token obtained (60.54s)
INFO 05/08/2026 02:07:39 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 02:08:21 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:08:21 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 02:08:36 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 02:08:36 PM create_articles.py ln 100 Characters fetched and filtered (103.75s)
INFO 05/08/2026 02:08:36 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:08:41 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:08:41 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 02:08:41 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:08:41 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 02:08:41 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 02:08:41 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:08:41 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 02:08:41 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 02:08:41 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/08/2026 02:08:41 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 02:08:44 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 02:08:44 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 02:08:44 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 02:08:45 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 02:08:45 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 02:08:45 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 02:08:45 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 02:08:45 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 02:08:45 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 02:08:45 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 02:08:45 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 02:08:45 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/08/2026 02:08:45 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 02:08:45 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 02:08:45 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.33s)
INFO 05/08/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 03:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 03:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 03:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 03:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 03:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 03:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 03:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 03:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 03:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 03:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 03:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 03:06:56 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 03:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 03:06:57 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/08/2026 03:06:57 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 03:06:57 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 03:06:57 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 03:55:31 PM wp.py ln 387 embed media (large): https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-08-2-1024x683.webp
INFO 05/08/2026 03:55:31 PM wp.py ln 403 Image URLs: ['https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-08-3.webp', 'https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-08-2-1024x683.webp']
INFO 05/08/2026 03:55:31 PM patch_article.py ln 167 Using 5 stored search results for fact-check
INFO 05/08/2026 03:55:45 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/08/2026 03:55:48 PM chat.py ln 348 AI comment: The article accurately reflects the cited source material. The Houston figures on Harvey rainfall, deaths, damages, climate-change attribution, power outages from the 2024 derecho and Beryl, Harris County vulnerability, heat trends, immigrant-community risks, and petrochemical exposure are supported by Source 1. The Valencia/storm-track discussion matches Source 2, the Europe inequality/deaths/April heat/El Niño claims match Source 3, and the Kenya death/household figures match the AP source.
I found no direct factual contradictions. Some broader explanatory passages — e.g., household safety
INFO 05/08/2026 03:55:48 PM chat.py ln 553 Fact-check generated using OpenAI gpt-5.5
INFO 05/08/2026 03:55:48 PM patch_article.py ln 188 Fact-check comment posted on 1207 (17.63s)
INFO 05/08/2026 03:55:48 PM patch_article.py ln 229 Patch completed (18.01s total)
INFO 05/08/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/08/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:06:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 04:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 04:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 04:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 04:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 04:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 04:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 04:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 04:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 04:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 04:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 04:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 04:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 04:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 04:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 04:06:56 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 04:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 04:06:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/08/2026 04:06:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 04:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 04:06:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/08/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 05:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 05:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 05:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 05:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 05:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 05:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 05:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 05:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 05:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 05:06:56 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/08/2026 05:06:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/08/2026 05:06:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/08/2026 05:06:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/08/2026 05:06:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/08/2026 05:06:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/08/2026 05:37:17 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/08/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:06:53 PM create_articles.py ln 93 JWT token obtained (0.71s)
INFO 05/08/2026 06:06:53 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 06:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:06:53 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 06:06:53 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 06:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/08/2026 06:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 06:06:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:06:58 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 06:06:58 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:06:59 PM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 05/08/2026 06:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 06:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 06:06:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 06:06:59 PM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/08/2026 06:06:59 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 06:07:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 06:07:04 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 06:07:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 06:07:05 PM create_articles.py ln 93 JWT token obtained (0.82s)
INFO 05/08/2026 06:07:05 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 06:07:05 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 06:07:05 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 06:07:05 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 06:07:05 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/08/2026 06:07:05 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/08/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:53 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 07:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 07:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 07:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 07:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/08/2026 07:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 07:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 07:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 07:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 07:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 07:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 07:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 07:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 07:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 07:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 07:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 05/08/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 08:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 08:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/08/2026 08:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 08:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 08:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 08:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 08:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 08:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 08:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/08/2026 08:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 08:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 08:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 08:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 08:06:57 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/08/2026 08:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 08:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 08:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 08:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 08:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/08/2026 08:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/08/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 09:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 09:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 09:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/08/2026 09:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 09:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 09:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 09:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 09:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 09:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 10:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 10:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 10:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 10:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 10:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 10:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/08/2026 10:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 10:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 10:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 10:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 10:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 10:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 10:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 10:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 10:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 10:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 10:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 10:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 10:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 10:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 10:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 10:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 10:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/08/2026 10:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/08/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/08/2026 11:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/08/2026 11:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/08/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/08/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/08/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 11:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 11:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/08/2026 11:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 11:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 11:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/08/2026 11:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/08/2026 11:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/08/2026 11:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/08/2026 11:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/08/2026 11:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/08/2026 11:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/08/2026 11:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/08/2026 11:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/08/2026 11:22:47 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 11:22:48 PM drupal.py ln 259 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/08/2026 11:22:48 PM drupal.py ln 261 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/08/2026 11:22:48 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/08/2026 11:22:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/08/2026 11:22:48 PM drupal.py ln 515 Fetched 0 widgets for target_id 7
INFO 05/08/2026 11:22:48 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/09/2026 12:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:05:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 12:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:05:50 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 12:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 12:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 12:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 12:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/09/2026 12:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 12:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 12:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 12:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 12:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 12:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 12:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 12:05:54 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 12:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 12:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:05:57 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 12:05:57 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 12:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:05:57 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 12:05:57 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 12:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 12:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/09/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 01:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 01:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 01:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 01:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 01:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 01:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 01:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 01:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 02:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/09/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 02:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 02:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 02:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 02:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 02:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 02:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:05:56 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 02:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 02:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 02:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 02:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 02:05:56 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:55:33 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/09/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/09/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 03:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 03:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 03:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 03:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 03:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 03:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 03:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 03:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 03:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 03:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 04:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 04:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 04:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 04:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 04:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 04:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 04:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:53 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 04:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 04:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 04:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 04:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 04:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 04:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 04:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 04:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 04:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 04:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 04:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:30:04 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/09/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:06:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 05:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 05:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 05:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 05:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/09/2026 05:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 05:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 05:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 05:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 05:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 05:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 05:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 05:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 05:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 05:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:06:56 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 05:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 05:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 05:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 05:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 05:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 06:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/09/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 06:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 06:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 06:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 06:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 06:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 06:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 06:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/09/2026 06:05:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 06:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 06:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/09/2026 06:05:56 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/09/2026 06:05:56 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/09/2026 06:05:56 AM cron_common.py ln 414 Character articles: 100
INFO 05/09/2026 06:05:56 AM create_articles.py ln 126 Character articles loaded (0.56s)
INFO 05/09/2026 06:05:56 AM create_articles.py ln 128 Setup complete (1.05s total)
INFO 05/09/2026 06:05:56 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/09/2026 06:05:56 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260509_060556_news_Hawk.log
INFO 05/09/2026 06:05:56 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/09/2026 06:05:57 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/09/2026 06:05:57 AM article_creation_service.py ln 771 Fetched WP users (0.06s)
INFO 05/09/2026 06:05:57 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.57s)
INFO 05/09/2026 06:05:57 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.15s)
INFO 05/09/2026 06:05:57 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/09/2026 06:05:57 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/09/2026 06:05:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/09/2026 06:05:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/09/2026 06:05:59 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/09/2026 06:05:59 AM chat.py ln 159 Found 8 results
INFO 05/09/2026 06:05:59 AM article_creation_service.py ln 771 Found 8 search results (1.82s)
INFO 05/09/2026 06:05:59 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260509_060556_news_Hawk_search.md
INFO 05/09/2026 06:05:59 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/09/2026 06:06:58 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/09/2026 06:06:58 AM article_creation_service.py ln 771 Generated article - Hawk’s Saturday Brief: U.S. hits Iranian ships as ceasefire strains; Starmer digs in; Haiti verdicts; Ukraine hardens (58.47s)
INFO 05/09/2026 06:06:58 AM article_creation_service.py ln 771 Created WP post 1212 (0.11s)
INFO 05/09/2026 06:07:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/09/2026 06:07:07 AM wp.py ln 860 Prompt: Create a cinematic editorial featured image for a global news briefing: a dark, high-contrast world map backdrop with multiple crisis hotspots subtly glowing. In the foreground, a tense maritime scene in the Persian Gulf shows two shadowy cargo vessels under searchlights with distant naval silhouettes, suggesting U.S.–Iran ceasefire strain. Blend in secondary visual motifs around the edges: a cold blue Ukraine frontline with defensive barriers, the silhouette of the UK Parliament under storm clouds, a Miami courthouse with Haitian flag colors faintly reflected, a detained journalist’s empty press vest, and muted financial market charts. Serious geopolitical tone, dramatic lighting, realistic photo-illustration style, no gore, no readable text, no logos, no identifiable politicians, 16:9 aspect ratio.
INFO 05/09/2026 06:07:07 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/09/2026 06:08:25 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/09/2026 06:08:25 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/09/2026 06:08:25 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-09.jpeg
INFO 05/09/2026 06:08:25 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-09.jpeg
INFO 05/09/2026 06:08:25 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MzA2NzU3LCJuYmYiOjE3NzgzMDY3NTcsImV4cCI6MTc3ODkxMTU1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.qkNd9cDsUpXbNWd9_0JWEMKqnC6yoQCv4ZdW9jXuyKI
INFO 05/09/2026 06:08:25 AM image.py ln 220 filename is 2026-05-09.webp
INFO 05/09/2026 06:08:25 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-09.webp'>}
INFO 05/09/2026 06:08:26 AM article_creation_service.py ln 771 Featured image posted (87.99s)
INFO 05/09/2026 06:08:38 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/09/2026 06:08:38 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial illustration for a global news briefing: a dark, moody world map spread across a newsroom desk, lit by cool blue monitor glow and warm dawn light from one side. In the Persian Gulf, two small ship silhouettes sit under tense red warning lights; in Eastern Europe, Ukraine is highlighted with cold steel-blue contours and faint defensive lines; over the UK, a cluster of ballot papers and shifting political arrows; near Haiti and Miami, a thin line connects a courthouse silhouette to the Caribbean; near Gaza, a broken camera lens and press badge rest in shadow. Add subtle market ticker lines, diplomatic cables, and declassified file folders in the foreground, including one folder stamped with a vague UFO-style symbol but no readable text.
Style: sophisticated geopolitical magazine cover art, semi-realistic digital painting, high contrast, textured paper grain, layered map graphics, restrained color palette of navy, charcoal, crimson, amber, and muted white. Mood: tense, analytical, global, urgent but not sensationalist. Composition should feel like an intelligence briefing board or weekend situation room overview. No real politician portraits, no flags dominating the image, no readable headlines or logos. Wide 16:9 aspect ratio, sharp details, atmospheric lighting.
INFO 05/09/2026 06:08:38 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/09/2026 06:09:27 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/09/2026 06:09:27 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/09/2026 06:09:27 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-09-1.jpeg
INFO 05/09/2026 06:09:27 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-09-1.jpeg
INFO 05/09/2026 06:09:27 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4MzA2NzU3LCJuYmYiOjE3NzgzMDY3NTcsImV4cCI6MTc3ODkxMTU1NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.qkNd9cDsUpXbNWd9_0JWEMKqnC6yoQCv4ZdW9jXuyKI
INFO 05/09/2026 06:09:27 AM image.py ln 220 filename is 2026-05-09-1.webp
INFO 05/09/2026 06:09:27 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-09-1.webp'>}
INFO 05/09/2026 06:09:28 AM article_creation_service.py ln 771 Secondary image uploaded (62.03s)
INFO 05/09/2026 06:09:28 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/09/2026 06:09:28 AM wp.py ln 1018 Post content updated successfully for post 1212
INFO 05/09/2026 06:09:28 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/09/2026 06:09:28 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 400 Bad Request"
ERROR 05/09/2026 06:09:28 AM article_creation_service.py ln 771 Fact-check failed - Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}, 'request_id': 'req_011CarVmUsjucxh1Urvy5yxN'}
INFO 05/09/2026 06:09:28 AM article_creation_service.py ln 771 Article creation completed successfully (total: 211.72s)
INFO 05/09/2026 06:09:28 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/09/2026 06:09:28 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/09/2026 06:09:28 AM create_articles.py ln 204 Script completed (212.77s total)
INFO 05/09/2026 07:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:07:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 07:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:07:50 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/09/2026 07:07:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 07:07:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:07:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 07:07:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 07:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/09/2026 07:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 07:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:07:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 07:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:07:54 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/09/2026 07:07:54 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 07:07:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:07:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 07:07:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 07:07:54 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/09/2026 07:07:54 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 07:07:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:07:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 07:07:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:07:58 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 07:07:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 07:07:58 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:07:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 07:07:58 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 07:07:58 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/09/2026 07:07:58 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 07:07:58 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 07:07:58 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/09/2026 07:07:58 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/09/2026 07:07:58 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/09/2026 07:07:58 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/09/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 08:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 08:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 08:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 08:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 08:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 08:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 08:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/09/2026 08:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 08:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 08:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/09/2026 08:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/09/2026 08:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/09/2026 08:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/09/2026 08:37:03 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/09/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 09:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/09/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/09/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 09:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 09:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 09:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 09:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 09:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 09:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 09:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 09:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 09:06:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 09:06:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 09:06:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/09/2026 09:06:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/09/2026 09:06:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/09/2026 09:06:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/09/2026 10:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 10:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:05:50 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/09/2026 10:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 10:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 10:05:51 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 10:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/09/2026 10:05:51 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 10:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 10:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:05:55 AM create_articles.py ln 93 JWT token obtained (0.63s)
INFO 05/09/2026 10:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 10:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:05:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 10:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 10:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/09/2026 10:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 10:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:59 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 10:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:06:00 AM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 05/09/2026 10:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 10:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:06:00 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 10:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 10:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/09/2026 10:06:00 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 10:06:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 10:06:00 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/09/2026 10:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/09/2026 10:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/09/2026 10:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/09/2026 11:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 11:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 11:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 11:07:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 11:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 11:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 11:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 11:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 11:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/09/2026 11:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 11:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 11:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 11:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 11:07:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 11:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 11:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 11:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 11:07:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 11:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 11:07:53 AM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 11:07:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 11:07:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 11:07:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 11:07:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 11:07:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 11:07:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 11:07:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 11:07:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 11:07:56 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 11:07:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/09/2026 11:07:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/09/2026 11:07:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/09/2026 11:07:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/09/2026 11:07:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/09/2026 11:07:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/09/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/09/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 12:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 12:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 12:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 12:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 12:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 12:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 12:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 12:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 12:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 12:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 12:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 12:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 12:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 12:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 12:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 01:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:50 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 01:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 01:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 01:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 01:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 01:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 01:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 01:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 01:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 01:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 01:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 01:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 01:06:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 01:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 01:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 01:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 01:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 01:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 01:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 02:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 02:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 02:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 02:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/09/2026 02:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 02:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 02:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 02:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 02:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 02:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 02:06:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 02:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 02:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 02:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 02:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 02:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 02:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 03:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 03:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 03:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 03:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 03:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 03:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/09/2026 03:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 03:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 03:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 03:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 03:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 03:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 03:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 03:05:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 03:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 03:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 03:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 03:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 03:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 03:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/09/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 04:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 04:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 04:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 04:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 04:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 04:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 04:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 04:06:56 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 04:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 04:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 04:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 04:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 04:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 04:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 05:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 05:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 05:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 05:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 05:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 05:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 05:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 05:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 05:05:56 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/09/2026 05:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 05:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 05:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 05:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 05:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/09/2026 05:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 06:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/09/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 06:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 06:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 06:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 06:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 06:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 06:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 06:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 06:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 06:05:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 06:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 06:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 06:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 06:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 06:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 06:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 07:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:06:50 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 07:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:06:50 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 07:06:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 07:06:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:06:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 07:06:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 07:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/09/2026 07:06:51 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 07:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:06:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 07:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:06:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 07:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 07:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 07:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 07:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 07:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 07:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 07:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 07:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 07:06:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 07:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 07:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 07:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 07:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 07:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 07:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/09/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/09/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 08:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 08:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 08:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 08:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 08:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 08:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 08:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 08:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 08:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 08:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/09/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 09:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 09:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 09:06:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 09:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 09:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 09:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 09:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 09:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/09/2026 09:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/09/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/09/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/09/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/09/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/09/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/09/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/09/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/09/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/09/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/09/2026 10:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 10:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/09/2026 10:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/09/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/09/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/09/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/09/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/09/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/09/2026 10:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/09/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/09/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/09/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/09/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 05:24:31 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 05:24:31 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 05:24:31 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 05:24:37 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/10/2026 05:24:39 PM create_articles.py ln 93 JWT token obtained (8.37s)
INFO 05/10/2026 05:24:40 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 05:24:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 05:24:40 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 05:24:40 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 05:24:40 PM create_articles.py ln 100 Characters fetched and filtered (1.07s)
INFO 05/10/2026 05:24:40 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 05:24:45 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 05:24:45 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 05:24:45 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 05:24:49 PM create_articles.py ln 93 JWT token obtained (3.85s)
INFO 05/10/2026 05:24:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 05:24:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 05:24:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 05:24:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 05:24:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/10/2026 05:24:49 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 05:24:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 05:24:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 05:24:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 05:24:55 PM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/10/2026 05:24:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 05:24:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 05:24:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 05:24:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 05:24:55 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/10/2026 05:24:55 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 06:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 06:05:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 06:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 06:05:51 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/10/2026 06:05:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 06:05:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 06:05:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 06:05:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 06:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/10/2026 06:05:51 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 06:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 06:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 06:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 06:05:54 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/10/2026 06:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 06:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 06:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 06:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 06:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 06:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 06:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 06:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 06:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 06:05:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/10/2026 06:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 06:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 06:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 06:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 06:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 06:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 06:49:53 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/10/2026 06:50:15 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/10/2026 06:53:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/10/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 07:05:51 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/10/2026 07:05:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 07:05:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 07:05:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 07:05:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 07:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/10/2026 07:05:51 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 07:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 07:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 07:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 07:05:54 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/10/2026 07:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 07:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 07:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 07:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 07:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 07:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 07:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 07:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 07:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 07:05:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/10/2026 07:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 07:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 07:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 07:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 07:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/10/2026 07:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 08:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 08:06:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 08:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 08:06:51 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/10/2026 08:06:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 08:06:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 08:06:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 08:06:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 08:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/10/2026 08:06:51 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 08:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 08:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 08:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 08:06:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/10/2026 08:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 08:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 08:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 08:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 08:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 08:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 08:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 08:06:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 08:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 08:06:57 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/10/2026 08:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 08:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 08:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 08:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 08:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/10/2026 08:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 09:00:16 PM drupal.py ln 259 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/10/2026 09:00:16 PM drupal.py ln 261 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 09:00:16 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 09:00:16 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 09:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 09:05:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 09:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 09:05:51 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/10/2026 09:05:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 09:05:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 09:05:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 09:05:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 09:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/10/2026 09:05:51 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 09:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 09:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 09:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 09:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/10/2026 09:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 09:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 09:05:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 09:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 09:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/10/2026 09:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 09:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 09:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 09:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 09:05:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/10/2026 09:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 09:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 09:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 09:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 09:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 09:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 10:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 10:06:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 10:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 10:06:51 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/10/2026 10:06:51 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/10/2026 10:06:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 10:06:51 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/10/2026 10:06:51 PM cron_common.py ln 313 filtered characters: 17
INFO 05/10/2026 10:06:51 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/10/2026 10:06:51 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 10:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 10:06:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 10:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 10:06:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/10/2026 10:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/10/2026 10:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 10:06:54 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/10/2026 10:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 10:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/10/2026 10:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 10:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 10:06:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 10:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/10/2026 10:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/10/2026 10:06:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/10/2026 10:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/10/2026 10:06:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/10/2026 10:06:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/10/2026 10:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/10/2026 10:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/10/2026 11:07:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 11:07:53 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/10/2026 11:07:53 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/10/2026 11:07:53 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/10/2026 11:07:53 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/10/2026 11:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 11:07:56 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/10/2026 11:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/10/2026 11:07:56 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/10/2026 11:07:56 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/10/2026 11:07:58 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/10/2026 11:07:58 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/10/2026 11:07:58 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/10/2026 11:07:58 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/10/2026 11:07:58 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/11/2026 01:29:29 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
ERROR 05/11/2026 01:29:30 AM user.py ln 144 Service login failed - 503: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<title>503 Service Unavailable</title>
</head><body>
<h1>Service Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
</body></html>
INFO 05/11/2026 01:29:30 AM drupal.py ln 215 Error fetching character by slug 'alma' for target_id 3: 503
INFO 05/11/2026 01:29:30 AM drupal.py ln 215 Error fetching character by slug 'alma' for target_id 4: 503
INFO 05/11/2026 02:32:55 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/11/2026 02:33:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:33:58 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 02:33:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:34:00 AM create_articles.py ln 93 JWT token obtained (1.58s)
INFO 05/11/2026 02:34:00 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 02:34:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:34:00 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 02:34:00 AM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 02:34:00 AM create_articles.py ln 100 Characters fetched and filtered (0.44s)
INFO 05/11/2026 02:34:00 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 02:34:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:34:02 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 02:34:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:34:03 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/11/2026 02:34:03 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 02:34:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:34:03 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 02:34:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 02:34:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 02:34:03 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 02:34:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 02:34:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/11/2026 02:34:03 AM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 05/11/2026 02:34:03 AM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 05/11/2026 02:34:03 AM cron_common.py ln 414 Character articles: 19
INFO 05/11/2026 02:34:03 AM create_articles.py ln 126 Character articles loaded (0.16s)
INFO 05/11/2026 02:34:03 AM create_articles.py ln 128 Setup complete (0.59s total)
INFO 05/11/2026 02:34:03 AM create_articles.py ln 140 Creating article for character: Geneva
INFO 05/11/2026 02:34:03 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260511_023403_dev_Geneva.log
INFO 05/11/2026 02:34:03 AM article_creation_service.py ln 771 Article creation started for character: Geneva
INFO 05/11/2026 02:34:03 AM article_creation_service.py ln 771 WordPress authentication successful (0.32s)
INFO 05/11/2026 02:34:03 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/11/2026 02:34:04 AM article_creation_service.py ln 771 Loaded 19 articles for character (0.16s)
INFO 05/11/2026 02:34:04 AM article_creation_service.py ln 771 Got 9 categories and 32 tags (0.08s)
INFO 05/11/2026 02:34:04 AM article_creation_service.py ln 771 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 05/11/2026 02:34:04 AM chat.py ln 139 Tavily search will filter to past week
INFO 05/11/2026 02:34:07 AM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 05/11/2026 02:34:07 AM chat.py ln 159 Found 5 results
INFO 05/11/2026 02:34:07 AM article_creation_service.py ln 771 Found 5 search results (3.38s)
INFO 05/11/2026 02:34:07 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260511_023403_dev_Geneva_search.md
INFO 05/11/2026 02:34:07 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/11/2026 02:35:14 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:35:14 AM article_creation_service.py ln 771 Generated article - Your 2026 AI coding stack: Copilot, Cursor, Claude Code — and the workflows that actually work (67.28s)
INFO 05/11/2026 02:35:14 AM article_creation_service.py ln 771 Created WP post 838 (0.14s)
INFO 05/11/2026 02:35:24 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:35:24 AM wp.py ln 860 Prompt: Create a wide 16:9 featured image for a tech article about the “2026 AI coding stack.” Show a modern developer workstation with three connected workflow zones: an IDE window with glowing inline code suggestions, a terminal window running an autonomous AI agent across a repository, and a GitHub-style pull request review panel with checks passing. Use a futuristic but clean software-engineering aesthetic: dark mode UI, neon blue/purple/green accents, code branches, test checkmarks, and subtle AI neural-network lines connecting the zones. Convey “composable workflow” rather than a single tool: multiple AI assistants collaborating through IDE, terminal, and PR review. Include small abstract icons for autocomplete, multi-file editing, agent planning, testing, and human approval. No real company logos or trademarked UI branding. Professional editorial illustration, crisp vector-meets-3D style, high contrast, minimal clutter, suitable for a developer blog hero image.
INFO 05/11/2026 02:35:24 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/11/2026 02:36:12 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/11/2026 02:36:12 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/11/2026 02:36:12 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11.jpeg
INFO 05/11/2026 02:36:12 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-11.jpeg
INFO 05/11/2026 02:36:12 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzg0NjY4NDMsIm5iZiI6MTc3ODQ2Njg0MywiZXhwIjoxNzc5MDcxNjQzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.3wk_-Ep6D3A7jmlz8JgGhV3DWkJjDytxAEanIdsVkzI
INFO 05/11/2026 02:36:12 AM image.py ln 220 filename is 2026-05-11.webp
INFO 05/11/2026 02:36:12 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11.webp'>}
INFO 05/11/2026 02:36:12 AM article_creation_service.py ln 771 Featured image posted (57.97s)
INFO 05/11/2026 02:36:22 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:36:22 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial-style illustration for an article about the “2026 AI coding stack.” Show a modern developer workstation split into three connected zones: an IDE window with glowing inline code suggestions, an AI-first multi-file editor with branching file trees and highlighted refactor paths, and a terminal window where autonomous agent “sub-processes” are represented as small luminous nodes labeled conceptually as planner, coder, reviewer, tester. In the background, visualize a GitHub-style pull request review flow as floating cards: branch, tests, CI checks, diff review, human approval.
Use a futuristic but practical software-engineering aesthetic: dark mode interface, deep navy and charcoal background, neon accents in cyan, violet, and soft green, with subtle amber highlights for warnings and usage credits. Include abstract code snippets, file icons, dependency graphs, test checkmarks, and a branching git graph weaving through the composition like circuitry. The mood should feel productive, controlled, and collaborative — not chaotic — emphasizing “composable workflow,” “guardrails,” and “human-in-the-loop review.”
Style: high-detail digital illustration, clean tech editorial art, semi-isometric perspective, soft glow, crisp UI panels, layered glassmorphism, subtle grain texture, realistic desk lighting, no specific brand logos, no readable proprietary UI, no people’s faces necessary. Aspect ratio 16:9, suitable as a secondary hero image for a technical blog post.
INFO 05/11/2026 02:36:22 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/11/2026 02:37:06 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/11/2026 02:37:06 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/11/2026 02:37:06 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11-1.jpeg
INFO 05/11/2026 02:37:06 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-11-1.jpeg
INFO 05/11/2026 02:37:06 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzg0NjY4NDMsIm5iZiI6MTc3ODQ2Njg0MywiZXhwIjoxNzc5MDcxNjQzLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.3wk_-Ep6D3A7jmlz8JgGhV3DWkJjDytxAEanIdsVkzI
INFO 05/11/2026 02:37:07 AM image.py ln 220 filename is 2026-05-11-1.webp
INFO 05/11/2026 02:37:07 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11-1.webp'>}
INFO 05/11/2026 02:37:07 AM article_creation_service.py ln 771 Secondary image uploaded (54.56s)
INFO 05/11/2026 02:37:07 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/11/2026 02:37:07 AM wp.py ln 1018 Post content updated successfully for post 838
INFO 05/11/2026 02:37:07 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/11/2026 02:37:07 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 400 Bad Request"
ERROR 05/11/2026 02:37:07 AM article_creation_service.py ln 771 Fact-check failed - Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}, 'request_id': 'req_011Cav1C8zF4ppt9At4iAEDm'}
INFO 05/11/2026 02:37:07 AM article_creation_service.py ln 771 Article creation completed successfully (total: 184.40s)
INFO 05/11/2026 02:37:07 AM create_articles.py ln 185 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 05/11/2026 02:37:07 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/11/2026 02:37:07 AM create_articles.py ln 204 Script completed (185.00s total)
INFO 05/11/2026 02:37:10 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:37:10 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 02:37:10 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:37:10 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 02:37:11 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 02:37:11 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:37:11 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 02:37:11 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 02:37:11 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 02:37:11 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 02:39:37 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:39:55 AM chat.py ln 63 myMsg is userId=0 body="What differentiates Turman Solutions from it's competitors?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 02:39:55 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What differentiates Turman Solutions from it's competitors?"}]
INFO 05/11/2026 02:39:55 AM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 02:39:55 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 02:41:29 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:41:45 AM chat.py ln 63 myMsg is userId=0 body='How do i create characters and what can they do?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 02:41:45 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How do i create characters and what can they do?'}]
INFO 05/11/2026 02:41:45 AM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 02:41:45 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 02:42:03 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:06:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:06:58 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 03:06:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:06:59 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/11/2026 03:06:59 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 03:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:06:59 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 03:06:59 AM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 03:06:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/11/2026 03:06:59 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 03:07:01 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:07:01 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 03:07:01 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:07:02 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 03:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 03:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:07:02 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 03:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 03:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/11/2026 03:07:02 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 03:07:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 03:07:02 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 03:07:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 03:07:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 03:07:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 03:07:05 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:07:05 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 03:07:05 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:07:05 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/11/2026 03:07:05 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 03:07:05 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:07:05 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 03:07:05 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 03:07:05 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 03:07:05 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 03:22:42 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:22:46 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:22:46 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:22:55 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:26:23 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:26:25 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 03:26:52 AM chat.py ln 63 myMsg is userId=0 body='How do i create characters and what can they do?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 03:26:52 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How do i create characters and what can they do?'}]
INFO 05/11/2026 03:26:52 AM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 03:26:53 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 03:27:27 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:05:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:05:58 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 04:05:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:05:59 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 04:05:59 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 04:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:05:59 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 04:05:59 AM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 04:05:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/11/2026 04:05:59 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 04:06:01 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:06:01 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 04:06:01 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:06:01 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/11/2026 04:06:01 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 04:06:01 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:06:01 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 04:06:01 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 04:06:01 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 04:06:01 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 04:06:01 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 04:06:01 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 04:06:01 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 04:06:01 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 04:06:01 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 04:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:06:04 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 04:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:06:04 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 04:06:04 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 04:06:04 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:06:04 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 04:06:04 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 04:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 04:06:04 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 04:28:18 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:49:55 AM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/11/2026 04:52:06 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:52:09 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:52:37 AM chat.py ln 63 myMsg is userId=0 body="What's this web site about?" instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 04:52:37 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': "What's this web site about?"}]
INFO 05/11/2026 04:52:37 AM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 04:52:39 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 04:53:14 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:53:20 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:53:34 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:54:26 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 04:54:45 AM chat.py ln 63 myMsg is userId=0 body='How do i create characters and what can they do?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 04:54:45 AM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How do i create characters and what can they do?'}]
INFO 05/11/2026 04:54:45 AM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 04:54:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 05:05:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:05:58 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 05:05:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:05:59 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 05:05:59 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 05:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:05:59 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 05:05:59 AM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 05:05:59 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/11/2026 05:05:59 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 05:06:01 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:06:01 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 05:06:01 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:06:01 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 05:06:01 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 05:06:01 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:06:01 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 05:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 05:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/11/2026 05:06:02 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 05:06:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 05:06:02 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 05:06:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 05:06:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 05:06:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 05:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:06:04 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 05:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:06:04 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/11/2026 05:06:04 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 05:06:04 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:06:04 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 05:06:04 AM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 05:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/11/2026 05:06:04 AM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 05:06:09 AM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 05:06:16 AM user.py ln 36 User login attempt - site: chat-news.turmansolutions.ai, username: John, site_config: cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 05:06:16 AM user.py ln 43 Login request URL: https://news.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/11/2026 05:06:17 AM user.py ln 63 Login response status code: 200
INFO 05/11/2026 05:06:17 AM user.py ln 64 Login response headers: {'Date': 'Mon, 11 May 2026 05:06:16 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://news.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/11/2026 05:06:17 AM user.py ln 65 Login response content length: 341 bytes
INFO 05/11/2026 05:06:17 AM user.py ln 70 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NDc1OTc3LCJuYmYiOjE3Nzg0NzU5NzcsImV4cCI6MTc3OTA4MDc3NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.40qrih4G7ZIt41XjD6-LVNJr_vbXs3b1TdB3KbC4kow","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 05/11/2026 05:06:17 AM user.py ln 91 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NDc1OTc3LCJuYmYiOjE3Nzg0NzU5NzcsImV4cCI6MTc3OTA4MDc3NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.40qrih4G7ZIt41XjD6-LVNJr_vbXs3b1TdB3KbC4kow', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/11/2026 05:06:17 AM user.py ln 101 Login successful for John on https://news.turmansolutions.ai
INFO 05/11/2026 05:06:17 AM drupal.py ln 259 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 05/11/2026 05:06:17 AM drupal.py ln 261 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 05:06:17 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 05:06:17 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:06:40 AM responses_langchain.py ln 415 Processing message with key: 1778476000235792
INFO 05/11/2026 05:06:40 AM responses_langchain.py ln 433 Using model: OpenAI - gpt-5.5
INFO 05/11/2026 05:06:41 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:07:26 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/11/2026 02:08:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:08:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 02:08:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:08:47 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 02:08:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 02:08:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:08:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 02:08:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 02:08:47 PM create_articles.py ln 100 Characters fetched and filtered (0.44s)
INFO 05/11/2026 02:08:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 02:08:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:08:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 02:08:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:08:50 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 02:08:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 02:08:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:08:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 02:08:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 02:08:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 02:08:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 02:08:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 02:08:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 02:08:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 02:08:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 02:08:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 02:08:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 02:08:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 02:08:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 02:08:54 PM create_articles.py ln 93 JWT token obtained (1.63s)
INFO 05/11/2026 02:08:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 02:08:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 02:08:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 02:08:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 02:08:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/11/2026 02:08:54 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/11/2026 02:08:54 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 02:08:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 02:08:54 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/11/2026 02:08:54 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/11/2026 02:08:54 PM cron_common.py ln 414 Character articles: 44
INFO 05/11/2026 02:08:54 PM create_articles.py ln 126 Character articles loaded (0.24s)
INFO 05/11/2026 02:08:54 PM create_articles.py ln 128 Setup complete (2.02s total)
INFO 05/11/2026 02:08:54 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/11/2026 02:08:54 PM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260511_140854_news_Dusty.log
INFO 05/11/2026 02:08:54 PM article_creation_service.py ln 771 Article creation started for character: Dusty
INFO 05/11/2026 02:08:54 PM article_creation_service.py ln 771 WordPress authentication successful (0.32s)
INFO 05/11/2026 02:08:54 PM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/11/2026 02:08:55 PM article_creation_service.py ln 771 Loaded 44 articles for character (0.23s)
INFO 05/11/2026 02:08:55 PM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/11/2026 02:08:55 PM article_creation_service.py ln 771 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/11/2026 02:08:55 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/11/2026 02:08:55 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/11/2026 02:08:57 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/11/2026 02:08:57 PM chat.py ln 159 Found 5 results
INFO 05/11/2026 02:08:57 PM article_creation_service.py ln 771 Found 5 search results (2.11s)
INFO 05/11/2026 02:08:57 PM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260511_140854_news_Dusty_search.md
INFO 05/11/2026 02:08:57 PM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/11/2026 02:10:26 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:10:26 PM article_creation_service.py ln 771 Generated article - Heat, Floods, and a Vanishing Snowpack: The Weather Map Is Warning Us About a High-Risk Summer (89.17s)
INFO 05/11/2026 02:10:26 PM article_creation_service.py ln 771 Created WP post 1219 (0.10s)
INFO 05/11/2026 02:10:39 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:10:39 PM wp.py ln 860 Prompt: **Featured image prompt:**
Create a dramatic editorial-style featured image for a climate and weather article. Show a wide 16:9 weather-map composition blending multiple extreme hazards: the southwestern United States glowing in intense red-orange desert heat with a blazing sun and thermometer-like heat shimmer; nearby western mountains with a thin, vanishing snowpack melting into dry rivers and cracked earth; across the ocean, South Africa under dark storm clouds with torrential rain, flash flooding, and muddy mountain runoff. Overlay subtle meteorological elements such as contour lines, jet-stream curves, radar colors, and faint global map outlines to suggest connected climate patterns and forecasting uncertainty. The mood should be urgent, scientific, and high-risk, with strong contrast between fire-like heat tones and cold blue-gray flood imagery. Photorealistic with polished news-magazine quality, cinematic lighting, no people, no text, no logos.
INFO 05/11/2026 02:10:39 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/11/2026 02:11:27 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/11/2026 02:11:28 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/11/2026 02:11:28 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-11.jpeg
INFO 05/11/2026 02:11:28 PM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-11.jpeg
INFO 05/11/2026 02:11:28 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NTA4NTM0LCJuYmYiOjE3Nzg1MDg1MzQsImV4cCI6MTc3OTExMzMzNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.WIBnRypLRy1LqmhEI7atRWmyYkL7EJFEuBAJ-tDfosE
INFO 05/11/2026 02:11:28 PM image.py ln 220 filename is 2026-05-11.webp
INFO 05/11/2026 02:11:28 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-11.webp'>}
INFO 05/11/2026 02:11:28 PM article_creation_service.py ln 771 Featured image posted (62.31s)
INFO 05/11/2026 02:11:44 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 02:11:44 PM wp.py ln 895 Secondary Image Prompt: **Image generation prompt:**
Create a dramatic editorial-style climate/weather illustration showing a high-risk summer unfolding across the globe. The composition should feel like a modern weather map blended with cinematic landscape imagery. In the foreground, show a cracked desert floor in the American Southwest shimmering with intense heat waves, a small roadside thermometer glowing near 110°F, and distant silhouettes of cacti and power lines under a harsh orange sun. In the midground, transition into a western mountain range with a visibly vanishing snowpack — dark exposed rock, thin streaks of melting snow, dry riverbeds leading away from the peaks. On the opposite side of the image, show South African coastal mountains under deep blue-gray storm clouds, with torrential rain, overflowing rivers, muddy runoff, and hints of rockfalls or landslides.
Overlay the entire scene with subtle semi-transparent meteorological elements: jet stream curves, isobars, satellite cloud swirls, faint contour lines, radar-like rainfall bands, and a warm Pacific El Niño glow stretching across the ocean. The image should convey interconnected climate extremes: heat, drought, disappearing snow, wildfire risk, and flooding happening at once. Use a strong color contrast between searing desert oranges/reds and stormy flood blues/greens. Mood: urgent, atmospheric, intelligent, and cautionary — not apocalyptic, but clearly warning of rising risk. Style should be polished digital painting mixed with scientific map aesthetics, suitable for a serious climate and weather article. High detail, cinematic lighting, textured atmosphere, no people, no readable text, no logos. Aspect ratio 16:9.
INFO 05/11/2026 02:11:44 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/11/2026 02:12:33 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/11/2026 02:12:33 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/11/2026 02:12:33 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-11-1.jpeg
INFO 05/11/2026 02:12:33 PM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-11-1.jpeg
INFO 05/11/2026 02:12:33 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NTA4NTM0LCJuYmYiOjE3Nzg1MDg1MzQsImV4cCI6MTc3OTExMzMzNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.WIBnRypLRy1LqmhEI7atRWmyYkL7EJFEuBAJ-tDfosE
INFO 05/11/2026 02:12:33 PM image.py ln 220 filename is 2026-05-11-1.webp
INFO 05/11/2026 02:12:33 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-11-1.webp'>}
INFO 05/11/2026 02:12:33 PM article_creation_service.py ln 771 Secondary image uploaded (64.98s)
INFO 05/11/2026 02:12:33 PM wp.py ln 989 Inserted image after second paragraph
INFO 05/11/2026 02:12:33 PM wp.py ln 1018 Post content updated successfully for post 1219
INFO 05/11/2026 02:12:33 PM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/11/2026 02:12:34 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 400 Bad Request"
ERROR 05/11/2026 02:12:34 PM article_creation_service.py ln 771 Fact-check failed - Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}, 'request_id': 'req_011CavvDxxy5ieZyuUQNrfqm'}
INFO 05/11/2026 02:12:34 PM article_creation_service.py ln 771 Article creation completed successfully (total: 219.63s)
INFO 05/11/2026 02:12:34 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/11/2026 02:12:34 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/11/2026 02:12:34 PM create_articles.py ln 204 Script completed (221.66s total)
INFO 05/11/2026 02:14:14 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/11/2026 02:16:24 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:16:39 PM chat.py ln 63 myMsg is userId=0 body='How do i create characters and what can they do?' instructions='You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.' conversation=[] model=LLModel(provider=<LLMProvider.CLAUDE: 'Claude'>, name='claude-sonnet-4-5-20250929', temperature=0.7, max_tokens=None, stream=True) use_structured_output=False response_schema=None images=None site=None
INFO 05/11/2026 02:16:39 PM chat.py ln 75 msgs: [{'role': 'system', 'content': 'You are helping an organization to run their website, and you need to answer questions from users to the best of your ability. Users will send \nquestions to you through a chatbot interface on the web site.\n\nIn the text below you will find details about your own character such as your name, and a description of your character. \nBelow that will be a description of the organization you are helping, and then some technical information about their website. You will also be given some\nsales information in case the customer is interested in any products or services. Finally, you will be given some technical information about supporting our software.\n\nIf the customer asks you personal questions, you can make some small talk, but try to keep the user focused on the goals of the organization you \nare representing.\n\nCHARACTER DETAILS \n\nCHARACTER NAME: Alma\nCHARACTER DESCRIPTION: You are a smart, helpful person. You are a sales agent for a high tech company and you may be asked all kinds of questions. Do your best to reply. Be courteous and friendly.\n\nYou also write articles on HR (Human Resources) topics that are meant to promote a healthy and safe work environment and appeal to a worldwide audience.\n\nORGANIZATION DESCRIPTION: The name of the company you are helping is Turman Solutions, LLC. Our company website is at https://turmansolutions.ai. We\nbuild web sites and applications that are powered by Large Language Models (LLMs). The company was founded in 2024, and the president and CTO of the \ncompany is John Turman. The company provides consultancy, research and development services. The company provides hosting services for web sites. The company \nalso sells software products on a monthly subscription basis, and markets it\'s chatbot application as a full stack product available for sale. The company \nis actively seeking investors, partners, and early adopters of our product.\n\nTECHNICAL INFORMATION: The key components of the full stack solution that is used at our organization are Angular, Wordpress, Drupal, and FastAPI. We have in depth knowledge of \nTypescript, Javascript, Python, and PHP, HTML, and CSS, and we have many years of experience in web development and design. The company also has expertise in content management, \nand the LAMP stack (Linux, Apache, MySQL, PHP).\n\nSALES INFORMATION: Turman Solutions is actively seeking investors, and partners, and early adopters of our full stack solution. We have confidence in our\nproduct and feel we can have a large impact in the high-stakes AI marketplace. Our solutions are grounded with years of experience in web development, software engineering,\nand providing users with powerful and easy-to-use software. Our company is not directly involved in the development of large language models. Rather,\nwe use APIs provided by vendors such as OpenAI, Anthropic, and others.\n\nWe focus on providing AI enabled web sites and tools to users, and letting users build out tools for their own purposes. Our chatbot supports NLP (natural language processing) \nwidgets, allow users to effectively communicate with LLMs. We provide built-in NLP widgets such as our powerful "Ask Me Anything" widget. We also provide widgets for games, \ntranslation, literary quotes, quizzing engines, and more. Users are able to create and manage their own NLP widgets as well, and are encouraged to contribute their widgets to others. \nThese user managed widgets allow for powerful, structured interactions with LLMs.\n\nOur full stack solution also supports AI character development. AI characters (a.k.a. agents) have a name, an avatar image, a description of their personality and hobbies, \nand more. AI characters able to accomplish certain tasks on their own, such as writing new articles, or participating in discussion threads. Characters can also be asked to \nperform other tasks on demand. We have our own characters to help us here with various tasks. We can provide users with characters also, and our tools allow users to create \nand manage their own characters.\n\nOur chatbot works with Wordpress and Drupal and allows users to save generated content as articles, images, comments, etc. Our years of experience working with content \nmanagement allows us to tap into the powerful features of these CMSs. We have years of experience in the fields of publishing and education. Our solutions provide state\nof the art editing, design, and workflow experiences. \n\nWe are seeking early adopters of our solution. Early adopters will get their own web site and we would like to help them build out an awesome site with incredible content.\nEarly adopters can provide us valuable feedback as we craft features that improve our product and make it more reliable and useful. \n\nWe are also seeking investors and partners. Turman Solutions seeks to keep our operating costs at a minimum, and leverages open source solutions towards that end. We\nare operating in a high stakes business where a viable AI product has great potential. Our stack has been developed as a product from the first day, and \nis scalable in a well-known, predictable way. We are open to discussion, consultation, etc.\n\nAs a sales person, be ready to describe our product line and the services we offer. Also, find out if the user is a potential investor, partner, or an early adopter. Explain\nthat an early adopter will get their own Wordpress site and will play an important role in the evolution of our product. Encourage the user to consider running a personal blog\nsite where they can build the content that they themselves are most interested in. If you have a productive conversation, remind the user that they can share the conversation\nwith us using the "Share" button in the chatbot. If the user shares the conversation with us, we will get back to them in 1-2 business days. Users can also use our contact form\nat https://turmansolutions.ai/contact/ to initiate communication with us.\n\n\nTECHNICAL SUPPORT INFORMATION: If you are asked support questions about our product, do your best to help the user. The user interacts only with our chatbot and one or more Wordpress sites. Try to find out if \nthe user is having a problem with the chatbot, Wordpress, or some other problem.\n\nIf the user has problems with the chatbot, you likely will not be able to help out with detailed questions, but you can suggest the user refresh the page, log out and log back in again, \nor that the user try a different browser or device. The chatbot is a beta product and will have some defects. Let the user know this. \n\nIf it\'s a Wordpress problem, try to help the user resolve the problem. Give them links to online resources where appropriate. \n\nIf you are unable to resolve the issue, suggest that the user click the "Share" button for further assistance.'}, {'role': 'user', 'content': 'How do i create characters and what can they do?'}]
INFO 05/11/2026 02:16:39 PM chat.py ln 78 chat stream using model: claude-sonnet-4-5-20250929
INFO 05/11/2026 02:16:40 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 404 Not Found"
INFO 05/11/2026 02:27:41 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/11/2026 02:28:27 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:28:37 PM responses_langchain.py ln 415 Processing message with key: 1778509717664578
WARNING 05/11/2026 02:28:37 PM responses_langchain.py ln 62 Retired model 'claude-sonnet-4-5-20250929' requested; substituting 'claude-sonnet-4-6'
INFO 05/11/2026 02:28:37 PM responses_langchain.py ln 433 Using model: Claude - claude-sonnet-4-5-20250929
INFO 05/11/2026 02:28:38 PM _client.py ln 1740 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/11/2026 02:29:24 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:29:34 PM responses_langchain.py ln 415 Processing message with key: 17785097744462886
WARNING 05/11/2026 02:29:34 PM responses_langchain.py ln 62 Retired model 'claude-sonnet-4-5-20250929' requested; substituting 'claude-sonnet-4-6'
INFO 05/11/2026 02:29:34 PM responses_langchain.py ln 433 Using model: Claude - claude-sonnet-4-5-20250929
INFO 05/11/2026 02:29:35 PM _client.py ln 1740 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/11/2026 02:29:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:30:23 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:31:09 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/11/2026 02:35:28 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 02:35:29 PM drupal.py ln 259 token is 52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8
INFO 05/11/2026 02:35:29 PM drupal.py ln 261 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 02:35:29 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 02:35:29 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 03:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:06:47 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/11/2026 03:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 03:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 03:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 03:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/11/2026 03:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/11/2026 03:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 03:06:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 03:06:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 03:06:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 03:06:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 03:06:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 03:06:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 03:06:52 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/11/2026 03:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 03:06:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/11/2026 03:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 03:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 03:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 03:27:26 PM wp.py ln 387 embed media (large): https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1024x683.webp
INFO 05/11/2026 03:27:26 PM wp.py ln 403 Image URLs: ['https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1.webp', 'https://news.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1024x683.webp']
INFO 05/11/2026 03:27:26 PM patch_article.py ln 167 Using 5 stored search results for fact-check
INFO 05/11/2026 03:27:46 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 03:27:51 PM chat.py ln 348 AI comment: The article is broadly accurate and well supported by the provided sources. It correctly reflects the Guardian reporting on U.S./Mexico heat, South African flood/wind risks, western U.S. snowpack loss, AP’s El Niño outlook, the storm-track modeling study, and concerns over FEMA changes.
Only minor caveat: the article slightly broadens some source details—for example, the heaviest forecast rainfall totals are sourced specifically to parts of Western Cape and mountainous areas, while the article sometimes frames Western and Eastern Cape together for rainfall risk. A few contextual points, such
INFO 05/11/2026 03:27:51 PM chat.py ln 553 Fact-check generated using OpenAI gpt-5.5
INFO 05/11/2026 03:27:51 PM patch_article.py ln 188 Fact-check comment posted on 1219 (24.30s)
INFO 05/11/2026 03:27:51 PM patch_article.py ln 229 Patch completed (24.68s total)
INFO 05/11/2026 03:30:22 PM wp.py ln 387 embed media (large): https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1024x683.webp
INFO 05/11/2026 03:30:22 PM wp.py ln 403 Image URLs: ['https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1.webp', 'https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11-1024x683.webp']
INFO 05/11/2026 03:30:22 PM patch_article.py ln 167 Using 5 stored search results for fact-check
INFO 05/11/2026 03:30:40 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/11/2026 03:30:43 PM chat.py ln 348 AI comment: The article is broadly accurate against the provided sources. Its main claims about the 2026 AI coding assistant landscape, tool positioning for Copilot/Cursor/Claude Code, Claude Code adoption figures, Copilot’s June 1, 2026 usage-based billing shift, and Claude Code pricing/access are supported by the cited material.
I don’t see any major direct contradictions. The only minor caveat is that some workflow recommendations and command snippets are presented as practical guidance rather than source-derived facts; the article appropriately labels placeholder commands as examples, so this is not
INFO 05/11/2026 03:30:43 PM chat.py ln 553 Fact-check generated using OpenAI gpt-5.5
INFO 05/11/2026 03:30:43 PM patch_article.py ln 188 Fact-check comment posted on 838 (21.41s)
INFO 05/11/2026 03:30:43 PM patch_article.py ln 229 Patch completed (21.79s total)
INFO 05/11/2026 04:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 04:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 04:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 04:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 04:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 04:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/11/2026 04:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 04:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 04:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 04:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 04:05:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 04:05:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 04:05:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 04:05:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 04:05:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 04:05:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 04:05:52 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/11/2026 04:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 04:05:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/11/2026 04:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 04:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 04:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 05:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 05:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 05:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 05:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 05:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 05:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/11/2026 05:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/11/2026 05:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 05:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 05:05:49 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 05:05:49 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 05:05:49 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 05:05:49 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 05:05:49 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 05:05:49 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 05:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 05:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 05:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 05:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 05:05:52 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/11/2026 05:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 05:05:52 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/11/2026 05:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 05:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 05:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 06:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 06:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 06:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 06:06:47 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/11/2026 06:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 06:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 06:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 06:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 06:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/11/2026 06:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/11/2026 06:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 06:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 06:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 06:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 06:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 06:06:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 06:06:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 06:06:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 06:06:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 06:06:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 06:06:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 06:25:41 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 06:25:41 PM drupal.py ln 259 token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/11/2026 06:25:41 PM drupal.py ln 261 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 06:25:42 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 06:25:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 06:25:42 PM drupal.py ln 515 Fetched 0 widgets for target_id 7
INFO 05/11/2026 06:25:42 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/11/2026 06:26:57 PM _client.py ln 1740 HTTP Request: GET https://dev.turmansolutions.ai/wp-content/uploads/2026/05/2026-05-11.webp "HTTP/1.1 200 OK"
INFO 05/11/2026 06:26:58 PM image.py ln 144 URL image width, height are: 1536, 1024
INFO 05/11/2026 06:26:58 PM image.py ln 154 file location: /tsai/repo/drupal/web/sites/default/files/cbt/dev/upload/2026-05-11-16aa06ae-9928-42b4-8a74-92012cc44673.webp
INFO 05/11/2026 06:30:23 PM gpt_image.py ln 151 [gpt-image] Generating with prompt: The title on this image is cut off. Make another ...
INFO 05/11/2026 06:30:23 PM gpt_image.py ln 152 [gpt-image] Model: gpt-image-1.5, size: auto, quality: medium
INFO 05/11/2026 06:30:23 PM gpt_image.py ln 129 [gpt-image] Resolving image URL to local file: /tsai/repo/drupal/web/sites/default/files/cbt/dev/upload/2026-05-11-16aa06ae-9928-42b4-8a74-92012cc44673.webp
INFO 05/11/2026 06:30:23 PM gpt_image.py ln 161 [gpt-image] Using images.edit with 1 input image(s)
INFO 05/11/2026 06:30:53 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/images/edits "HTTP/1.1 200 OK"
INFO 05/11/2026 06:30:53 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format webp
INFO 05/11/2026 06:30:53 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11-2.webp
INFO 05/11/2026 06:31:20 PM file.py ln 23 api token is 76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001
INFO 05/11/2026 06:31:20 PM file.py ln 25 my_site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 06:31:21 PM file.py ln 32 my_wp_token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzg1MjQyODEsIm5iZiI6MTc3ODUyNDI4MSwiZXhwIjoxNzc5MTI5MDgxLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.SS437h7UqnJ6lMzAB6FtF71P834Y96Vabk2vGc3ytqg
INFO 05/11/2026 06:31:21 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzg1MjQyODEsIm5iZiI6MTc3ODUyNDI4MSwiZXhwIjoxNzc5MTI5MDgxLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.SS437h7UqnJ6lMzAB6FtF71P834Y96Vabk2vGc3ytqg
INFO 05/11/2026 06:31:21 PM image.py ln 220 filename is 2026-05-11-2.webp
INFO 05/11/2026 06:31:21 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-11-2.webp'>}
INFO 05/11/2026 07:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 07:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 07:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 07:07:47 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/11/2026 07:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 07:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 07:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 07:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 07:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/11/2026 07:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 07:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 07:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 07:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 07:07:50 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 07:07:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 07:07:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 07:07:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 07:07:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 07:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 07:07:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 07:07:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 07:07:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 07:07:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 07:07:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 07:07:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 07:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 07:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 07:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 07:07:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 07:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 07:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 07:07:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 07:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 07:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/11/2026 07:07:53 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 08:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 08:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 08:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 08:05:47 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/11/2026 08:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 08:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 08:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 08:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 08:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/11/2026 08:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 08:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 08:05:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 08:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 08:05:50 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/11/2026 08:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 08:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 08:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 08:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 08:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 08:05:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 08:05:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 08:05:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 08:05:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 08:05:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/11/2026 08:05:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 08:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 08:05:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 08:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 08:05:53 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/11/2026 08:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 08:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 08:05:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 08:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 08:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 08:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 09:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 09:06:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 09:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 09:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 09:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 09:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 09:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 09:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 09:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/11/2026 09:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 09:06:50 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/11/2026 09:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 09:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 09:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 09:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 09:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/11/2026 09:06:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 09:06:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 09:06:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 09:06:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 09:06:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 09:06:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/11/2026 09:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 09:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 09:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 09:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 09:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 09:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 10:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 10:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 10:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 10:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/11/2026 10:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 10:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 10:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 10:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 10:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/11/2026 10:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/11/2026 10:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 10:05:49 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 10:05:49 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 10:05:49 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 10:05:49 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 10:05:49 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 10:05:49 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/11/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/11/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 11:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 11:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/11/2026 11:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 11:06:47 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/11/2026 11:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/11/2026 11:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 11:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/11/2026 11:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/11/2026 11:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/11/2026 11:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/11/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/11/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 11:06:49 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/11/2026 11:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/11/2026 11:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 11:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/11/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 11:06:50 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/11/2026 11:06:50 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/11/2026 11:06:50 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/11/2026 11:06:50 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/11/2026 11:06:50 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/11/2026 11:06:50 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/11/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/11/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/11/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/11/2026 11:06:52 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/11/2026 11:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/11/2026 11:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/11/2026 11:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/11/2026 11:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/11/2026 11:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/11/2026 11:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 12:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 12:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:07:47 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 12:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 12:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 12:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 12:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/12/2026 12:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 12:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 12:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:07:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 12:07:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 12:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:07:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 12:07:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 12:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 12:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 12:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 12:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:07:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 12:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 12:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 12:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 12:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 12:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 01:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:06:47 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/12/2026 01:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 01:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 01:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 01:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/12/2026 01:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 01:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 01:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 01:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 01:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 02:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:05:47 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/12/2026 02:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 02:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 02:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 02:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 02:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/12/2026 02:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 02:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 02:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/12/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 02:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 02:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 03:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:06:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 03:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 03:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 03:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 03:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 03:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:06:50 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/12/2026 03:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 03:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 03:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 03:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 03:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:20:32 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/12/2026 04:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 04:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:47 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/12/2026 04:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 04:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 04:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 04:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/12/2026 04:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:50 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/12/2026 04:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 04:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 04:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 04:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 04:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:53 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 04:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 04:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:12:18 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/12/2026 05:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 05:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 05:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 05:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 05:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 05:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/12/2026 05:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 05:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 05:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 05:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 05:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 06:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 06:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 06:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 06:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 06:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 06:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:05:50 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/12/2026 06:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 06:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 06:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 06:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 06:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:05:53 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/12/2026 06:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 06:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 06:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 06:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 06:05:53 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 06:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 06:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/12/2026 06:05:53 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/12/2026 06:05:53 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/12/2026 06:05:53 AM cron_common.py ln 414 Character articles: 100
INFO 05/12/2026 06:05:53 AM create_articles.py ln 126 Character articles loaded (0.51s)
INFO 05/12/2026 06:05:53 AM create_articles.py ln 128 Setup complete (0.94s total)
INFO 05/12/2026 06:05:53 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/12/2026 06:05:53 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260512_060553_news_Hawk.log
INFO 05/12/2026 06:05:53 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/12/2026 06:05:54 AM article_creation_service.py ln 771 WordPress authentication successful (0.35s)
INFO 05/12/2026 06:05:54 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/12/2026 06:05:54 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.58s)
INFO 05/12/2026 06:05:54 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/12/2026 06:05:54 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/12/2026 06:05:54 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/12/2026 06:05:54 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/12/2026 06:05:54 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/12/2026 06:05:56 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/12/2026 06:05:56 AM chat.py ln 159 Found 8 results
INFO 05/12/2026 06:05:56 AM article_creation_service.py ln 771 Found 8 search results (1.92s)
INFO 05/12/2026 06:05:56 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260512_060553_news_Hawk_search.md
INFO 05/12/2026 06:05:56 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/12/2026 06:08:57 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/12/2026 06:08:57 AM article_creation_service.py ln 771 Generated article - Hawk’s Monday Brief: Iran talks on life support; three‑day Ukraine ceasefire; Hantavirus cases confirmed; Starmer digs in; FCC row; WHCD suspect pleads not guilty (180.92s)
INFO 05/12/2026 06:08:57 AM article_creation_service.py ln 771 Created WP post 1224 (0.11s)
INFO 05/12/2026 06:09:04 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/12/2026 06:09:04 AM wp.py ln 860 Prompt: Create a dramatic editorial news-collage featured image for a global affairs briefing. Center a sleek world map or newsroom desk under moody blue-gray lighting, with layered visual panels showing: a tense Persian Gulf/Strait of Hormuz with oil tanker silhouettes and naval ships; a Ukraine battlefield ceasefire symbol with a white flag over a muted blue-and-yellow horizon; a quarantined cruise ship with medical teams in protective suits and biocontainment transport; London’s Westminster silhouette with a determined prime-minister-like figure at a podium; Washington media-regulation imagery with broadcast towers, microphones, and the U.S. Capitol; and a courthouse gavel with security barriers. Use a serious, urgent tone, high-contrast cinematic lighting, polished magazine-cover composition, realistic but not photorealistic, no readable text, no logos, no identifiable real-person likenesses, 16:9 aspect ratio.
INFO 05/12/2026 06:09:04 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/12/2026 06:09:47 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/12/2026 06:09:47 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/12/2026 06:09:47 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-12.jpeg
INFO 05/12/2026 06:09:47 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-12.jpeg
INFO 05/12/2026 06:09:47 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NTY1OTU0LCJuYmYiOjE3Nzg1NjU5NTQsImV4cCI6MTc3OTE3MDc1NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.7hn6yDcIPnlUGYoX62bGRlfW0UmLTKEJ-p44ph2MONM
INFO 05/12/2026 06:09:47 AM image.py ln 220 filename is 2026-05-12.webp
INFO 05/12/2026 06:09:47 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-12.webp'>}
INFO 05/12/2026 06:09:48 AM article_creation_service.py ln 771 Featured image posted (50.75s)
INFO 05/12/2026 06:09:58 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/12/2026 06:09:58 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial news-collage illustration for a global affairs briefing, tense and urgent but polished. A dark navy-and-charcoal world map fills the background, overlaid with faint grid lines, wire-service ticker text, and red alert markers. In the foreground, divide the scene into layered symbolic panels: a shadowed oil tanker and naval silhouettes near the Strait of Hormuz under a red-orange dawn; a cracked battlefield landscape with a small white ceasefire flag and three glowing calendar pages marked “72 hours”; a quarantined cruise ship lit by cold medical-blue lights, with hazmat-suited figures and transparent biocontainment barriers; the silhouette of London’s Parliament under storm clouds; a Washington broadcast tower with signal waves tangled in red censor bars; and a courthouse façade with sealed document boxes and bound archive files under a reading-room lamp.
Use a sophisticated magazine-cover style, high contrast, semi-realistic digital painting with subtle halftone texture, dramatic lighting, muted blues and grays punctuated by emergency red, amber, and clinical cyan accents. No recognizable faces, no gore, no logos, no legible real newspaper names. Mood: geopolitical uncertainty, public-health containment, legal scrutiny, and media tension. Wide 16:9 composition, sharp focal points, layered depth, atmospheric haze, premium editorial illustration aesthetic.
INFO 05/12/2026 06:09:58 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/12/2026 06:10:49 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/12/2026 06:10:50 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/12/2026 06:10:50 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-12-1.jpeg
INFO 05/12/2026 06:10:50 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-12-1.jpeg
INFO 05/12/2026 06:10:50 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NTY1OTU0LCJuYmYiOjE3Nzg1NjU5NTQsImV4cCI6MTc3OTE3MDc1NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.7hn6yDcIPnlUGYoX62bGRlfW0UmLTKEJ-p44ph2MONM
INFO 05/12/2026 06:10:50 AM image.py ln 220 filename is 2026-05-12-1.webp
INFO 05/12/2026 06:10:50 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-12-1.webp'>}
INFO 05/12/2026 06:10:50 AM article_creation_service.py ln 771 Secondary image uploaded (62.22s)
INFO 05/12/2026 06:10:50 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/12/2026 06:10:50 AM wp.py ln 1018 Post content updated successfully for post 1224
INFO 05/12/2026 06:10:50 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/12/2026 06:10:53 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/12/2026 06:11:00 AM chat.py ln 348 AI comment: The article accurately represents the key facts from the sources across all major story threads: Trump rejecting Iran's peace proposal with Energy Secretary Wright's quote about returning to "the military method to open the strait" (Politico), the Ukraine ceasefire (Reuters), hantavirus cases among cruise ship evacuees with Nebraska quarantine operations (Politico/FT/CNN), Starmer vowing to stay on after local election losses (CNN), the FCC's lone Democratic commissioner's "campaign of censorship" accusation (CNN), the WHCD suspect pleading not guilty (AP), and the New York Epstein files readi
INFO 05/12/2026 06:11:00 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/12/2026 06:11:01 AM article_creation_service.py ln 771 Fact-check comment posted (10.22s)
INFO 05/12/2026 06:11:01 AM article_creation_service.py ln 771 Article creation completed successfully (total: 307.34s)
INFO 05/12/2026 06:11:01 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/12/2026 06:11:01 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/12/2026 06:11:01 AM create_articles.py ln 204 Script completed (308.29s total)
INFO 05/12/2026 07:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 07:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:06:47 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/12/2026 07:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 07:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 07:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 07:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/12/2026 07:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 07:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 07:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:06:50 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/12/2026 07:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 07:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 07:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 07:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 07:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 07:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 07:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:06:53 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/12/2026 07:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 07:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 07:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 07:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 07:06:53 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 07:06:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 07:06:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/12/2026 07:06:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/12/2026 07:06:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/12/2026 07:06:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/12/2026 08:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 08:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 08:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 08:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 08:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 08:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/12/2026 08:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/12/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 08:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 08:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/12/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/12/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/12/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/12/2026 09:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:06:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 09:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:06:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 09:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 09:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 09:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 09:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/12/2026 09:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:06:51 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/12/2026 09:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 09:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:06:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 09:06:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 09:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 09:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 09:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 09:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 09:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 09:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 09:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 09:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 09:06:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 09:06:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 09:06:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/12/2026 09:06:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/12/2026 09:06:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/12/2026 09:06:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/12/2026 10:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 10:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 10:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 10:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 10:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 10:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/12/2026 10:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 10:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 10:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 10:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 10:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 10:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 10:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 10:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/12/2026 10:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/12/2026 10:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/12/2026 10:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/12/2026 11:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 11:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 11:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 11:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 11:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 11:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 11:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 11:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 11:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 11:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 11:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 11:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 11:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 11:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 11:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 11:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 11:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 11:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 11:05:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/12/2026 11:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/12/2026 11:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/12/2026 11:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/12/2026 11:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/12/2026 11:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/12/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 12:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 12:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 12:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 12:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/12/2026 12:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 12:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 12:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 12:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 01:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:05:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 01:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 01:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 01:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 01:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/12/2026 01:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 01:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 01:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 01:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 01:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 01:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 01:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 01:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 01:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 01:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 02:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:06:47 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/12/2026 02:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 02:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 02:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 02:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/12/2026 02:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 02:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 02:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 02:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 02:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 02:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 02:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 02:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 03:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:05:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 03:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 03:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 03:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 03:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 03:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 03:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:05:49 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/12/2026 03:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 03:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 03:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 03:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 03:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 03:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 03:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 03:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 03:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 04:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 04:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 04:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 04:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 04:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/12/2026 04:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:50 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 04:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 04:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 04:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 04:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 04:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 05:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 05:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:07:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 05:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 05:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 05:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 05:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 05:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 05:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 05:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:07:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 05:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 05:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:07:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 05:07:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 05:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 05:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 05:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 05:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 05:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 05:07:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 05:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 05:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 05:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 05:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 05:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 05:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:02:47 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/12/2026 06:02:48 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/12/2026 06:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 06:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:06:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/12/2026 06:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 06:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 06:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 06:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/12/2026 06:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 06:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 07:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 07:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 07:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 07:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 07:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 07:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/12/2026 07:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 07:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/12/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 08:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 08:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 08:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 08:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 08:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 08:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/12/2026 08:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 08:13:51 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/12/2026 09:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 09:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 09:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 09:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 09:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 09:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/12/2026 09:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 09:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 09:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 10:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 10:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:07:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/12/2026 10:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 10:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 10:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 10:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/12/2026 10:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 10:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 10:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:07:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 10:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 10:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:07:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 10:07:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 10:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 10:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 10:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 10:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 10:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 10:07:52 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/12/2026 10:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 10:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 10:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 10:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 10:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 10:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 11:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/12/2026 11:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:06:47 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/12/2026 11:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/12/2026 11:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/12/2026 11:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/12/2026 11:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/12/2026 11:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/12/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:06:50 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/12/2026 11:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/12/2026 11:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/12/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/12/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/12/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/12/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/12/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/12/2026 11:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/12/2026 11:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/12/2026 11:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/12/2026 11:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/12/2026 11:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/12/2026 11:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/12/2026 11:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 12:00:33 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/13/2026 12:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 12:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 12:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 12:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 12:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 12:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/13/2026 12:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 12:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 12:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 12:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 12:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 12:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 12:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 12:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 12:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 01:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:07:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 01:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 01:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 01:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 01:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/13/2026 01:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 01:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:07:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 01:07:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 01:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:07:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 01:07:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 01:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 01:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 01:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 01:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 01:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 01:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 01:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 01:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 02:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 02:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 02:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 02:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 02:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 02:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 02:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/13/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 02:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 03:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:05:47 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/13/2026 03:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 03:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 03:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 03:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/13/2026 03:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 03:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 03:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/13/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 03:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 04:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:47 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 05/13/2026 04:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 04:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 04:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 04:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 04:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 04:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 04:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 04:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 04:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 04:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 04:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 04:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 04:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 05:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 05:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 05:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 05:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 05:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 05:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 05:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 06:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/13/2026 06:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 06:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 06:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 06:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 06:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 06:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 06:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 06:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 06:05:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 06:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 06:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/13/2026 06:05:52 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/13/2026 06:05:52 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/13/2026 06:05:53 AM cron_common.py ln 414 Character articles: 100
INFO 05/13/2026 06:05:53 AM create_articles.py ln 126 Character articles loaded (0.49s)
INFO 05/13/2026 06:05:53 AM create_articles.py ln 128 Setup complete (0.91s total)
INFO 05/13/2026 06:05:53 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/13/2026 06:05:53 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260513_060553_news_Hawk.log
INFO 05/13/2026 06:05:53 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/13/2026 06:05:53 AM article_creation_service.py ln 771 WordPress authentication successful (0.32s)
INFO 05/13/2026 06:05:53 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/13/2026 06:05:54 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.50s)
INFO 05/13/2026 06:05:54 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/13/2026 06:05:54 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/13/2026 06:05:54 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/13/2026 06:05:54 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/13/2026 06:05:54 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/13/2026 06:05:55 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/13/2026 06:05:55 AM chat.py ln 159 Found 8 results
INFO 05/13/2026 06:05:55 AM article_creation_service.py ln 771 Found 8 search results (1.71s)
INFO 05/13/2026 06:05:55 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260513_060553_news_Hawk_search.md
INFO 05/13/2026 06:05:55 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/13/2026 06:07:18 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/13/2026 06:07:18 AM article_creation_service.py ln 771 Generated article - Hawk’s Tuesday Brief: Trump’s Iran calculus collides with kitchen‑table costs; FDA chief exits; TikTok fights EU label; cruise passenger speaks from quarantine (82.52s)
INFO 05/13/2026 06:07:18 AM article_creation_service.py ln 771 Created WP post 1229 (0.11s)
INFO 05/13/2026 06:07:28 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/13/2026 06:07:28 AM wp.py ln 860 Prompt: Create a 16:9 editorial news illustration showing a tense global-policy crossroads: the White House in the background under dramatic evening light, with a gas pump, grocery bag, and receipt in the foreground symbolizing household costs. Add subtle visual elements around the scene: a glowing Middle East map with a ceasefire line, an empty FDA office desk with pill bottles and a stethoscope, a smartphone with a generic short-video app icon facing an EU-style courthouse, and a distant cruise ship behind quarantine tape. Use a polished digital newsroom style, realistic but slightly symbolic, muted red-white-blue palette with hints of amber and teal, high contrast, serious tone. No readable text, no logos, no caricatures, no recognizable public figures.
INFO 05/13/2026 06:07:28 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/13/2026 06:08:20 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/13/2026 06:08:21 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/13/2026 06:08:21 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-13.jpeg
INFO 05/13/2026 06:08:21 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-13.jpeg
INFO 05/13/2026 06:08:21 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NjUyMzUzLCJuYmYiOjE3Nzg2NTIzNTMsImV4cCI6MTc3OTI1NzE1MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QtXBLnv759VFsH5d5HLj738afkNLiAgqmgh_1HwI5Xc
INFO 05/13/2026 06:08:21 AM image.py ln 220 filename is 2026-05-13.webp
INFO 05/13/2026 06:08:21 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-13.webp'>}
INFO 05/13/2026 06:08:21 AM article_creation_service.py ln 771 Featured image posted (63.48s)
INFO 05/13/2026 06:08:32 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/13/2026 06:08:32 AM wp.py ln 895 Secondary Image Prompt: **Image prompt:**
Create a cinematic editorial illustration for a political news brief, showing a tense “global pressure dashboard” on a kitchen table. In the foreground, an American household table holds a crumpled grocery receipt, a gas pump nozzle, a half-full coffee mug, and scattered coins, lit by cold morning light. Behind it, a large semi-transparent world map glows with connected crisis points: the Persian Gulf marked by a fragile ceasefire icon, Beijing highlighted with trade-route lines, Brussels shown with a digital “gatekeeper” lock symbol, and a cruise ship isolated inside a hazy quarantine bubble. To one side, include abstract FDA-related imagery — prescription bottles, a medical cross, and a vacant executive chair — suggesting regulatory uncertainty. Add subtle floating social-media interface shapes and data streams around the Europe/tech area.
Mood should be anxious but restrained, like a high-stakes policy briefing colliding with everyday household costs. Use deep navy, steel gray, muted red, and amber gas-station tones, with realistic textures on paper, metal, glass, and digital holograms. Style: sophisticated magazine cover illustration, semi-realistic, high detail, dramatic lighting, layered composition, no specific politician likenesses, no readable brand logos, no sensational violence. Aspect ratio 16:9.
INFO 05/13/2026 06:08:32 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/13/2026 06:09:23 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/13/2026 06:09:23 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/13/2026 06:09:23 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-13-1.jpeg
INFO 05/13/2026 06:09:23 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-13-1.jpeg
INFO 05/13/2026 06:09:23 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NjUyMzUzLCJuYmYiOjE3Nzg2NTIzNTMsImV4cCI6MTc3OTI1NzE1MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.QtXBLnv759VFsH5d5HLj738afkNLiAgqmgh_1HwI5Xc
INFO 05/13/2026 06:09:24 AM image.py ln 220 filename is 2026-05-13-1.webp
INFO 05/13/2026 06:09:24 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-13-1.webp'>}
INFO 05/13/2026 06:09:24 AM article_creation_service.py ln 771 Secondary image uploaded (62.45s)
INFO 05/13/2026 06:09:24 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/13/2026 06:09:24 AM wp.py ln 1018 Post content updated successfully for post 1229
INFO 05/13/2026 06:09:24 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/13/2026 06:09:26 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/13/2026 06:09:33 AM chat.py ln 348 AI comment: The article accurately represents its sources across all major story lines — Trump's dismissal of Americans' financial concerns regarding the Iran war, Hegseth's ceasefire comments and exact quote, FDA chief Makary's resignation amid agency turmoil and his clashes with drugmakers/antiabortion advocates/vaping industry, the hantavirus cruise ship quarantine story, and TikTok's EU gatekeeper challenge at the Court of Justice. The article's description of the video game protest by the artists behind Trump Mall statues also matches Source 1.
One minor note: the article describes Trump's remark as
INFO 05/13/2026 06:09:33 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/13/2026 06:09:33 AM article_creation_service.py ln 771 Fact-check comment posted (8.70s)
INFO 05/13/2026 06:09:33 AM article_creation_service.py ln 771 Article creation completed successfully (total: 220.02s)
INFO 05/13/2026 06:09:33 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/13/2026 06:09:33 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/13/2026 06:09:33 AM create_articles.py ln 204 Script completed (220.94s total)
INFO 05/13/2026 07:07:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:07:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 07:07:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:07:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 07:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 07:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 07:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 07:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/13/2026 07:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 07:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 07:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:07:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 07:07:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 07:07:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:07:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 07:07:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 07:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 07:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 07:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 07:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:07:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/13/2026 07:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 07:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 07:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 07:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/13/2026 07:07:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 07:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 07:07:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/13/2026 07:07:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/13/2026 07:07:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/13/2026 07:07:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/13/2026 08:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 08:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 08:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 08:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 08:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 08:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 08:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 08:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 08:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/13/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/13/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/13/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/13/2026 09:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 09:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 09:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 09:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 09:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 09:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/13/2026 09:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 09:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 09:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 09:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 09:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 09:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 09:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 09:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 09:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 09:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 09:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 09:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 09:05:53 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 09:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 09:05:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/13/2026 09:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/13/2026 09:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/13/2026 09:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/13/2026 10:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 10:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 10:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 10:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 10:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 10:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/13/2026 10:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 10:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 10:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 10:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 10:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 10:05:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 10:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 10:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 10:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 10:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 10:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 10:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 10:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 10:05:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 10:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 10:05:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/13/2026 10:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/13/2026 10:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/13/2026 10:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/13/2026 10:35:05 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 11:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 11:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 11:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 11:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 11:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 11:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/13/2026 11:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 11:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 11:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 11:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 11:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 11:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 11:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 11:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 11:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 11:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 11:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 11:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 11:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 11:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 11:05:53 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/13/2026 11:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/13/2026 11:05:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/13/2026 11:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/13/2026 11:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/13/2026 11:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/13/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 12:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 12:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 12:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 12:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/13/2026 12:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 12:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 12:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 12:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 01:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 01:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 01:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 01:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 01:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 01:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:06:50 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 01:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 01:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 01:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 01:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 01:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 01:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 02:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 02:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 02:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 02:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 02:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/13/2026 02:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:05:50 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 02:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 02:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 02:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 02:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 02:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/13/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 02:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 02:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 03:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 03:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 03:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 03:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 03:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/13/2026 03:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:06:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 03:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/13/2026 03:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 03:06:53 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 03:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 03:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 03:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 03:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 04:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 04:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 04:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 04:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 04:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 04:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 04:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 05:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 05:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 05:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 05:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 05:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/13/2026 05:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 05:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 05:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 05:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 05:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 05:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 05:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 06:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 06:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 06:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 06:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 06:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/13/2026 06:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 06:05:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:51 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 06:05:51 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 06:05:51 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:51 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 06:05:51 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 06:05:51 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 06:05:51 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 06:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 06:05:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 06:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 06:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 06:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 06:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 06:05:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 06:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 06:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 06:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 07:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 07:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 07:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 07:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 07:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 07:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/13/2026 07:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 07:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 08:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 08:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 08:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 08:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 08:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 08:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/13/2026 08:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:50 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/13/2026 08:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 08:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 08:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 08:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 08:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 09:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 09:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/13/2026 09:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 09:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 09:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 09:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/13/2026 09:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 09:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 09:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 09:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 09:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 09:05:52 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/13/2026 09:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 09:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 09:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 09:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 09:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 09:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 10:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 10:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:07:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 10:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 10:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 10:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 10:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/13/2026 10:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 10:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 10:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:07:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 10:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 10:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:07:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 10:07:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 10:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 10:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 10:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 10:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 10:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 10:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 10:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 10:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 10:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 10:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 10:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/13/2026 10:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 11:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/13/2026 11:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/13/2026 11:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/13/2026 11:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/13/2026 11:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/13/2026 11:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/13/2026 11:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/13/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 11:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/13/2026 11:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/13/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/13/2026 11:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/13/2026 11:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/13/2026 11:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/13/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/13/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/13/2026 11:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/13/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/13/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/13/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/13/2026 11:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 12:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 12:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 12:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 12:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 12:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 12:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 12:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 12:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 12:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:06:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 12:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 12:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 12:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 12:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 12:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:06:53 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/14/2026 12:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 12:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 12:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 12:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 12:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:06:48 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 01:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:06:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 01:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 01:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 01:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 01:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/14/2026 01:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 01:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:06:51 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 01:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 01:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:06:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 01:06:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 01:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 01:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 01:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 01:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 01:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 01:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 01:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 01:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 02:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 02:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 02:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 02:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 02:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/14/2026 02:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 02:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 02:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:14:17 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/14/2026 03:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 03:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 03:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 03:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 03:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 03:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/14/2026 03:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 03:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 03:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 03:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 03:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 03:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 03:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:06:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:06:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 04:06:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 04:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 04:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 04:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 04:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/14/2026 04:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 04:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:06:50 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 04:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 04:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 04:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 04:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/14/2026 04:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 04:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 04:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 04:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 04:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 04:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 04:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 05:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:07:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 05:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 05:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 05:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 05:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/14/2026 05:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 05:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:07:50 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/14/2026 05:07:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 05:07:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:07:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 05:07:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 05:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 05:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 05:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:07:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 05:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 05:07:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:07:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 05:07:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 05:07:53 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 05:07:53 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 06:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:06:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 06:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 06:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 06:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 06:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 06:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 06:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 06:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 06:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 06:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 06:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 06:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 06:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/14/2026 06:06:52 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/14/2026 06:06:52 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/14/2026 06:06:53 AM cron_common.py ln 414 Character articles: 100
INFO 05/14/2026 06:06:53 AM create_articles.py ln 126 Character articles loaded (0.50s)
INFO 05/14/2026 06:06:53 AM create_articles.py ln 128 Setup complete (0.92s total)
INFO 05/14/2026 06:06:53 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/14/2026 06:06:53 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260514_060653_news_Hawk.log
INFO 05/14/2026 06:06:53 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/14/2026 06:06:53 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/14/2026 06:06:53 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/14/2026 06:06:53 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.50s)
INFO 05/14/2026 06:06:54 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/14/2026 06:06:54 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/14/2026 06:06:54 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/14/2026 06:06:54 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/14/2026 06:06:54 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/14/2026 06:06:55 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/14/2026 06:06:55 AM chat.py ln 159 Found 8 results
INFO 05/14/2026 06:06:55 AM article_creation_service.py ln 771 Found 8 search results (1.71s)
INFO 05/14/2026 06:06:55 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260514_060653_news_Hawk_search.md
INFO 05/14/2026 06:06:55 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/14/2026 06:07:39 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/14/2026 06:07:39 AM article_creation_service.py ln 771 Generated article - Hawk’s Wednesday Brief: Trump’s Beijing bet; Kyiv under fire; Louisiana’s map fight; and the ‘cars as TikTok’ debate (43.51s)
INFO 05/14/2026 06:07:39 AM article_creation_service.py ln 771 Created WP post 1234 (0.12s)
INFO 05/14/2026 06:07:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/14/2026 06:07:47 AM wp.py ln 860 Prompt: **Featured image prompt:**
Create a cinematic editorial news illustration in a 16:9 aspect ratio showing a tense global power briefing: in the foreground, a glowing digital world map table with highlighted nodes linking Washington, Beijing, Kyiv, and Louisiana; two silhouetted leaders face each other across the table, with faint outlines of tech executives, microchips, rare earth minerals, and AI circuitry behind them. On one side, Kyiv’s skyline is dimly visible under drone and missile trails with air-defense lights; on the other, a connected car is overlaid with data streams and surveillance-style interface graphics. In the lower corner, a subtle U.S. congressional district map motif suggests redistricting battles. Style: high-end geopolitical magazine cover, moody blue-red lighting, sharp contrast, realistic but slightly stylized, serious and urgent tone. No text, no logos, no caricature.
INFO 05/14/2026 06:07:47 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/14/2026 06:08:18 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/14/2026 06:08:18 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/14/2026 06:08:18 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-14.jpeg
INFO 05/14/2026 06:08:19 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-14.jpeg
INFO 05/14/2026 06:08:19 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NzM4ODEzLCJuYmYiOjE3Nzg3Mzg4MTMsImV4cCI6MTc3OTM0MzYxMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.3IuG9Ht4RFdSieTex0EPgA_XFNfx8YjD5QdDQTV0UXk
INFO 05/14/2026 06:08:19 AM image.py ln 220 filename is 2026-05-14.webp
INFO 05/14/2026 06:08:19 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-14.webp'>}
INFO 05/14/2026 06:08:19 AM article_creation_service.py ln 771 Featured image posted (40.33s)
INFO 05/14/2026 06:08:31 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/14/2026 06:08:31 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial illustration for a global news briefing: a dimly lit, high-stakes geopolitical command table viewed from above, blending Beijing diplomacy, war, technology, and U.S. political power. At the center, a glowing glass tabletop displays a digital world map with luminous data routes connecting Washington, Beijing, Kyiv, and the U.S. Gulf Coast. On one side of the table are abstract silhouettes of diplomats and tech executives; on the other, the faint outline of a Chinese skyline with red lantern-like reflections and cool steel architecture.
Layer in visual motifs: microchips and rare-earth mineral textures embedded in the map, a connected car rendered as a translucent wireframe streaming data particles, small drone silhouettes and missile trails over a darkened Kyiv skyline, and a fragmented congressional district map shape subtly resembling Louisiana. Add thin financial chart lines and Federal Reserve-style market graphs hovering in the background.
Mood: tense, intelligent, global, urgent.
Color palette: deep navy, charcoal black, muted crimson, electric blue, pale gold, and cold white highlights.
Style: sophisticated digital painting / editorial magazine cover, semi-realistic with subtle collage elements, high contrast, atmospheric haze, glossy reflections, sharp details, no readable text, no logos, no caricatures.
Composition: wide horizontal format, balanced but dynamic, with the glowing data map as the focal point and all themes orbiting around it like interconnected power networks.
INFO 05/14/2026 06:08:31 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/14/2026 06:09:14 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/14/2026 06:09:14 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/14/2026 06:09:14 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-14-1.jpeg
INFO 05/14/2026 06:09:14 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-14-1.jpeg
INFO 05/14/2026 06:09:14 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4NzM4ODEzLCJuYmYiOjE3Nzg3Mzg4MTMsImV4cCI6MTc3OTM0MzYxMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.3IuG9Ht4RFdSieTex0EPgA_XFNfx8YjD5QdDQTV0UXk
INFO 05/14/2026 06:09:14 AM image.py ln 220 filename is 2026-05-14-1.webp
INFO 05/14/2026 06:09:14 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-14-1.webp'>}
INFO 05/14/2026 06:09:15 AM article_creation_service.py ln 771 Secondary image uploaded (55.61s)
INFO 05/14/2026 06:09:15 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/14/2026 06:09:15 AM wp.py ln 1018 Post content updated successfully for post 1234
INFO 05/14/2026 06:09:15 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/14/2026 06:09:17 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/14/2026 06:09:23 AM chat.py ln 348 AI comment: The article accurately represents its sources across all major topics: Trump's Beijing visit with Musk and Jensen Huang, the Kyiv drone/missile strike injuring at least four, the Louisiana redistricting story, the South Carolina/Clyburn seat blocking, the connected cars/TikTok analysis, FDA chief Makary's resignation, ICE leadership changes, and the ICE detention release story.
One minor note: the article describes the Washington Post's cars-as-TikTok piece as a "Washington Post analysis," which is accurate, but frames it broadly around "vehicles' data collection and potential foreign leverag
INFO 05/14/2026 06:09:23 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/14/2026 06:09:23 AM article_creation_service.py ln 771 Fact-check comment posted (7.87s)
INFO 05/14/2026 06:09:23 AM article_creation_service.py ln 771 Article creation completed successfully (total: 150.23s)
INFO 05/14/2026 06:09:23 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/14/2026 06:09:23 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/14/2026 06:09:23 AM create_articles.py ln 204 Script completed (151.15s total)
INFO 05/14/2026 07:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 07:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:07:47 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/14/2026 07:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 07:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 07:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 07:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/14/2026 07:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:07:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 07:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:07:50 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/14/2026 07:07:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 07:07:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:07:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 07:07:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 07:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 07:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:07:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 07:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 07:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 07:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:07:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 07:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 07:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 07:07:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 07:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 07:07:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/14/2026 07:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/14/2026 07:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/14/2026 07:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/14/2026 08:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 08:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:47 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 08:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 08:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 08:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 08:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/14/2026 08:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 08:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 08:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 08:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 08:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/14/2026 08:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/14/2026 08:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/14/2026 08:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/14/2026 09:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 09:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 09:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 09:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 09:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 09:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 09:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 09:06:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 09:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 09:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 09:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/14/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 09:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 09:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 09:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 09:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/14/2026 09:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/14/2026 09:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/14/2026 09:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/14/2026 10:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 10:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 10:05:47 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 05/14/2026 10:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 10:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 10:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 10:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 10:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/14/2026 10:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 10:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 10:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 10:05:50 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/14/2026 10:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 10:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 10:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 10:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 10:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 10:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 10:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 10:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 10:05:54 AM create_articles.py ln 93 JWT token obtained (0.48s)
INFO 05/14/2026 10:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 10:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 10:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 10:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 10:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/14/2026 10:05:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 10:05:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 10:05:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/14/2026 10:05:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/14/2026 10:05:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/14/2026 10:05:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/14/2026 11:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 11:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:47 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 11:06:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 11:06:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 11:06:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 11:06:47 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/14/2026 11:06:47 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:50 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 11:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 11:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 11:06:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 11:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 11:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 11:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 11:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 11:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 11:06:52 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/14/2026 11:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/14/2026 11:06:52 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/14/2026 11:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/14/2026 11:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/14/2026 11:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/14/2026 12:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 12:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:05:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 12:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 12:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 12:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 12:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/14/2026 12:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/14/2026 12:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 12:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 12:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 12:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 01:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:05:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 01:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 01:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 01:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 01:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/14/2026 01:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 01:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 01:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 01:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 01:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 01:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 01:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 01:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 01:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 01:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:00:10 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 02:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 02:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 02:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 02:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 02:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 02:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 02:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 02:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 02:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 02:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 02:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 02:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 02:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 02:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 02:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 02:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 02:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 02:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 02:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 02:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 02:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 02:57:48 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/14/2026 03:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 03:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:47 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/14/2026 03:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 03:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 03:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 03:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/14/2026 03:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 03:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 03:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 03:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 03:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 03:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 03:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 03:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 03:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 03:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 03:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 03:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 03:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 03:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 03:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 03:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 03:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 03:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:05:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 04:05:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 04:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 04:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 04:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 04:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/14/2026 04:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:05:50 PM create_articles.py ln 93 JWT token obtained (0.60s)
INFO 05/14/2026 04:05:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 04:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:05:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 04:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 04:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/14/2026 04:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 04:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 04:05:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 04:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 04:05:53 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 04:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 04:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 04:05:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 04:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 04:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 04:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:06:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:06:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 05:06:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 05:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 05:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 05:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 05:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/14/2026 05:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:06:50 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:06:50 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 05:06:50 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:06:50 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 05:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 05:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 05:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 05:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 05:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 05:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 05:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 05:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 05:06:53 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/14/2026 05:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 05:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 05:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 05:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 05:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 05:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 06:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:07:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 06:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 06:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 06:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 06:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/14/2026 06:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 06:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:07:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 06:07:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 06:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:07:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 06:07:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 06:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 06:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 06:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 06:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 06:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 06:07:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 06:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 06:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 06:07:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 06:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 06:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 06:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 07:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 07:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 07:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 07:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 07:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 07:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 07:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 07:13:41 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/14/2026 08:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 08:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 08:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 08:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 08:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 08:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/14/2026 08:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:50 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/14/2026 08:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 08:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 08:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 08:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/14/2026 08:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 08:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 08:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 08:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/14/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 09:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 09:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/14/2026 09:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 09:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 09:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 09:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/14/2026 09:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 09:06:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 09:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.07s)
INFO 05/14/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 10:09:19 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:09:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 10:09:20 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/14/2026 10:09:20 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 05/14/2026 10:09:20 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/14/2026 10:09:22 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:09:22 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 10:09:22 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/14/2026 10:09:22 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/14/2026 10:09:22 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/14/2026 10:09:24 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 10:09:24 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 10:09:24 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/14/2026 10:09:24 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/14/2026 10:09:24 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/14/2026 10:50:35 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/14/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/14/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/14/2026 11:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/14/2026 11:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/14/2026 11:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/14/2026 11:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.52s)
INFO 05/14/2026 11:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/14/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/14/2026 11:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/14/2026 11:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/14/2026 11:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 11:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/14/2026 11:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 11:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/14/2026 11:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/14/2026 11:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/14/2026 11:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/14/2026 11:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/14/2026 11:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/14/2026 11:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/14/2026 11:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/14/2026 11:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/14/2026 11:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/14/2026 11:18:10 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/14/2026 11:22:03 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/15/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 12:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 12:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 12:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 12:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 12:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 12:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 12:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 12:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 12:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 12:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 12:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 12:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 12:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 12:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 12:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/15/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 01:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 01:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 01:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 01:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 01:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 01:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 01:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/15/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 02:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 02:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 02:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 02:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 02:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 02:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 02:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 02:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 02:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 02:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 02:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 02:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 02:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 02:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 02:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 02:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 02:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 02:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/15/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 03:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 03:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/15/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 03:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 03:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 03:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:06:55 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/15/2026 03:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 03:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 03:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 03:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 03:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.61s)
INFO 05/15/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 04:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 04:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/15/2026 04:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 04:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 04:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 04:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 04:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 04:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 04:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 04:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 05:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:06:49 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/15/2026 05:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 05:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 05:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 05:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/15/2026 05:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:06:50 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/15/2026 05:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 05:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:06:52 AM create_articles.py ln 93 JWT token obtained (0.64s)
INFO 05/15/2026 05:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 05:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 05:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 05:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/15/2026 05:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 05:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 05:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 05:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 05:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 05:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 05:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:30:55 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/15/2026 06:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 06:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:07:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 06:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 06:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 06:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 06:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/15/2026 06:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 06:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 06:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 06:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 06:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 06:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 06:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 06:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 06:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 06:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:07:55 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/15/2026 06:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 06:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 06:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 06:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 06:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 06:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 06:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/15/2026 06:07:55 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/15/2026 06:07:55 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/15/2026 06:07:55 AM cron_common.py ln 414 Character articles: 100
INFO 05/15/2026 06:07:55 AM create_articles.py ln 126 Character articles loaded (0.54s)
INFO 05/15/2026 06:07:55 AM create_articles.py ln 128 Setup complete (1.07s total)
INFO 05/15/2026 06:07:55 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/15/2026 06:07:55 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260515_060755_news_Hawk.log
INFO 05/15/2026 06:07:55 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/15/2026 06:07:56 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/15/2026 06:07:56 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/15/2026 06:07:56 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.52s)
INFO 05/15/2026 06:07:56 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/15/2026 06:07:56 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/15/2026 06:07:56 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/15/2026 06:07:56 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/15/2026 06:07:56 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/15/2026 06:07:58 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/15/2026 06:07:58 AM chat.py ln 159 Found 8 results
INFO 05/15/2026 06:07:58 AM article_creation_service.py ln 771 Found 8 search results (1.86s)
INFO 05/15/2026 06:07:58 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260515_060755_news_Hawk_search.md
INFO 05/15/2026 06:07:58 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/15/2026 06:09:22 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 06:09:22 AM article_creation_service.py ln 771 Generated article - Hawk’s Thursday Brief: Markets defy rate jitters; Xi’s Taiwan warning to Trump; Hormuz flashpoint; abortion pill access upheld; Starmer turbulence (83.63s)
INFO 05/15/2026 06:09:22 AM article_creation_service.py ln 771 Created WP post 1239 (0.14s)
INFO 05/15/2026 06:09:29 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 06:09:29 AM wp.py ln 860 Prompt: **Featured image prompt:**
Create a dramatic editorial-style digital illustration for a global markets and geopolitics briefing. Show a split-world scene: in the foreground, a glowing Wall Street stock chart and semiconductor chip circuitry surge upward in neon blue and green, while a red inflation gauge and rising bond-yield arrows loom behind it. In the background, a tense geopolitical map spans Asia and the Middle East: Taiwan highlighted between abstract U.S. and China silhouettes, oil tankers near the Strait of Hormuz under stormy skies, and faint hints of Westminster turbulence with Big Ben in the distance. Add subtle symbols of U.S. domestic policy—a Supreme Court column silhouette and a small medical pill icon—integrated into the lower corner. Mood: high-stakes, volatile, interconnected, urgent. Style: polished financial-news magazine cover, cinematic lighting, sharp contrast, sophisticated color palette of navy, crimson, gold, and electric blue. No readable text, no logos, no caricatures. Wide 16:9 composition, suitable as a featured news image.
INFO 05/15/2026 06:09:29 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/15/2026 06:11:10 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/15/2026 06:11:10 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/15/2026 06:11:10 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15.jpeg
INFO 05/15/2026 06:11:10 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-15.jpeg
INFO 05/15/2026 06:11:10 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4ODI1Mjc2LCJuYmYiOjE3Nzg4MjUyNzYsImV4cCI6MTc3OTQzMDA3NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.JxvMGZnjCj6mnOdx7E4wy9Lyo6NpDlvYnXpQt1domXs
INFO 05/15/2026 06:11:11 AM image.py ln 220 filename is 2026-05-15.webp
INFO 05/15/2026 06:11:11 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15.webp'>}
INFO 05/15/2026 06:11:11 AM article_creation_service.py ln 771 Featured image posted (109.21s)
INFO 05/15/2026 06:11:19 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 06:11:19 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial illustration for a global markets and geopolitics news brief. Show a glowing, futuristic stock-market skyline at night, with soaring green and electric-blue candlestick charts rising like skyscrapers, interwoven with semiconductor circuit patterns and luminous AI-chip wafers. In the background, a tense world map projection spans the horizon: Taiwan and the Strait of Hormuz subtly highlighted in red-orange, with faint shipping lanes and oil tanker silhouettes cutting through dark waters. Above the scene, storm clouds gather around a large translucent inflation gauge and rising bond-yield curve, suggesting pressure despite market euphoria. Add subtle visual motifs: a neoclassical courthouse silhouette with a small medical pill icon, a shadowy Westminster clock tower in turbulence, and diplomatic silhouettes across a long table—generic, not identifiable politicians. Mood: high-stakes, volatile, uneasy optimism. Color palette: deep navy, graphite black, neon green, cobalt blue, warning red, amber oil-fire highlights. Style: sophisticated digital painting, Bloomberg/Financial Times editorial aesthetic, sharp lighting, layered depth, dramatic contrast, polished but not cluttered. No readable text, no logos, no recognizable real-person likenesses. Aspect ratio 16:9.
INFO 05/15/2026 06:11:19 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/15/2026 06:12:56 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/15/2026 06:12:56 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/15/2026 06:12:56 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-1.jpeg
INFO 05/15/2026 06:12:56 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-15-1.jpeg
INFO 05/15/2026 06:12:56 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4ODI1Mjc2LCJuYmYiOjE3Nzg4MjUyNzYsImV4cCI6MTc3OTQzMDA3NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.JxvMGZnjCj6mnOdx7E4wy9Lyo6NpDlvYnXpQt1domXs
INFO 05/15/2026 06:12:56 AM image.py ln 220 filename is 2026-05-15-1.webp
INFO 05/15/2026 06:12:56 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-1.webp'>}
INFO 05/15/2026 06:12:57 AM article_creation_service.py ln 771 Secondary image uploaded (105.27s)
INFO 05/15/2026 06:12:57 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/15/2026 06:12:57 AM wp.py ln 1018 Post content updated successfully for post 1239
INFO 05/15/2026 06:12:57 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/15/2026 06:13:02 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/15/2026 06:13:08 AM chat.py ln 348 AI comment: The article accurately represents the key facts from its sources across all major topics: Xi's Taiwan warning to Trump, Hormuz tensions (ship seized and another sunk), the UK Health Secretary resignation and Wes Streeting's potential leadership challenge to Starmer, the Supreme Court mifepristone ruling, the Alex Murdaugh "tainted jury" claim, the hantavirus doctor leaving isolation, and the market/Fed details including Warsh taking the helm and TSMC's $1.5 trillion chip demand forecast.
One minor note: the article describes Trump as a "Former President" in the Beijing diplomacy section, but
INFO 05/15/2026 06:13:08 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/15/2026 06:13:08 AM article_creation_service.py ln 771 Fact-check comment posted (11.52s)
INFO 05/15/2026 06:13:08 AM article_creation_service.py ln 771 Article creation completed successfully (total: 312.75s)
INFO 05/15/2026 06:13:08 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/15/2026 06:13:08 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/15/2026 06:13:08 AM create_articles.py ln 204 Script completed (313.82s total)
INFO 05/15/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 07:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/15/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 07:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 07:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 07:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 07:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 07:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 07:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:06:54 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/15/2026 07:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 07:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 07:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 07:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 07:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 07:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 07:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/15/2026 07:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 07:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/15/2026 07:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/15/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 08:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 08:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 08:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 08:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 08:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 08:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 08:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 08:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 08:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 08:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 08:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 08:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 08:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 08:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 08:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/15/2026 08:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 08:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/15/2026 08:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/15/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 09:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 09:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 09:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/15/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 09:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 09:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 09:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 09:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:05:55 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/15/2026 09:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 09:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 09:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 09:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 09:05:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 09:05:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 09:05:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/15/2026 09:05:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 09:05:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/15/2026 09:05:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 09:20:15 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/15/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/15/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/15/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 10:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 10:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/15/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 10:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 10:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 10:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 10:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 10:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 10:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:06:55 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/15/2026 10:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 10:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 10:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 10:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 10:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 10:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 10:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/15/2026 10:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 10:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 10:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 11:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/15/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/15/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 11:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 11:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 11:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 11:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 11:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 11:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 11:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 11:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 11:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/15/2026 11:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 11:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/15/2026 11:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 11:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/15/2026 11:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/15/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/15/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 12:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 12:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/15/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 12:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 12:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 12:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 12:05:54 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/15/2026 12:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 12:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 12:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 12:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 12:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 12:05:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 12:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 12:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/15/2026 12:05:55 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/15/2026 12:05:55 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/15/2026 12:05:55 PM cron_common.py ln 414 Character articles: 45
INFO 05/15/2026 12:05:55 PM create_articles.py ln 126 Character articles loaded (0.23s)
INFO 05/15/2026 12:05:55 PM create_articles.py ln 128 Setup complete (0.71s total)
INFO 05/15/2026 12:05:55 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/15/2026 12:05:55 PM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260515_120555_news_Dusty.log
INFO 05/15/2026 12:05:55 PM article_creation_service.py ln 771 Article creation started for character: Dusty
INFO 05/15/2026 12:05:55 PM article_creation_service.py ln 771 WordPress authentication successful (0.32s)
INFO 05/15/2026 12:05:55 PM article_creation_service.py ln 771 Fetched WP users (0.04s)
INFO 05/15/2026 12:05:55 PM article_creation_service.py ln 771 Loaded 45 articles for character (0.23s)
INFO 05/15/2026 12:05:56 PM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/15/2026 12:05:56 PM article_creation_service.py ln 771 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/15/2026 12:05:56 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/15/2026 12:05:56 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/15/2026 12:06:01 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/15/2026 12:06:01 PM chat.py ln 159 Found 5 results
INFO 05/15/2026 12:06:01 PM article_creation_service.py ln 771 Found 5 search results (5.71s)
INFO 05/15/2026 12:06:01 PM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260515_120555_news_Dusty_search.md
INFO 05/15/2026 12:06:01 PM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/15/2026 12:06:57 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 12:06:58 PM article_creation_service.py ln 771 Generated article - El Niño, Wildfires, and World Cup Heat: Why Summer 2026 Is Becoming a Global Weather Stress Test (56.26s)
INFO 05/15/2026 12:06:58 PM article_creation_service.py ln 771 Created WP post 1244 (0.09s)
INFO 05/15/2026 12:07:05 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 12:07:05 PM wp.py ln 860 Prompt: Create a dramatic editorial-style featured image showing summer 2026 as a global weather stress test: a large outdoor soccer stadium in North America under a blazing orange sun, with heat shimmer rising from the field and crowds seeking shade. In the background, split the sky into multiple weather hazards: smoky wildfire haze and distant flames on one side, towering thunderstorm clouds with lightning on the other, and a subtle Pacific Ocean temperature anomaly map/glowing red El Niño pattern arcing across the horizon. Include visual cues of extreme heat, wildfire smoke, and severe summer storms without using any logos, team names, or readable text. Cinematic realism, high contrast, urgent climate-news atmosphere, wide-angle composition, rich orange-red and storm-gray color palette, suitable for a serious meteorology and climate article.
INFO 05/15/2026 12:07:05 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/15/2026 12:08:57 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/15/2026 12:08:57 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/15/2026 12:08:57 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-2.jpeg
INFO 05/15/2026 12:08:57 PM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-15-2.jpeg
INFO 05/15/2026 12:08:57 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4ODQ2NzU1LCJuYmYiOjE3Nzg4NDY3NTUsImV4cCI6MTc3OTQ1MTU1NSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iy8QdYUENk8K0rvOzqPP9kF4o1fAWRNZ3SkjKjbpGN8
INFO 05/15/2026 12:08:57 PM image.py ln 220 filename is 2026-05-15-2.webp
INFO 05/15/2026 12:08:57 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-2.webp'>}
INFO 05/15/2026 12:08:58 PM article_creation_service.py ln 771 Featured image posted (120.21s)
INFO 05/15/2026 12:09:08 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/15/2026 12:09:08 PM wp.py ln 895 Secondary Image Prompt: Create a dramatic editorial-style digital illustration showing summer 2026 as a “global weather stress test.” In the foreground, a packed outdoor soccer stadium in North America sits under a blazing afternoon sun, with shimmering heat haze rising from the field and concrete stands. Players in generic soccer uniforms pause near midfield, visibly affected by heat, while fans seek shade and cooling mist stations. Above the stadium, the sky is divided into overlapping climate hazards: an orange-red wildfire smoke plume drifting across one side, dark thunderstorm clouds with distant lightning on the other, and a faint swirling Pacific Ocean heat pattern in the background symbolizing El Niño.
Use a wide cinematic composition with strong depth: stadium lights, crowded concourses, emergency weather screens, distant city skyline, and hazy mountains. The color palette should blend scorching reds, burnt oranges, smoky grays, and stormy blue-black tones, with harsh sunlight and atmospheric haze. Add subtle visual details like a heat-warning icon on a stadium display, blurred radar-like storm patterns in the sky, and ash particles suspended in the air. The mood should feel urgent, tense, and realistic, emphasizing compound climate risk without being apocalyptic.
Style: high-end climate journalism illustration, semi-realistic digital painting, cinematic lighting, detailed atmosphere, no readable text, no real team logos, no FIFA branding, no specific recognizable stadium, 16:9 aspect ratio.
INFO 05/15/2026 12:09:08 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/15/2026 12:10:54 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/15/2026 12:10:54 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/15/2026 12:10:54 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-3.jpeg
INFO 05/15/2026 12:10:54 PM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-15-3.jpeg
INFO 05/15/2026 12:10:54 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4ODQ2NzU1LCJuYmYiOjE3Nzg4NDY3NTUsImV4cCI6MTc3OTQ1MTU1NSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.iy8QdYUENk8K0rvOzqPP9kF4o1fAWRNZ3SkjKjbpGN8
INFO 05/15/2026 12:10:54 PM image.py ln 220 filename is 2026-05-15-3.webp
INFO 05/15/2026 12:10:54 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-15-3.webp'>}
INFO 05/15/2026 12:10:55 PM article_creation_service.py ln 771 Secondary image uploaded (116.72s)
INFO 05/15/2026 12:10:55 PM wp.py ln 989 Inserted image after second paragraph
INFO 05/15/2026 12:10:55 PM wp.py ln 1018 Post content updated successfully for post 1244
INFO 05/15/2026 12:10:55 PM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/15/2026 12:10:57 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/15/2026 12:11:01 PM chat.py ln 348 AI comment: The article accurately represents all five source materials. The key claims — record global fire outbreaks driven by climate change (Reuters), growing confidence in a potentially very strong El Niño with warnings of record global temperatures (BBC Weather, AP), extreme weather concerns for the 2026 World Cup (BBC Weather), and scientists warning FIFA that current heat safety measures are "inadequate" (BBC Sport) — all align directly with the provided sources.
The article's broader meteorological commentary (wet-bulb globe temperature, compound risk, thunderstorm hazards) represents the author
INFO 05/15/2026 12:11:01 PM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/15/2026 12:11:01 PM article_creation_service.py ln 771 Fact-check comment posted (6.82s)
INFO 05/15/2026 12:11:01 PM article_creation_service.py ln 771 Article creation completed successfully (total: 306.60s)
INFO 05/15/2026 12:11:01 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/15/2026 12:11:01 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/15/2026 12:11:01 PM create_articles.py ln 204 Script completed (307.32s total)
INFO 05/15/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 01:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 01:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 01:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 01:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/15/2026 01:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 01:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 01:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/15/2026 01:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 01:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 01:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 01:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 01:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 01:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 01:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 01:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 01:05:55 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/15/2026 01:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 01:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 01:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 01:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 01:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 01:05:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 01:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 01:05:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/15/2026 01:05:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 01:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 01:05:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 02:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 02:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:07:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 02:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 02:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 02:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 02:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 02:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 02:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 02:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 02:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 02:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 02:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 02:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 02:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 02:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 02:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 02:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 02:07:55 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/15/2026 02:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 02:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 02:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 02:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 02:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 02:07:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 02:07:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 02:07:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/15/2026 02:07:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 02:07:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 02:07:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 03:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 03:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:07:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 03:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 03:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 03:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 03:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 03:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 03:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 03:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:07:52 PM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/15/2026 03:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 03:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 03:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 03:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 03:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 03:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 03:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 03:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 03:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 03:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 03:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 03:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 03:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 03:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 03:07:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 03:07:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 03:07:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/15/2026 03:07:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 03:07:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 03:07:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/15/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 04:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 04:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 04:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 04:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 04:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/15/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 04:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 04:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 04:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 04:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 04:05:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 04:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 04:05:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/15/2026 04:05:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 04:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 04:05:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 05:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 05:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:07:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 05:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 05:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 05:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 05:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/15/2026 05:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:07:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 05:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 05:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 05:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 05:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 05:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 05:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 05:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 05:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 05:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 05:07:54 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/15/2026 05:07:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 05:07:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 05:07:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 05:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 05:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 05:07:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/15/2026 05:07:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/15/2026 05:07:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/15/2026 05:07:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/15/2026 05:07:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/15/2026 05:07:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/15/2026 06:01:03 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 06:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 06:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/15/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 06:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 06:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 06:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 06:06:54 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/15/2026 06:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 06:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 06:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 06:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 06:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 06:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 07:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 07:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:07:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 07:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 07:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 07:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 07:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 07:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 07:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 07:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 07:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 07:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 07:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 07:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 07:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 07:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 07:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 07:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 07:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 07:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 07:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 07:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 07:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 07:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 07:07:55 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 08:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 08:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:05:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/15/2026 08:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 08:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 08:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 08:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 08:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 08:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 08:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/15/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 08:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 08:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 08:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 08:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 08:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 08:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 08:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 08:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 08:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/15/2026 08:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/15/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 09:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 09:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/15/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 09:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 09:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 09:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 09:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 09:06:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 09:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 09:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 09:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 09:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 09:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 09:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 10:05:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 10:05:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:05:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 10:05:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 10:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/15/2026 10:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/15/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 10:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 10:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 10:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 10:05:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/15/2026 10:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 10:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 11:05:36 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:05:36 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/15/2026 11:05:36 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:05:37 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/15/2026 11:05:37 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/15/2026 11:05:37 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:05:37 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/15/2026 11:05:37 PM cron_common.py ln 313 filtered characters: 17
INFO 05/15/2026 11:05:37 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/15/2026 11:05:37 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 11:05:39 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:05:39 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/15/2026 11:05:39 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:05:40 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 11:05:40 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/15/2026 11:05:40 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:05:40 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/15/2026 11:05:40 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 11:05:40 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 11:05:40 PM cron_common.py ln 373 No characters selected.
INFO 05/15/2026 11:05:42 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/15/2026 11:05:42 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/15/2026 11:05:42 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/15/2026 11:05:42 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/15/2026 11:05:42 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/15/2026 11:05:42 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/15/2026 11:05:42 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/15/2026 11:05:42 PM cron_common.py ln 313 filtered characters: 14
INFO 05/15/2026 11:05:42 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/15/2026 11:05:42 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 12:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 12:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 12:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 12:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 12:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 12:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 12:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 12:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 12:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 12:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 12:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 12:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 12:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 12:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 12:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 12:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 12:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:55:12 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/16/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 01:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.38s)
INFO 05/16/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 01:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/16/2026 01:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 01:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 01:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:05:55 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/16/2026 01:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 01:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 01:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 01:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 01:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 02:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:07:49 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/16/2026 02:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 02:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 02:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 02:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 02:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 02:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 02:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 02:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 02:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 02:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 02:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 02:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:07:55 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/16/2026 02:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 02:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 02:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 02:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 02:07:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 03:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 03:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 03:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 03:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/16/2026 03:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 03:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 03:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 03:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 03:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 03:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 03:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 03:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 03:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 03:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 03:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 03:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:49 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/16/2026 04:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 04:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 04:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 04:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/16/2026 04:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 04:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 04:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 04:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 04:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 04:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 04:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 04:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 04:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 04:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 05:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 05:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/16/2026 05:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 05:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 05:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 05:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 05:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 05:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 05:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 06:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 06:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 06:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 06:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 06:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 06:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 06:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 06:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 06:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 06:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 06:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 06:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 06:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 06:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 06:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 06:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 06:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 06:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 06:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 06:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 06:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/16/2026 06:06:55 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/16/2026 06:06:55 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/16/2026 06:06:55 AM cron_common.py ln 414 Character articles: 100
INFO 05/16/2026 06:06:55 AM create_articles.py ln 126 Character articles loaded (0.51s)
INFO 05/16/2026 06:06:55 AM create_articles.py ln 128 Setup complete (0.98s total)
INFO 05/16/2026 06:06:55 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/16/2026 06:06:55 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260516_060655_news_Hawk.log
INFO 05/16/2026 06:06:55 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/16/2026 06:06:55 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/16/2026 06:06:55 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/16/2026 06:06:56 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.55s)
INFO 05/16/2026 06:06:56 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/16/2026 06:06:56 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/16/2026 06:06:56 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/16/2026 06:06:56 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/16/2026 06:06:56 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/16/2026 06:06:58 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/16/2026 06:06:58 AM chat.py ln 159 Found 8 results
INFO 05/16/2026 06:06:58 AM article_creation_service.py ln 771 Found 8 search results (2.09s)
INFO 05/16/2026 06:06:58 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260516_060655_news_Hawk_search.md
INFO 05/16/2026 06:06:58 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/16/2026 06:07:52 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/16/2026 06:07:52 AM article_creation_service.py ln 771 Generated article - Hawk’s Saturday Brief: Beijing optics vs outcomes; Xi’s Taiwan line; Pentagon pauses Europe troop move; Louisiana’s messy primary (53.74s)
INFO 05/16/2026 06:07:52 AM article_creation_service.py ln 771 Created WP post 1249 (0.10s)
INFO 05/16/2026 06:08:01 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/16/2026 06:08:01 AM wp.py ln 860 Prompt: Create a high-end editorial featured image for a geopolitical news briefing: a dramatic split-scene composition showing Beijing’s Great Hall–style red-and-gold diplomatic setting on one side and Washington, D.C. power imagery on the other, with two indistinct leader silhouettes shaking hands across a glossy conference table. Reflections in the table subtly show Taiwan’s outline, a faint Europe troop map, stock market charts dipping, and empty ambassador chairs, suggesting optics versus uncertain outcomes. Add a muted background hint of military transport aircraft and global trade routes, with Louisiana represented subtly by a small U.S. map inset glow in the lower corner. Tone should be serious, analytical, and tense; cinematic lighting, deep reds, navy blues, gold highlights, realistic editorial illustration style, no readable text, no logos, no caricature, no exaggerated facial likenesses. Aspect ratio 16:9, suitable for a political newsletter featured image.
INFO 05/16/2026 06:08:01 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/16/2026 06:09:11 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/16/2026 06:09:12 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/16/2026 06:09:12 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-16.jpeg
INFO 05/16/2026 06:09:12 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-16.jpeg
INFO 05/16/2026 06:09:12 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4OTExNjE1LCJuYmYiOjE3Nzg5MTE2MTUsImV4cCI6MTc3OTUxNjQxNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.h8A49YccSqHSzTbA3mKZnH_w1M6BjWf60Oz4gzKzB50
INFO 05/16/2026 06:09:12 AM image.py ln 220 filename is 2026-05-16.webp
INFO 05/16/2026 06:09:12 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-16.webp'>}
INFO 05/16/2026 06:09:12 AM article_creation_service.py ln 771 Featured image posted (80.43s)
INFO 05/16/2026 06:09:21 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/16/2026 06:09:21 AM wp.py ln 895 Secondary Image Prompt: **Image generation prompt:**
Create a cinematic editorial illustration about geopolitical uncertainty after a U.S.–China summit. Show a grand conference table split between deep Beijing red and cold Washington blue, with two empty high-backed chairs facing each other under dramatic overhead lights. On the table: unsigned trade papers, a small model airplane with a downward stock-chart shadow, a chessboard with pieces shaped like Taiwan, Iran, Europe, and Louisiana, and several vacant nameplates symbolizing unfilled ambassador posts. In the background, faint silhouettes of the Great Hall of the People and the U.S. Capitol blend into a hazy skyline. A muted map of the Taiwan Strait glows subtly at the center, acting as the visual focal point. Add a sense of political theater: velvet curtains, camera flashes, and ceremonial flags fading into fog, suggesting optics over substance. Mood should be tense, polished, and ambiguous; color palette of crimson, navy, charcoal, gold accents, and smoky gray. Style: high-end magazine cover illustration, realistic but symbolic, sharp composition, dramatic contrast, textured paper grain, no readable text, no logos, no caricature.
INFO 05/16/2026 06:09:21 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/16/2026 06:10:31 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/16/2026 06:10:31 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/16/2026 06:10:31 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-16-1.jpeg
INFO 05/16/2026 06:10:31 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-16-1.jpeg
INFO 05/16/2026 06:10:31 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4OTExNjE1LCJuYmYiOjE3Nzg5MTE2MTUsImV4cCI6MTc3OTUxNjQxNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.h8A49YccSqHSzTbA3mKZnH_w1M6BjWf60Oz4gzKzB50
INFO 05/16/2026 06:10:32 AM image.py ln 220 filename is 2026-05-16-1.webp
INFO 05/16/2026 06:10:32 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-16-1.webp'>}
INFO 05/16/2026 06:10:32 AM article_creation_service.py ln 771 Secondary image uploaded (79.50s)
INFO 05/16/2026 06:10:32 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/16/2026 06:10:32 AM wp.py ln 1018 Post content updated successfully for post 1249
INFO 05/16/2026 06:10:32 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/16/2026 06:10:34 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/16/2026 06:10:42 AM chat.py ln 348 AI comment: The article accurately represents its sources across all major claims: Trump's "fantastic trade deals" quote, the "symbolism over substance" characterization from a former Biden adviser, the "three Donald Trumps" analyst quote, Xi's Taiwan warning to Trump, Boeing shares sliding on disappointing summit deals, Trump's Iran alignment comment, the Pentagon canceling a troop deployment to Europe, Trump missing a stock disclosure, and Louisiana's Senate primary with 100+ unfilled ambassador posts — all confirmed by the cited sources.
One minor citation issue worth noting: the article's reference l
INFO 05/16/2026 06:10:42 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/16/2026 06:10:42 AM article_creation_service.py ln 771 Fact-check comment posted (9.99s)
INFO 05/16/2026 06:10:42 AM article_creation_service.py ln 771 Article creation completed successfully (total: 226.95s)
INFO 05/16/2026 06:10:42 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/16/2026 06:10:42 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/16/2026 06:10:42 AM create_articles.py ln 204 Script completed (227.93s total)
INFO 05/16/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 07:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 07:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 07:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 07:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 07:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 07:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 07:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 07:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 07:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 07:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 07:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 07:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 07:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 07:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:54 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/16/2026 07:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 07:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 07:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 07:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 07:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 07:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 07:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/16/2026 07:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/16/2026 07:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/16/2026 07:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/16/2026 08:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 08:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 08:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 08:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 08:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 08:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 08:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 08:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 08:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 08:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 08:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 08:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 08:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 08:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 08:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 08:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 08:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 08:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 08:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 08:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 08:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 08:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 08:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/16/2026 08:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/16/2026 08:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/16/2026 08:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/16/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 09:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/16/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 09:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/16/2026 09:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 09:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 09:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 09:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 09:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 09:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 09:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 09:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 09:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 09:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/16/2026 09:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/16/2026 09:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/16/2026 09:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/16/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 10:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 10:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 10:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 10:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 10:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 10:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:06:54 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/16/2026 10:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 10:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 10:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 10:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 10:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 10:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 10:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/16/2026 10:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/16/2026 10:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/16/2026 10:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/16/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 11:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 11:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 11:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 11:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/16/2026 11:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 11:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 11:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 11:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 11:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 11:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 11:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 11:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:06:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/16/2026 11:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 11:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 11:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 11:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 11:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/16/2026 11:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/16/2026 11:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/16/2026 11:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/16/2026 11:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/16/2026 11:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/16/2026 12:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 12:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:05:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 12:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 12:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 12:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 12:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 12:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 12:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:05:52 PM create_articles.py ln 93 JWT token obtained (0.58s)
INFO 05/16/2026 12:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 12:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 12:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 12:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/16/2026 12:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 12:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 12:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 12:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 12:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 12:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 12:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 12:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 12:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 12:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 12:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 01:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 01:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:07:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 01:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 01:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 01:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 01:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 01:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 01:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 01:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 01:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 01:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 01:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 01:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 01:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 01:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 01:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 01:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 01:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 01:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 01:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 01:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 01:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 01:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 01:07:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 02:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/16/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 02:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 02:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 02:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 02:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 02:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 02:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 02:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 02:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 02:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 02:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 02:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 02:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 02:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/16/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/16/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 03:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 03:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 03:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 03:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 03:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 03:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 03:06:56 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/16/2026 03:06:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 03:06:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 03:06:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 03:06:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 03:06:56 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 03:06:56 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/16/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/16/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 04:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 04:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 04:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 04:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/16/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 04:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 04:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 04:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 04:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 04:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 05:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 05:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/16/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 05:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 05:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/16/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 05:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 05:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 05:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 05:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 05:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 05:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 05:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 05:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 05:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 05:51:14 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/16/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 06:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 06:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/16/2026 06:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 06:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 06:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 06:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 06:06:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 06:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 06:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 06:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 06:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 06:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 06:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 07:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 07:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 07:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 07:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 07:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 07:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 07:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/16/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 07:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 07:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 07:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 07:06:55 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/16/2026 07:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 07:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 07:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 07:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 07:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 07:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 08:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 08:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 08:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 08:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 08:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 08:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 08:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 08:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 08:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 08:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 08:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 08:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 08:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 08:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 08:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 08:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 08:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 08:06:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 08:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 08:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 08:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 08:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 08:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 08:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 09:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 09:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:07:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 09:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 09:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 09:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 09:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/16/2026 09:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 09:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 09:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 09:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 09:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 09:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 09:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 09:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 09:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 09:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 09:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 09:07:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 09:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 09:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 09:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 09:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 09:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 09:07:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/16/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 10:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 10:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 10:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 10:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 10:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 10:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 10:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 10:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 10:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 10:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 10:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 10:51:32 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/16/2026 11:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/16/2026 11:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:07:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/16/2026 11:07:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/16/2026 11:07:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:07:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/16/2026 11:07:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/16/2026 11:07:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/16/2026 11:07:49 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 11:07:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:07:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/16/2026 11:07:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:07:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/16/2026 11:07:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/16/2026 11:07:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:07:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/16/2026 11:07:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 11:07:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 11:07:52 PM cron_common.py ln 373 No characters selected.
INFO 05/16/2026 11:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/16/2026 11:07:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/16/2026 11:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/16/2026 11:07:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/16/2026 11:07:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/16/2026 11:07:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/16/2026 11:07:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/16/2026 11:07:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/16/2026 11:07:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/16/2026 11:07:54 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 12:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 12:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:05:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 12:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 12:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 12:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 12:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/17/2026 12:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 12:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 12:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 12:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 12:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 12:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 12:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 12:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 12:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 12:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:05:55 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/17/2026 12:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 12:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 12:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 12:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/17/2026 12:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 01:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:49 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/17/2026 01:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 01:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 01:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 01:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/17/2026 01:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 01:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 01:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 01:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 01:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 01:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 01:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 01:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 01:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 01:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 01:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 01:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 01:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:06:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/17/2026 02:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 02:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 02:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 02:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 02:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 02:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:06:53 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 02:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 02:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 02:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 02:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/17/2026 02:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:06:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:06:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 02:06:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 02:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 02:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 02:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 02:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 02:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 03:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 03:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:05:50 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 03:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 03:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 03:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 03:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/17/2026 03:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 03:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 03:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 03:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 03:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:05:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 03:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 03:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 03:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 03:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 03:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 03:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 03:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 03:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 03:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 03:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 04:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:50 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 04:06:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 04:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 04:06:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 04:06:50 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 04:06:50 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 04:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 04:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 04:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 04:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 04:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 04:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 04:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 04:06:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 04:06:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 04:06:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 04:06:56 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 04:06:56 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/17/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 05:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 05:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 05:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:05:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 05:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 05:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 05:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 05:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 05:05:54 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 06:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 06:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 06:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 06:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 06:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/17/2026 06:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 06:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:52 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/17/2026 06:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 06:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 06:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 06:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 06:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 06:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 06:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 06:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 06:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 06:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 06:05:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 06:05:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 06:05:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/17/2026 06:05:55 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/17/2026 06:05:55 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/17/2026 06:05:55 AM cron_common.py ln 414 Character articles: 100
INFO 05/17/2026 06:05:55 AM create_articles.py ln 126 Character articles loaded (0.55s)
INFO 05/17/2026 06:05:55 AM create_articles.py ln 128 Setup complete (1.01s total)
INFO 05/17/2026 06:05:55 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/17/2026 06:05:55 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260517_060555_news_Hawk.log
INFO 05/17/2026 06:05:55 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/17/2026 06:05:55 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/17/2026 06:05:56 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/17/2026 06:05:56 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.54s)
INFO 05/17/2026 06:05:56 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/17/2026 06:05:56 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/17/2026 06:05:56 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/17/2026 06:05:56 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/17/2026 06:05:56 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/17/2026 06:05:58 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/17/2026 06:05:58 AM chat.py ln 159 Found 8 results
INFO 05/17/2026 06:05:58 AM article_creation_service.py ln 771 Found 8 search results (1.95s)
INFO 05/17/2026 06:05:58 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260517_060555_news_Hawk_search.md
INFO 05/17/2026 06:05:58 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/17/2026 06:06:39 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/17/2026 06:06:39 AM article_creation_service.py ln 771 Generated article - Hawk’s Sunday Brief: Putin’s Beijing optics after Trump; the ‘staged’ narrative problem; Europe’s voice and China’s two‑wheelers (41.07s)
INFO 05/17/2026 06:06:39 AM article_creation_service.py ln 771 Created WP post 1254 (0.11s)
INFO 05/17/2026 06:06:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/17/2026 06:06:47 AM wp.py ln 860 Prompt: Create a wide editorial-style featured image for a geopolitical news briefing: a dramatic, modern digital collage centered on Beijing’s skyline and the Great Hall of the People, with subtle silhouettes of three world leaders positioned like chess pieces to suggest U.S.–China–Russia diplomacy without showing recognizable faces. Overlay faint visual motifs of information disorder—fragmented social media icons, blurred headlines, and ripple-like signal waves—balanced with European elements such as EU-blue stars, a financial chart line, and a city council chamber silhouette. In the foreground, add sleek electric two-wheelers moving along a European urban street, symbolizing China’s EV expansion into Europe. Use a serious Sunday-briefing tone, cinematic lighting, deep reds, blues, and steel grays, high contrast, polished newspaper-magazine aesthetic, no readable text, no logos, 16:9 aspect ratio.
INFO 05/17/2026 06:06:47 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/17/2026 06:08:04 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/17/2026 06:08:05 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/17/2026 06:08:05 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-17.jpeg
INFO 05/17/2026 06:08:05 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-17.jpeg
INFO 05/17/2026 06:08:05 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4OTk3OTU1LCJuYmYiOjE3Nzg5OTc5NTUsImV4cCI6MTc3OTYwMjc1NSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.16HhgaZbQMVWrzh3BoSi0F_OJNuV8E_6T_Cckiyj2pY
INFO 05/17/2026 06:08:05 AM image.py ln 220 filename is 2026-05-17.webp
INFO 05/17/2026 06:08:05 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-17.webp'>}
INFO 05/17/2026 06:08:06 AM article_creation_service.py ln 771 Featured image posted (86.44s)
INFO 05/17/2026 06:08:17 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/17/2026 06:08:17 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial illustration for a geopolitical Sunday briefing: a wide-angle view of a glowing Beijing diplomatic stage at night, with the silhouette of the Forbidden City and modern glass towers in the background. In the foreground, three abstract chess-piece-like figures representing U.S.–China–Russia power signaling stand beneath intersecting spotlights, casting long shadows across a map-textured floor. Around them, fragmented social-media screens and distorted headline strips swirl like static, suggesting misinformation and “staged” narratives. To one side, a muted European podium with several microphones sits under a dim but strengthening blue light, symbolizing Europe finding its voice. In the lower corner, a subtle financial chart line overlays gilt-bond paper textures. Crossing the bottom edge, sleek Chinese electric two-wheelers glide through a European city street, leaving thin neon-green trails that imply urban electrification and changing mobility.
Mood: tense, analytical, high-stakes, globally interconnected.
Color palette: deep navy, charcoal black, diplomatic red, cold European blue, electric green accents, warm gold highlights from Beijing lights.
Style: sophisticated news-magazine cover art, semi-realistic digital painting with subtle collage elements, sharp lighting, layered symbolism, no readable text, no recognizable real faces, clean composition, high detail, 16:9 aspect ratio.
INFO 05/17/2026 06:08:17 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/17/2026 06:09:39 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/17/2026 06:09:39 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/17/2026 06:09:39 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-17-1.jpeg
INFO 05/17/2026 06:09:39 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-17-1.jpeg
INFO 05/17/2026 06:09:39 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc4OTk3OTU1LCJuYmYiOjE3Nzg5OTc5NTUsImV4cCI6MTc3OTYwMjc1NSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.16HhgaZbQMVWrzh3BoSi0F_OJNuV8E_6T_Cckiyj2pY
INFO 05/17/2026 06:09:39 AM image.py ln 220 filename is 2026-05-17-1.webp
INFO 05/17/2026 06:09:39 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-17-1.webp'>}
INFO 05/17/2026 06:09:40 AM article_creation_service.py ln 771 Secondary image uploaded (93.83s)
INFO 05/17/2026 06:09:40 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/17/2026 06:09:40 AM wp.py ln 1018 Post content updated successfully for post 1254
INFO 05/17/2026 06:09:40 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/17/2026 06:09:43 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/17/2026 06:09:51 AM chat.py ln 348 AI comment: The article accurately represents its sources, correctly identifying the AP News story on Putin's planned visit to Xi following Trump's Beijing trip, the CNN Smerconish segment on staged assassination attempt beliefs, and the relevant FT pieces on European self-censorship, UK gilts, Birmingham's council leadership vacuum, and Chinese electric two-wheelers entering Europe. The article also correctly notes Trump had a "high-profile trip to Beijing," which is corroborated by multiple source references to a Trump-Xi summit.
One minor reference numbering inconsistency exists in the article body ve
INFO 05/17/2026 06:09:51 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/17/2026 06:09:51 AM article_creation_service.py ln 771 Fact-check comment posted (11.71s)
INFO 05/17/2026 06:09:51 AM article_creation_service.py ln 771 Article creation completed successfully (total: 236.19s)
INFO 05/17/2026 06:09:51 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/17/2026 06:09:51 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/17/2026 06:09:51 AM create_articles.py ln 204 Script completed (237.22s total)
INFO 05/17/2026 07:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 07:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:07:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 07:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 07:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 07:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 07:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/17/2026 07:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 07:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 07:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 07:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 07:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 07:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 07:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 07:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 07:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 07:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:07:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 07:07:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 07:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 07:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 07:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 07:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 07:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 07:07:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/17/2026 07:07:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/17/2026 07:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/17/2026 07:07:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/17/2026 08:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 08:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:07:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 08:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 08:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 08:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 08:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 08:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 08:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 08:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 08:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 08:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 08:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 08:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/17/2026 08:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 08:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 08:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:07:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 08:07:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 08:07:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:07:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 08:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 08:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 08:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 08:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 08:07:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/17/2026 08:07:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/17/2026 08:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/17/2026 08:07:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/17/2026 08:12:28 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 09:03:59 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 09:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 09:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 09:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 09:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/17/2026 09:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 09:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 09:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 09:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 09:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 09:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 09:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 09:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:54 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 09:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 09:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 09:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 09:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 09:06:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 09:06:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 09:06:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/17/2026 09:06:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/17/2026 09:06:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/17/2026 09:06:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/17/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 10:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 10:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 10:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 10:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 10:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 10:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 10:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 10:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 10:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 10:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 10:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 10:06:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 10:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 10:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:06:54 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 10:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 10:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 10:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 10:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 10:06:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 10:06:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 10:06:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/17/2026 10:06:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/17/2026 10:06:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/17/2026 10:06:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/17/2026 11:03:37 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 11:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 11:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 11:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 11:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/17/2026 11:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 11:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 11:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 11:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 11:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 11:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 11:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 11:05:52 AM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 11:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 11:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:54 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/17/2026 11:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 11:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 11:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 11:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 11:05:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/17/2026 11:05:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/17/2026 11:05:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/17/2026 11:05:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/17/2026 11:05:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/17/2026 11:05:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/17/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 12:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/17/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 12:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 12:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 12:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 12:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 12:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 12:06:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 12:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 12:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 12:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 12:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 12:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 12:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 01:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 01:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/17/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 01:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/17/2026 01:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 01:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 01:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 01:06:55 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/17/2026 01:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 01:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 01:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 01:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 01:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 01:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 01:40:07 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 02:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 02:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:05:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 02:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 02:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 02:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 02:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/17/2026 02:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 02:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 02:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 02:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 02:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 02:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 02:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 02:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 02:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 02:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 02:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 02:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 02:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 02:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 02:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 02:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 02:39:40 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 02:40:00 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 03:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 03:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:07:50 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 03:07:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 03:07:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:07:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 03:07:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 03:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/17/2026 03:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 03:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 03:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:07:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 03:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 03:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 03:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 03:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 03:07:53 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 03:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 03:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 03:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 03:07:55 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/17/2026 03:07:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 03:07:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 03:07:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 03:07:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 03:07:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 03:07:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/17/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 04:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 04:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 04:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 04:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 04:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 04:06:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 04:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 04:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 04:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 04:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 04:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 04:06:54 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 05:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 05:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 05:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 05:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 05:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 05:06:54 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 05:06:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 05:06:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 05:06:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 05:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 05:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 05:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 06:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/17/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 06:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/17/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 06:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 06:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 06:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/17/2026 06:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 06:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 06:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 06:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 06:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 06:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 06:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 06:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 06:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 06:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 06:20:44 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 06:47:27 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/17/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/17/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 07:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 07:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 07:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 07:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 07:05:54 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 07:05:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 07:05:54 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 07:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 07:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 07:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 08:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 08:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:05:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/17/2026 08:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 08:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 08:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 08:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 08:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 08:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 08:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/17/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 08:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 08:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 08:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 08:05:55 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 08:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 08:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 08:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 08:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 08:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 08:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/17/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 09:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 09:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 09:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 09:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 09:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 09:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 09:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 09:06:54 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 09:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 09:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 09:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 09:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 09:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 09:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/17/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 10:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:05:53 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 10:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:05:53 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/17/2026 10:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 10:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:05:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 10:05:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 10:05:54 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/17/2026 10:05:54 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 10:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 10:05:56 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 10:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 10:05:56 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/17/2026 10:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 10:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 10:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 10:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 10:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 10:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 11:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/17/2026 11:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:46 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/17/2026 11:05:46 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/17/2026 11:05:46 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:46 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/17/2026 11:05:46 PM cron_common.py ln 313 filtered characters: 17
INFO 05/17/2026 11:05:46 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/17/2026 11:05:46 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 11:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/17/2026 11:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/17/2026 11:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/17/2026 11:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/17/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/17/2026 11:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/17/2026 11:05:51 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/17/2026 11:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/17/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/17/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/17/2026 11:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/17/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/17/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/17/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/17/2026 11:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 12:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 12:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:07:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 12:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 12:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 12:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 12:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/18/2026 12:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 12:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 12:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 12:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 12:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 12:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 12:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 12:07:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 12:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 12:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/18/2026 12:07:52 AM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 05/18/2026 12:07:52 AM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 05/18/2026 12:07:52 AM cron_common.py ln 414 Character articles: 20
INFO 05/18/2026 12:07:52 AM create_articles.py ln 126 Character articles loaded (0.17s)
INFO 05/18/2026 12:07:52 AM create_articles.py ln 128 Setup complete (0.63s total)
INFO 05/18/2026 12:07:52 AM create_articles.py ln 140 Creating article for character: Geneva
INFO 05/18/2026 12:07:52 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260518_000752_dev_Geneva.log
INFO 05/18/2026 12:07:52 AM article_creation_service.py ln 771 Article creation started for character: Geneva
INFO 05/18/2026 12:07:52 AM article_creation_service.py ln 771 WordPress authentication successful (0.32s)
INFO 05/18/2026 12:07:52 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/18/2026 12:07:53 AM article_creation_service.py ln 771 Loaded 20 articles for character (0.16s)
INFO 05/18/2026 12:07:53 AM article_creation_service.py ln 771 Got 9 categories and 32 tags (0.08s)
INFO 05/18/2026 12:07:53 AM article_creation_service.py ln 771 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 05/18/2026 12:07:53 AM chat.py ln 139 Tavily search will filter to past week
INFO 05/18/2026 12:07:59 AM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 05/18/2026 12:07:59 AM chat.py ln 159 Found 5 results
INFO 05/18/2026 12:07:59 AM article_creation_service.py ln 771 Found 5 search results (6.83s)
INFO 05/18/2026 12:07:59 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260518_000752_dev_Geneva_search.md
INFO 05/18/2026 12:07:59 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/18/2026 12:08:15 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 12:09:39 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:09:39 AM article_creation_service.py ln 771 Generated article - Copilot’s new desktop agent just redrew the map: how it stacks up against Claude Code, Cursor, and Codex in 2026 (99.05s)
INFO 05/18/2026 12:09:39 AM article_creation_service.py ln 771 Created WP post 845 (0.12s)
INFO 05/18/2026 12:09:46 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:09:46 AM wp.py ln 860 Prompt: Create a futuristic editorial featured image for an article about AI coding agents in 2026. Show a sleek developer workstation with multiple floating holographic panels representing autonomous coding assistants, cloud agent tasks, repository graphs, pull requests, terminal refactors, and API orchestration. In the center, a desktop app interface acts like a command hub, connected by glowing lines to several distinct agent nodes competing and collaborating across a digital map of code repositories. Use a high-tech newsroom/enterprise software aesthetic: dark mode UI, neon blue, violet, green, and amber accents, subtle cloud infrastructure in the background, code snippets and workflow diagrams visible but not readable. Convey the shift from simple autocomplete to autonomous multi-agent software development. Modern, polished, professional tech illustration, cinematic lighting, depth of field, clean composition, no brand logos, no readable text, no people’s faces, 16:9 aspect ratio.
INFO 05/18/2026 12:09:46 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/18/2026 12:10:51 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 12:10:52 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/18/2026 12:10:52 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-18.jpeg
INFO 05/18/2026 12:10:52 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-18.jpeg
INFO 05/18/2026 12:10:52 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzkwNjI4NzIsIm5iZiI6MTc3OTA2Mjg3MiwiZXhwIjoxNzc5NjY3NjcyLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.kK_kYuVe7ItBLq4k7jUv8cizsA0yVjmKy8xoGdf3mbE
INFO 05/18/2026 12:10:52 AM image.py ln 220 filename is 2026-05-18.webp
INFO 05/18/2026 12:10:52 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-18.webp'>}
INFO 05/18/2026 12:10:53 AM article_creation_service.py ln 771 Featured image posted (73.98s)
INFO 05/18/2026 12:11:09 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:11:09 AM wp.py ln 895 Secondary Image Prompt: Create a futuristic editorial illustration for a tech article about autonomous AI coding agents reshaping software development in 2026. Show a glowing digital “command map” or strategy table viewed from a slight overhead angle, with multiple interconnected coding-agent nodes routing tasks across repositories, cloud servers, terminals, and IDE windows. At the center, depict a sleek desktop app interface as a luminous control hub, sending streams of code, pull requests, test results, and deployment signals outward through branching neon pathways.
Visual elements: abstract code snippets, repo folders, cloud compute clusters, terminal panes, IDE panels, queue/task cards, and branching workflow arrows. Convey a multi-agent ecosystem rather than a single tool: several distinct AI assistant “orbs” or robotic silhouettes working in parallel on different lanes labeled only with subtle generic icons, not brand logos. Include a sense of competition and coordination—like a tactical operations room for software agents.
Mood and style: high-end tech magazine cover art, cinematic, clean but dense with detail, cybernetic and strategic. Use a dark navy/charcoal background with electric blue, violet, emerald, and warm amber highlights. Add glassmorphism UI panels, holographic depth, soft bloom lighting, fine circuit textures, and subtle data-particle trails. The image should feel like the shift from autocomplete to autonomous cloud-based development workflows.
Composition: wide 16:9 hero image, strong central focal point, balanced negative space near the top for possible headline placement, crisp edges, modern SaaS aesthetic, sophisticated and professional. Avoid real company logos, readable brand names, distorted text, or human faces.
INFO 05/18/2026 12:11:09 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/18/2026 12:12:12 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 12:12:12 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/18/2026 12:12:12 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-18-1.jpeg
INFO 05/18/2026 12:12:12 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-18-1.jpeg
INFO 05/18/2026 12:12:12 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3NzkwNjI4NzIsIm5iZiI6MTc3OTA2Mjg3MiwiZXhwIjoxNzc5NjY3NjcyLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.kK_kYuVe7ItBLq4k7jUv8cizsA0yVjmKy8xoGdf3mbE
INFO 05/18/2026 12:12:13 AM image.py ln 220 filename is 2026-05-18-1.webp
INFO 05/18/2026 12:12:13 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-18-1.webp'>}
INFO 05/18/2026 12:12:13 AM article_creation_service.py ln 771 Secondary image uploaded (80.38s)
INFO 05/18/2026 12:12:13 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/18/2026 12:12:13 AM wp.py ln 1018 Post content updated successfully for post 845
INFO 05/18/2026 12:12:13 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/18/2026 12:12:15 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/18/2026 12:12:22 AM chat.py ln 348 AI comment: The article accurately represents the key claims from its sources. The statistics on tool adoption (Copilot at 76% awareness/29% work adoption, Claude Code at 18% with 6× growth, Codex at 1M+ WAU by March 2026), the characterization of market dynamics, and the technical details about GitHub's new desktop app, REST API, and JetBrains unified session views all align well with the source material. The article's description of Claude Code requiring internet/API access, Gemini's free tier, and Codex being a separate product from Copilot are all accurately drawn from the sources.
One minor note: th
INFO 05/18/2026 12:12:22 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/18/2026 12:12:22 AM article_creation_service.py ln 771 Fact-check comment posted (8.51s)
INFO 05/18/2026 12:12:22 AM article_creation_service.py ln 771 Article creation completed successfully (total: 269.61s)
INFO 05/18/2026 12:12:22 AM create_articles.py ln 185 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 05/18/2026 12:12:22 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/18/2026 12:12:22 AM create_articles.py ln 204 Script completed (270.24s total)
INFO 05/18/2026 12:12:24 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:12:24 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 12:12:24 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:12:24 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 12:12:24 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 12:12:24 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:12:24 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 12:12:24 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 12:12:24 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 12:12:24 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 01:00:16 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 01:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 01:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 01:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 01:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/18/2026 01:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 01:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 01:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:05:52 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/18/2026 01:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 01:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 01:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 01:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 01:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 01:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 01:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 01:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 01:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 01:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 01:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 01:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:05:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 01:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 01:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 01:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 01:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 01:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 02:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 02:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/18/2026 02:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 02:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 02:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 02:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/18/2026 02:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 02:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 02:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 02:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 02:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 02:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 02:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 02:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 02:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 02:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 02:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 02:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 02:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 02:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 02:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:05:55 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/18/2026 02:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 02:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 02:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 02:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 02:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 03:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 03:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 03:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 03:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.39s)
INFO 05/18/2026 03:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 03:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 03:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 03:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 03:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 03:06:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 03:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 03:06:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 03:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 03:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 03:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 03:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 03:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 03:06:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 03:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 03:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 03:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 03:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 04:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 04:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:06:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 04:06:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 04:06:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:06:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 04:06:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 04:06:49 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/18/2026 04:06:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 04:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 04:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:06:52 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 04:06:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 04:06:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:06:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 04:06:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 04:06:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 04:06:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 04:06:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 04:06:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 04:06:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 04:06:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 04:06:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 04:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:06:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 04:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:06:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 04:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 04:06:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:06:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 04:06:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 04:06:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 04:06:55 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:05:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 05:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 05:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 05:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 05:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/18/2026 05:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 05:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 05:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:05:52 AM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/18/2026 05:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 05:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 05:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 05:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 05:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 05:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 05:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 05:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 05:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 05:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 05:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 05:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:05:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 05:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 05:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 05:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 05:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 05:05:55 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 06:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 06:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:07:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/18/2026 06:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 06:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 06:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 06:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/18/2026 06:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 06:07:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:07:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 06:07:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 06:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 06:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 06:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 06:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 06:07:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 06:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 06:07:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 06:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 06:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 06:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 06:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 06:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:07:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 06:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 06:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 06:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 06:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 06:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 06:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 06:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/18/2026 06:07:55 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/18/2026 06:07:55 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/18/2026 06:07:55 AM cron_common.py ln 414 Character articles: 100
INFO 05/18/2026 06:07:55 AM create_articles.py ln 126 Character articles loaded (0.54s)
INFO 05/18/2026 06:07:55 AM create_articles.py ln 128 Setup complete (1.00s total)
INFO 05/18/2026 06:07:55 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/18/2026 06:07:55 AM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260518_060755_news_Hawk.log
INFO 05/18/2026 06:07:55 AM article_creation_service.py ln 771 Article creation started for character: Hawk
INFO 05/18/2026 06:07:56 AM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/18/2026 06:07:56 AM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/18/2026 06:07:56 AM article_creation_service.py ln 771 Loaded 100 articles for character (0.57s)
INFO 05/18/2026 06:07:56 AM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.10s)
INFO 05/18/2026 06:07:56 AM article_creation_service.py ln 771 Searching for 'top world and US headline news today' (topic: news)
INFO 05/18/2026 06:07:56 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/18/2026 06:07:56 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/18/2026 06:07:56 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/18/2026 06:07:58 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/18/2026 06:07:58 AM chat.py ln 159 Found 8 results
INFO 05/18/2026 06:07:58 AM article_creation_service.py ln 771 Found 8 search results (1.72s)
INFO 05/18/2026 06:07:58 AM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260518_060755_news_Hawk_search.md
INFO 05/18/2026 06:07:58 AM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/18/2026 06:08:59 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 06:08:59 AM article_creation_service.py ln 771 Generated article - Hawk’s Monday Brief: Faith on the Mall tests church–state lines; UAE nuclear plant hit; WHO sounds Ebola alarm; Cannes #MeToo reckoning; ‘Michael’ retakes No. 1 (60.78s)
INFO 05/18/2026 06:08:59 AM article_creation_service.py ln 771 Created WP post 1259 (0.15s)
INFO 05/18/2026 06:09:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 06:09:07 AM wp.py ln 860 Prompt: **Featured image prompt:**
Create a cinematic editorial news-collage illustration for a Monday briefing article. Foreground: a stylized hawk silhouette perched above an open newspaper, symbolizing “Hawk’s Monday Brief.” Background divided into subtle blended panels: Washington, D.C.’s National Mall with the Capitol in the distance and a peaceful prayer rally suggested by small diverse crowd silhouettes and soft candlelight; a tense Middle East scene with a distant nuclear power plant, faint smoke, and a small drone silhouette in the sky; a public-health emergency motif with medical workers in protective gear, a red alert glow, and a map-like outline of central Africa; Cannes Film Festival imagery with a red carpet, camera flashes, and a lone actress silhouette suggesting a #MeToo reckoning; and a movie theater marquee with generic box-office imagery, film reels, and spotlights. Use a serious, polished news-magazine style, dramatic but balanced lighting, deep blues, reds, and gold accents, high detail, modern editorial composition, no readable text, no logos, no identifiable real people, 16:9 aspect ratio.
INFO 05/18/2026 06:09:07 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/18/2026 06:10:27 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 06:10:27 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/18/2026 06:10:27 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18.jpeg
INFO 05/18/2026 06:10:27 AM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-18.jpeg
INFO 05/18/2026 06:10:27 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5MDg0NDc2LCJuYmYiOjE3NzkwODQ0NzYsImV4cCI6MTc3OTY4OTI3NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6QcfLCsjciVZSarI6nNd7bL8vsnoSBrxONN8BwjrulQ
INFO 05/18/2026 06:10:27 AM image.py ln 220 filename is 2026-05-18.webp
INFO 05/18/2026 06:10:27 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18.webp'>}
INFO 05/18/2026 06:10:28 AM article_creation_service.py ln 771 Featured image posted (88.91s)
INFO 05/18/2026 06:10:39 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 06:10:39 AM wp.py ln 895 Secondary Image Prompt: Create a cinematic editorial illustration showing a world under pressure through a layered, symbolic news collage. In the foreground, a cracked marble line divides a twilight scene on Washington’s National Mall: distant silhouettes of a prayer crowd holding candles, the U.S. Capitol softly lit in the background, and faint constitutional parchment textures blending into the sky. To one side, the horizon shifts into a smoky Middle Eastern industrial landscape with a cooling tower silhouette, a small drone shadow, and orange firelight reflecting on metallic surfaces. On the other side, a dim public-health field station in central Africa appears in deep green and amber tones, with gloved medical workers moving through mist and biohazard containment tents, suggesting urgency without graphic detail. Above, a Cannes-style red carpet fades into torn film strips and spotlight beams, symbolizing Hollywood’s unresolved reckoning, while a glowing theater marquee in the distance hints at a box-office comeback without using readable text.
Mood: tense but restrained, emphasizing endurance, institutional strain, and global cross-currents.
Style: high-end magazine cover art, painterly realism mixed with subtle photomontage, dramatic lighting, rich textures, layered symbolism.
Color palette: navy blue, smoke gray, candle gold, emergency orange, muted red carpet crimson, medical green.
Composition: wide horizontal image, balanced multi-scene panorama, no actual celebrity likenesses, no readable text, no logos, no flags dominating the image, sophisticated and thought-provoking.
INFO 05/18/2026 06:10:39 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/18/2026 06:12:13 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 06:12:13 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/18/2026 06:12:13 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-1.jpeg
INFO 05/18/2026 06:12:13 AM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-18-1.jpeg
INFO 05/18/2026 06:12:13 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5MDg0NDc2LCJuYmYiOjE3NzkwODQ0NzYsImV4cCI6MTc3OTY4OTI3NiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6QcfLCsjciVZSarI6nNd7bL8vsnoSBrxONN8BwjrulQ
INFO 05/18/2026 06:12:13 AM image.py ln 220 filename is 2026-05-18-1.webp
INFO 05/18/2026 06:12:13 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-1.webp'>}
INFO 05/18/2026 06:12:14 AM article_creation_service.py ln 771 Secondary image uploaded (105.92s)
INFO 05/18/2026 06:12:14 AM wp.py ln 989 Inserted image after second paragraph
INFO 05/18/2026 06:12:14 AM wp.py ln 1018 Post content updated successfully for post 1259
INFO 05/18/2026 06:12:14 AM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/18/2026 06:12:17 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/18/2026 06:12:24 AM chat.py ln 348 AI comment: The article accurately represents the key facts from the source material: the National Mall prayer rally, the drone strike on the UAE nuclear plant, the WHO's Ebola emergency declaration, Cate Blanchett's #MeToo remarks at Cannes, and "Michael" reclaiming the No. 1 box office spot. Specific details like Taylor Rogers's quote, Robert P. Jones's commentary, the Cabinet Bible reading, and the USDA Easter message flap all align with Source 5 (CNN).
One minor note: the article describes the Easter message as sent by an unnamed USDA official and frames it as an "internal flap," while Source 5 ident
INFO 05/18/2026 06:12:24 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/18/2026 06:12:24 AM article_creation_service.py ln 771 Fact-check comment posted (10.04s)
INFO 05/18/2026 06:12:24 AM article_creation_service.py ln 771 Article creation completed successfully (total: 268.63s)
INFO 05/18/2026 06:12:24 AM create_articles.py ln 185 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/18/2026 06:12:24 AM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/18/2026 06:12:24 AM create_articles.py ln 204 Script completed (269.63s total)
INFO 05/18/2026 07:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:50 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 07:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:51 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 07:05:51 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 07:05:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:51 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 07:05:51 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 07:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/18/2026 07:05:51 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 07:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:53 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 07:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:53 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 07:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 07:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:54 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 07:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 07:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/18/2026 07:05:54 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 07:05:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 07:05:54 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 07:05:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 07:05:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 07:05:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 07:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 07:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:56 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 07:05:56 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 07:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 07:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 07:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 07:05:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 07:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 07:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/18/2026 07:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 07:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 07:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 08:07:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:07:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 08:07:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:07:49 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 08:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 08:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 08:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 08:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/18/2026 08:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 08:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 08:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:07:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 08:07:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 08:07:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:07:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 08:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 08:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/18/2026 08:07:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 08:07:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 08:07:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 08:07:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 08:07:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 08:07:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 08:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 08:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:07:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 08:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 08:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 08:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 08:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 08:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 08:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 08:07:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/18/2026 08:07:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 08:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 08:07:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 09:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 09:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 09:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 09:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 09:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 09:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/18/2026 09:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 09:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 09:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 09:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 09:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 09:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 09:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 09:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 09:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 09:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 09:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 09:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 09:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 09:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 09:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:05:55 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 09:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 09:05:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:05:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 09:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 09:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 09:05:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 09:05:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 09:05:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/18/2026 09:05:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 09:05:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 09:05:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 10:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 10:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 10:05:50 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 10:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:50 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 10:05:50 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 10:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/18/2026 10:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 10:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 10:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 10:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 10:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 10:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 10:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 10:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 10:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 10:05:53 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 10:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 10:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 10:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 10:05:55 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:55 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 10:05:55 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:55 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 10:05:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 10:05:56 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:56 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 10:05:56 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 10:05:56 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 10:05:56 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 10:05:56 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 10:05:56 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/18/2026 10:05:56 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 10:05:56 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 10:05:56 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 11:05:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 11:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 11:05:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 11:05:49 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/18/2026 11:05:49 AM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 11:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 11:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 11:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 11:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:52 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 11:05:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 11:05:52 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 11:05:52 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 11:05:52 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 11:05:52 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 11:05:52 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 11:05:52 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 11:05:52 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 11:05:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 11:05:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:54 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 11:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 11:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 11:05:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 11:05:55 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 11:05:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/18/2026 11:05:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 11:05:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/18/2026 11:05:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 11:05:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 11:05:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 12:06:11 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 12:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 12:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 12:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 12:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/18/2026 12:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 12:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 12:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 12:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 12:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 12:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 12:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 12:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 12:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 12:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 12:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 12:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 12:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 12:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 12:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 12:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 12:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 12:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 12:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 12:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 12:06:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 12:06:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 12:06:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/18/2026 12:06:55 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/18/2026 12:06:55 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/18/2026 12:06:55 PM cron_common.py ln 414 Character articles: 46
INFO 05/18/2026 12:06:55 PM create_articles.py ln 126 Character articles loaded (0.25s)
INFO 05/18/2026 12:06:55 PM create_articles.py ln 128 Setup complete (0.71s total)
INFO 05/18/2026 12:06:55 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/18/2026 12:06:55 PM article_creation_service.py ln 771 Article log file created: /tsai/repo/api/logs/articles/20260518_120655_news_Dusty.log
INFO 05/18/2026 12:06:55 PM article_creation_service.py ln 771 Article creation started for character: Dusty
INFO 05/18/2026 12:06:55 PM article_creation_service.py ln 771 WordPress authentication successful (0.31s)
INFO 05/18/2026 12:06:55 PM article_creation_service.py ln 771 Fetched WP users (0.05s)
INFO 05/18/2026 12:06:55 PM article_creation_service.py ln 771 Loaded 46 articles for character (0.24s)
INFO 05/18/2026 12:06:56 PM article_creation_service.py ln 771 Got 27 categories and 63 tags (0.11s)
INFO 05/18/2026 12:06:56 PM article_creation_service.py ln 771 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/18/2026 12:06:56 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/18/2026 12:06:56 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/18/2026 12:06:57 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/18/2026 12:06:57 PM chat.py ln 159 Found 5 results
INFO 05/18/2026 12:06:57 PM article_creation_service.py ln 771 Found 5 search results (1.67s)
INFO 05/18/2026 12:06:57 PM article_creation_service.py ln 771 Search results written to: /tsai/repo/api/logs/articles/20260518_120655_news_Dusty_search.md
INFO 05/18/2026 12:06:57 PM article_creation_service.py ln 771 System message prepared (0.00s)
INFO 05/18/2026 12:08:20 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:08:20 PM article_creation_service.py ln 771 Generated article - Fire, Heat, Snow Drought, and Tornado Risk: May 2026’s Weather Extremes Are Colliding (82.81s)
INFO 05/18/2026 12:08:20 PM article_creation_service.py ln 771 Created WP post 1264 (0.12s)
INFO 05/18/2026 12:08:30 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:08:30 PM wp.py ln 860 Prompt: **Featured image generation prompt:**
Create a dramatic editorial-style featured image about colliding global weather extremes in May 2026. Show a semi-realistic Earth/weather map montage divided by atmospheric fronts: on one side, orange-red wildfire flames and smoke spreading across dry grasslands; nearby, a blazing heat dome over South Asia with shimmering heat haze and a hot sun; in the western United States, dry cracked ground and shrinking mountain snowpack with exposed rocky peaks; across the central U.S., a dark rotating supercell thunderstorm with a visible tornado funnel; and over Europe, a sharp contrast between icy blue Arctic air and surging warm desert air. Use sweeping jet-stream curves, storm clouds, smoke plumes, and temperature-gradient colors to visually connect the hazards. Cinematic lighting, high contrast, urgent but realistic climate-news tone, detailed atmosphere, no people, no text, no logos. Aspect ratio 16:9.
INFO 05/18/2026 12:08:30 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/18/2026 12:09:52 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 12:09:53 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/18/2026 12:09:53 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-2.jpeg
INFO 05/18/2026 12:09:53 PM article_creation_service.py ln 771 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-18-2.jpeg
INFO 05/18/2026 12:09:53 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5MTA2MDE1LCJuYmYiOjE3NzkxMDYwMTUsImV4cCI6MTc3OTcxMDgxNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TJEnNDROnwaSeeZYFwpaH8frTJc5sx6haqgKKxBbLXw
INFO 05/18/2026 12:09:53 PM image.py ln 220 filename is 2026-05-18-2.webp
INFO 05/18/2026 12:09:53 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-2.webp'>}
INFO 05/18/2026 12:09:54 PM article_creation_service.py ln 771 Featured image posted (93.53s)
INFO 05/18/2026 12:10:10 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/18/2026 12:10:10 PM wp.py ln 895 Secondary Image Prompt: **Image generation prompt:**
Create a dramatic editorial climate-weather illustration showing multiple May weather extremes colliding across one connected atmosphere. A wide cinematic landscape blends several scenes seamlessly: on the left, a dry grassland and forest edge burning with orange wildfire glow and drifting smoke; in the center, a heat-hazed coastal city street with shimmering air, harsh sunlight, and muted human silhouettes seeking shade; in the background, pale mountains with patchy, depleted snowpack and exposed brown rock; on the right, a dark rotating supercell thunderstorm over flat plains with a distant tornado funnel and curtains of rain. Above everything, a sweeping jet-stream-like ribbon arcs across the sky, separating icy blue cold air from deep red-orange heat, suggesting global atmospheric whiplash.
Mood: urgent, tense, cinematic, but grounded in realism.
Color palette: fiery oranges, smoky browns, dusty yellows, stormy charcoal grays, icy blues, and stark white highlights.
Texture: smoke, dry cracked soil, heat shimmer, thin snow crust, turbulent cloud layers, wind-blown dust.
Lighting: high-contrast late-afternoon light, glowing fire reflections, ominous storm shadows, atmospheric haze.
Style: high-quality editorial illustration / cinematic digital painting, realistic environmental detail, no sensational destruction, no text, no logos, no maps, no political symbols.
Aspect ratio: 16:9, suitable as a secondary article image for a climate and weather extremes story.
INFO 05/18/2026 12:10:10 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/18/2026 12:11:15 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/18/2026 12:11:15 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/18/2026 12:11:15 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-3.jpeg
INFO 05/18/2026 12:11:15 PM article_creation_service.py ln 771 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-18-3.jpeg
INFO 05/18/2026 12:11:15 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5MTA2MDE1LCJuYmYiOjE3NzkxMDYwMTUsImV4cCI6MTc3OTcxMDgxNSwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.TJEnNDROnwaSeeZYFwpaH8frTJc5sx6haqgKKxBbLXw
INFO 05/18/2026 12:11:15 PM image.py ln 220 filename is 2026-05-18-3.webp
INFO 05/18/2026 12:11:15 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-18-3.webp'>}
INFO 05/18/2026 12:11:16 PM article_creation_service.py ln 771 Secondary image uploaded (81.99s)
INFO 05/18/2026 12:11:16 PM wp.py ln 989 Inserted image after second paragraph
INFO 05/18/2026 12:11:16 PM wp.py ln 1018 Post content updated successfully for post 1264
INFO 05/18/2026 12:11:16 PM article_creation_service.py ln 771 Post content updated with secondary image
INFO 05/18/2026 12:11:19 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/18/2026 12:11:26 PM chat.py ln 348 AI comment: The article accurately represents its sources across all five topics covered. Key facts — the 150 million hectares burned (20% above previous record), Asian fires 40% above the 2014 record, El Niño expected in May, Friederike Otto's quote about "unprecedented weather extremes," the 15°C European temperature swing, the WWA finding on tripled heat probability in South Asia, the 60%+ drought coverage, record-low western snowpack, and the multi-day severe weather threat from Oklahoma to Iowa — all match the source material closely.
One minor note: the article describes the Karachi fisherman as "c
INFO 05/18/2026 12:11:26 PM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/18/2026 12:11:26 PM article_creation_service.py ln 771 Fact-check comment posted (9.76s)
INFO 05/18/2026 12:11:26 PM article_creation_service.py ln 771 Article creation completed successfully (total: 270.70s)
INFO 05/18/2026 12:11:26 PM create_articles.py ln 185 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/18/2026 12:11:26 PM create_articles.py ln 201 Successfully generated articles for 1 character(s)
INFO 05/18/2026 12:11:26 PM create_articles.py ln 204 Script completed (271.41s total)
INFO 05/18/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 01:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 01:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 01:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 01:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/18/2026 01:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 01:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 01:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 01:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 01:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 01:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 01:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 01:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 01:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 01:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 01:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 01:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 01:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 01:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 01:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 01:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 01:06:55 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/18/2026 01:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 01:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 01:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 01:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 01:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 01:06:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 01:06:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 01:06:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/18/2026 01:06:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 01:06:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 01:06:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 02:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:07:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 02:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:07:50 PM create_articles.py ln 93 JWT token obtained (0.79s)
INFO 05/18/2026 02:07:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 02:07:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:07:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 02:07:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 02:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.29s)
INFO 05/18/2026 02:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 02:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:07:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 02:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:07:53 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/18/2026 02:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 02:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:07:53 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 02:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 02:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 02:07:53 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 02:07:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 02:07:53 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 02:07:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 02:07:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/18/2026 02:07:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 02:07:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 02:07:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 02:07:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 02:07:56 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 02:07:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 02:07:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 02:07:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 02:07:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 02:07:56 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 02:07:56 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 02:07:56 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 02:07:56 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/18/2026 02:07:56 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 02:07:56 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 02:07:56 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:50 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 03:06:50 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 03:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:50 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 03:06:50 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 03:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/18/2026 03:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 03:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 03:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 03:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 03:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 03:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 03:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 03:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 03:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 03:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 03:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 03:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 03:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 03:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 03:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 03:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 03:06:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 03:06:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 03:06:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/18/2026 03:06:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 03:06:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 03:06:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 04:02:45 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 04:02:57 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 04:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 04:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 04:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 04:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 04:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 04:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/18/2026 04:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 04:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 04:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.31s)
INFO 05/18/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 04:05:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 04:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 04:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 04:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 04:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 04:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 04:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 04:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 04:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 04:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 04:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 04:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 04:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 04:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 04:05:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 04:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 04:05:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/18/2026 04:05:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 04:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 04:05:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 05:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 05:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 05:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 05:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 05:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 05:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/18/2026 05:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 05:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 05:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 05:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 05:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 05:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 05:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 05:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 05:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 05:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 05:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 05:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 05:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 05:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 05:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 05:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 05:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 05:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 05:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 05:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 05:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 05:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 05:06:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/18/2026 05:06:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 05:06:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/18/2026 05:06:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 05:06:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 05:06:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 06:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 06:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 06:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 06:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 06:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 06:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/18/2026 06:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 06:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 06:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:06:52 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/18/2026 06:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 06:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 06:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 06:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 06:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 06:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 06:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 06:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 06:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 06:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 06:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 06:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 06:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 06:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 06:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 06:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 06:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 06:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 06:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 06:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 06:49:11 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 07:02:24 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 07:02:34 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' hash='a80e59c728a5ab2b228c1e879b2e96c3a78d218787bed0870d8ecf8024ceb57f' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/18/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/18/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 07:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 07:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 07:05:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 07:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 07:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 07:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 07:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 07:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 07:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 07:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 07:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 07:05:55 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/18/2026 07:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 07:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 07:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 07:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 07:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 07:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 08:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:05:51 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 08:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:05:51 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/18/2026 08:05:52 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 08:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.47s)
INFO 05/18/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 08:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:05:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 08:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 08:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 08:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:05:55 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 08:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 08:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 08:05:55 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 08:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 08:05:55 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 08:05:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 08:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 08:05:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 08:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 08:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 08:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 08:05:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 08:05:57 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 08:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 08:05:57 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 08:05:57 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 08:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 08:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 09:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 09:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 09:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 09:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 09:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 09:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/18/2026 09:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 09:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 09:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/18/2026 09:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 09:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 09:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 09:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 09:06:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 09:06:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 09:06:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 09:06:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 09:06:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 09:06:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 09:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 09:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 09:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 09:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 09:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 09:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 09:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 09:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 09:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 09:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 10:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 10:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/18/2026 10:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 10:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 10:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 10:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.24s)
INFO 05/18/2026 10:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 10:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 10:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 10:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 10:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 10:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 10:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 10:05:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 10:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 10:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 10:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 10:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/18/2026 10:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 10:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 10:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 10:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 10:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/18/2026 10:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 10:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 10:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 10:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 10:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/18/2026 10:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 11:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:48 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/18/2026 11:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:49 PM create_articles.py ln 93 JWT token obtained (0.89s)
INFO 05/18/2026 11:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/18/2026 11:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/18/2026 11:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/18/2026 11:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/18/2026 11:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/18/2026 11:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/18/2026 11:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:52 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/18/2026 11:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/18/2026 11:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/18/2026 11:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 11:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/18/2026 11:05:52 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/18/2026 11:05:52 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/18/2026 11:05:52 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/18/2026 11:05:52 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/18/2026 11:05:52 PM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 05/18/2026 11:05:52 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/18/2026 11:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/18/2026 11:05:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/18/2026 11:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/18/2026 11:05:56 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/18/2026 11:05:56 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/18/2026 11:05:56 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/18/2026 11:05:56 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/18/2026 11:05:56 PM cron_common.py ln 313 filtered characters: 14
INFO 05/18/2026 11:05:56 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/18/2026 11:05:56 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 12:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:52 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 12:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:52 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 12:06:52 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 12:06:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 12:06:54 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:54 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/19/2026 12:06:54 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 12:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:56 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 12:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:56 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.02s)
ERROR 05/19/2026 12:06:56 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 01:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 01:05:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 01:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 01:05:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 01:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 01:05:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 02:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 02:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 02:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 02:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 02:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/19/2026 02:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 03:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 03:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 03:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 03:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 03:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 03:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 03:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 03:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 03:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 03:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 03:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/19/2026 03:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 04:05:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 04:05:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 04:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 04:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 04:05:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/19/2026 04:05:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 04:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 04:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 04:05:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/19/2026 04:05:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 05:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 05:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 05:05:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 05:05:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 05:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 05:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 05:05:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 05:05:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 05:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 05:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 05:05:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 05:05:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 06:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 06:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 06:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 06:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 06:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 06:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 06:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/19/2026 06:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 06:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 06:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 06:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 06:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 07:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 07:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 07:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 07:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 07:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 07:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 07:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 07:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 07:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 05/19/2026 07:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 07:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 07:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 07:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 07:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.06s)
ERROR 05/19/2026 07:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 08:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 08:05:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 08:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 08:05:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 08:05:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 08:05:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 08:05:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 08:05:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 08:05:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/19/2026 08:05:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 08:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 08:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 08:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 08:05:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.01s)
ERROR 05/19/2026 08:05:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 09:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 09:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 09:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 09:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 09:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 09:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 09:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 09:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 09:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 05/19/2026 09:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 09:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 09:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 09:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 09:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 09:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 10:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 10:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 10:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 10:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 10:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 10:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 10:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 10:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 10:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 10:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 10:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 10:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 10:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 10:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.05s)
ERROR 05/19/2026 10:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 11:06:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 11:06:49 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 11:06:49 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 11:06:49 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 11:06:49 AM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 11:06:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 11:06:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 11:06:51 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 11:06:51 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 11:06:51 AM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 11:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 11:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 11:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 11:06:53 AM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 11:06:53 AM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:49 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 12:06:49 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 12:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 12:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:51 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.11s)
ERROR 05/19/2026 12:06:51 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 12:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 12:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 12:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 12:06:53 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.07s)
ERROR 05/19/2026 12:06:53 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 01:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:49 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 01:05:49 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 01:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:51 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 01:05:51 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 01:05:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 01:05:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 01:05:53 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 01:05:53 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.02s)
ERROR 05/19/2026 01:05:53 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 02:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:49 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 02:06:49 PM cron_common.py ln 263 Failed to get JWT token for site jpt: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 02:06:51 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:51 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.08s)
ERROR 05/19/2026 02:06:51 PM cron_common.py ln 263 Failed to get JWT token for site dev: {'error': 'status code: 500'}
INFO 05/19/2026 02:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 02:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 02:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
ERROR 05/19/2026 02:06:53 PM wp.py ln 60 Failed to get token: 500 <!DOCTYPE html>
<html dir='ltr'>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Database Error</title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
}
.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}
.button:hover,
.button:focus {
background: #f1f1f1;
}
.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}
.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}
</style>
</head>
<body id="error-page">
<div class="wp-die-message"><h1>Error establishing a database connection</h1></div></body>
</html>
(0.04s)
ERROR 05/19/2026 02:06:53 PM cron_common.py ln 263 Failed to get JWT token for site news: {'error': 'status code: 500'}
INFO 05/19/2026 03:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 03:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 03:06:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/19/2026 03:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/19/2026 03:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 03:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/19/2026 03:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/19/2026 03:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.34s)
INFO 05/19/2026 03:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 03:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 03:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 03:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/19/2026 03:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/19/2026 03:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 03:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/19/2026 03:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 03:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/19/2026 03:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 03:06:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 03:06:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 03:06:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 03:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 03:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/19/2026 03:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 03:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/19/2026 03:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 03:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 03:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 04:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:06:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 04:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 04:06:49 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/19/2026 04:06:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/19/2026 04:06:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 04:06:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/19/2026 04:06:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/19/2026 04:06:49 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/19/2026 04:06:49 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 04:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:06:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 04:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 04:06:52 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/19/2026 04:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/19/2026 04:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 04:06:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/19/2026 04:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 04:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 04:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 04:06:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 04:06:55 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 04:06:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 04:06:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 04:06:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/19/2026 04:06:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 04:06:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/19/2026 04:06:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 04:06:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 04:06:55 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 05:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 05:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 05:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/19/2026 05:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/19/2026 05:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 05:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/19/2026 05:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/19/2026 05:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/19/2026 05:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 05:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 05:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 05:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 05:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/19/2026 05:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 05:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/19/2026 05:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 05:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/19/2026 05:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 05:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 05:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 05:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 05:05:55 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 05:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/19/2026 05:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 05:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/19/2026 05:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 05:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 05:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 06:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 06:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 06:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/19/2026 06:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/19/2026 06:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 06:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/19/2026 06:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/19/2026 06:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/19/2026 06:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 06:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 06:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 06:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 06:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/19/2026 06:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 06:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/19/2026 06:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 06:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 06:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 06:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 06:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/19/2026 06:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 06:05:54 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 06:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/19/2026 06:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 06:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/19/2026 06:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 06:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 06:05:55 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 07:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 07:05:49 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/19/2026 07:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 07:05:49 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/19/2026 07:05:49 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/19/2026 07:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 07:05:49 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/19/2026 07:05:49 PM cron_common.py ln 313 filtered characters: 17
INFO 05/19/2026 07:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/19/2026 07:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/19/2026 07:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/19/2026 07:05:52 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/19/2026 07:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/19/2026 07:05:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/19/2026 07:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/19/2026 07:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/19/2026 07:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/19/2026 07:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/19/2026 07:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/19/2026 07:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 04:41:11 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/21/2026 04:41:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 04:41:52 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 04:41:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 04:41:54 PM create_articles.py ln 93 JWT token obtained (1.71s)
INFO 05/21/2026 04:41:54 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 04:41:54 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 04:41:54 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 04:41:54 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 04:41:54 PM create_articles.py ln 100 Characters fetched and filtered (0.52s)
INFO 05/21/2026 04:41:54 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 04:41:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 04:41:57 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 04:41:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 04:41:57 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/21/2026 04:41:57 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 04:41:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 04:41:57 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 04:41:58 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 04:41:58 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/21/2026 04:41:58 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 04:42:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 04:42:00 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 04:42:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 04:42:00 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/21/2026 04:42:00 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 04:42:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 04:42:00 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 04:42:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 04:42:00 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/21/2026 04:42:00 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 05:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 05:07:52 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 05:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 05:07:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 05:07:54 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 05:07:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 05:07:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 05:07:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 05:07:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 06:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 06:05:52 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 06:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 06:05:55 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 06:05:55 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 06:05:55 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 06:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 06:05:57 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 06:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 06:48:20 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/21/2026 07:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 07:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 07:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 07:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/21/2026 07:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 07:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 07:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 07:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 07:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.42s)
INFO 05/21/2026 07:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 07:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 07:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 07:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 07:06:50 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/21/2026 07:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 07:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 07:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 07:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 07:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/21/2026 07:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 07:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 07:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 07:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 07:06:52 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/21/2026 07:06:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 07:06:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 07:06:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 07:06:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 07:06:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/21/2026 07:06:52 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 08:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 08:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' hash='f752bc8a3a3054fb8371902587b68ce440a92472e3db2936161e4a254b6ca9c2' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 08:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 08:05:47 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/21/2026 08:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 08:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 08:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 08:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 08:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/21/2026 08:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 08:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 08:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' hash='76d878b709785692abf38402aa5054597ccec580b31567a17647515f91f29001' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 08:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 08:05:49 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/21/2026 08:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 08:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 08:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 08:05:49 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 08:05:49 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/21/2026 08:05:49 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 08:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 08:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' hash='52965c7aa07063ad6dc0ec00ee8a5b8949c0970213dc1738e930ee77dbfddbf8' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 08:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 08:05:52 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/21/2026 08:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 08:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 08:05:52 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 08:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 08:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/21/2026 08:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 08:37:09 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/21/2026 09:05:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 09:05:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 09:05:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 09:05:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/21/2026 09:05:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 09:05:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 09:05:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 09:05:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 09:05:47 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/21/2026 09:05:47 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 09:05:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 09:05:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 09:05:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 09:05:49 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/21/2026 09:05:49 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 09:05:49 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 09:05:49 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 09:05:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 09:05:50 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/21/2026 09:05:50 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 09:05:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 09:05:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 09:05:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 09:05:53 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/21/2026 09:05:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 09:05:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 09:05:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 09:05:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 09:05:53 PM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 05/21/2026 09:05:53 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 10:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 10:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 10:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 10:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/21/2026 10:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 10:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 10:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 10:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 10:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/21/2026 10:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 10:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 10:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 10:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 10:06:50 PM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 05/21/2026 10:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 10:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 10:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 10:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 10:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/21/2026 10:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 10:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 10:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 10:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 10:06:53 PM create_articles.py ln 93 JWT token obtained (0.80s)
INFO 05/21/2026 10:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 10:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 10:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 10:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 10:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/21/2026 10:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 10:18:27 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/21/2026 10:18:51 PM responses_langchain.py ln 408 Processing message with key: 17794019313148963
WARNING 05/21/2026 10:18:51 PM responses_langchain.py ln 61 Retired model 'claude-sonnet-4-5-20250929' requested; substituting 'claude-sonnet-4-6'
INFO 05/21/2026 10:18:51 PM responses_langchain.py ln 426 Using model: Claude - claude-sonnet-4-5-20250929
INFO 05/21/2026 10:18:52 PM _client.py ln 1740 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/21/2026 10:20:02 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/21/2026 10:20:10 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/21/2026 10:20:58 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/21/2026 11:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 11:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/21/2026 11:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 11:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/21/2026 11:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/21/2026 11:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 11:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/21/2026 11:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/21/2026 11:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/21/2026 11:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 11:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 11:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/21/2026 11:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 11:06:50 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/21/2026 11:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/21/2026 11:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 11:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/21/2026 11:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 11:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/21/2026 11:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/21/2026 11:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/21/2026 11:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/21/2026 11:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/21/2026 11:06:53 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/21/2026 11:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/21/2026 11:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/21/2026 11:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/21/2026 11:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/21/2026 11:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/21/2026 11:06:53 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 12:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 12:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 12:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 12:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 12:06:48 AM create_articles.py ln 100 Characters fetched and filtered (1.09s)
INFO 05/22/2026 12:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 12:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:51 AM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 05/22/2026 12:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 12:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 12:06:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 12:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 12:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 12:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:54 AM create_articles.py ln 93 JWT token obtained (0.53s)
INFO 05/22/2026 12:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 12:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 12:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 12:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 12:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:25:05 AM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/22/2026 01:07:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:07:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 01:07:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:07:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 01:07:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 01:07:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:07:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 01:07:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 01:07:48 AM create_articles.py ln 100 Characters fetched and filtered (1.10s)
INFO 05/22/2026 01:07:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 01:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:07:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 01:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:07:51 AM create_articles.py ln 93 JWT token obtained (0.57s)
INFO 05/22/2026 01:07:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 01:07:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:07:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 01:07:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 01:07:51 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 01:07:51 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 01:07:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:07:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 01:07:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:07:54 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/22/2026 01:07:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 01:07:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:07:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 01:07:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 01:07:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 01:07:54 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 02:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 02:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 02:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 02:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 02:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 02:06:48 AM create_articles.py ln 100 Characters fetched and filtered (1.09s)
INFO 05/22/2026 02:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 02:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 02:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:06:50 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 05/22/2026 02:06:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 02:06:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:06:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 02:06:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 02:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 02:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 02:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 02:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:06:53 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 02:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 02:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:06:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 02:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 02:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 02:06:54 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:06:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:06:48 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 03:06:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:06:48 AM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/22/2026 03:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 03:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 03:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 03:06:48 AM create_articles.py ln 100 Characters fetched and filtered (0.32s)
INFO 05/22/2026 03:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:06:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:06:52 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 03:06:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:06:53 AM create_articles.py ln 93 JWT token obtained (0.78s)
INFO 05/22/2026 03:06:53 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 03:06:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:06:53 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 03:06:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 03:06:53 AM create_articles.py ln 100 Characters fetched and filtered (0.25s)
INFO 05/22/2026 03:06:53 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:06:57 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 03:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:06:58 AM create_articles.py ln 93 JWT token obtained (1.06s)
INFO 05/22/2026 03:06:58 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 03:06:58 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:06:58 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 03:06:58 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 03:06:58 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/22/2026 03:06:58 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:30:41 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 04:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 04:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 04:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 04:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/22/2026 04:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 04:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 04:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:50 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 05/22/2026 04:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 04:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 04:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 04:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 04:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 04:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 04:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:52 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 04:05:52 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 04:05:52 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:52 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 04:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 04:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 04:05:53 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 05:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 05:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 05:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 05:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 05:05:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 05:05:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 05:05:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 05:05:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 05:05:48 AM create_articles.py ln 100 Characters fetched and filtered (1.09s)
INFO 05/22/2026 05:05:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 05:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 05:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 05:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 05:05:50 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/22/2026 05:05:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 05:05:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 05:05:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 05:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 05:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 05:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 05:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 05:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 05:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 05:05:53 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 05:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 05:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 05:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 05:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 05:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 05:05:54 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 06:06:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 06:06:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 06:06:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 06:06:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 06:06:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 06:06:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 06:06:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 06:06:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 06:06:48 AM create_articles.py ln 100 Characters fetched and filtered (1.10s)
INFO 05/22/2026 06:06:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 06:06:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 06:06:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 06:06:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 06:06:51 AM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/22/2026 06:06:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 06:06:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 06:06:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 06:06:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 06:06:51 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 06:06:51 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 06:06:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 06:06:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 06:06:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 06:06:54 AM create_articles.py ln 93 JWT token obtained (0.70s)
INFO 05/22/2026 06:06:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 06:06:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 06:06:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 06:06:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 06:06:54 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 06:06:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 06:06:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 06:06:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/22/2026 06:06:54 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/22/2026 06:06:54 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/22/2026 06:06:55 AM cron_common.py ln 414 Character articles: 100
INFO 05/22/2026 06:06:55 AM create_articles.py ln 126 Character articles loaded (0.79s)
INFO 05/22/2026 06:06:55 AM create_articles.py ln 128 Setup complete (1.98s total)
INFO 05/22/2026 06:06:55 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/22/2026 06:06:55 AM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260522_060655_news_Hawk.log
INFO 05/22/2026 06:06:55 AM article_creation_service.py ln 769 Article creation started for character: Hawk
INFO 05/22/2026 06:06:56 AM article_creation_service.py ln 769 WordPress authentication successful (0.51s)
INFO 05/22/2026 06:06:56 AM article_creation_service.py ln 769 Fetched WP users (0.24s)
INFO 05/22/2026 06:06:57 AM article_creation_service.py ln 769 Loaded 100 articles for character (0.81s)
INFO 05/22/2026 06:06:57 AM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.50s)
INFO 05/22/2026 06:06:57 AM article_creation_service.py ln 769 Searching for 'top world and US headline news today' (topic: news)
INFO 05/22/2026 06:06:57 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/22/2026 06:06:57 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/22/2026 06:06:57 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/22/2026 06:06:59 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/22/2026 06:06:59 AM chat.py ln 159 Found 8 results
INFO 05/22/2026 06:06:59 AM article_creation_service.py ln 769 Found 8 search results (1.64s)
INFO 05/22/2026 06:06:59 AM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260522_060655_news_Hawk_search.md
INFO 05/22/2026 06:06:59 AM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/22/2026 06:08:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 06:08:10 AM article_creation_service.py ln 769 Generated article - Hawk’s Thursday Brief: Tense Trump–Netanyahu call; GOP skirmish over $1.8B fund; mortgage pain; 1,000 new ocean species; Everest crowds; Harvard tightens A’s (70.96s)
INFO 05/22/2026 06:08:10 AM article_creation_service.py ln 769 Created WP post 1269 (0.32s)
INFO 05/22/2026 06:08:22 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 06:08:22 AM wp.py ln 955 Prompt: **Featured image prompt:**
Create a polished editorial news-briefing illustration in a modern digital collage style, 16:9 aspect ratio. Show a dramatic global news mosaic: at center, a glowing world map with tense phone lines connecting Washington, Israel, and Iran; on one side, the U.S. Capitol with legal documents and dollar symbols suggesting political funding battles; a small house with an upward mortgage-rate arrow; a deep-blue ocean scene filled with newly discovered colorful marine species; a crowded snowy Mount Everest ridge with tiny climbers; and an Ivy League-style campus gate with a red “A” grade being tightened by a pencil or ruler. Use cinematic lighting, crisp details, deep blues, reds, and whites, conveying urgency, complexity, and a busy Thursday news roundup. Avoid real politician likenesses, logos, or readable text.
INFO 05/22/2026 06:08:22 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/22/2026 06:09:57 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/22/2026 06:09:57 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/22/2026 06:09:57 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22.jpeg
INFO 05/22/2026 06:09:57 AM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-22.jpeg
INFO 05/22/2026 06:09:57 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDMwMDE2LCJuYmYiOjE3Nzk0MzAwMTYsImV4cCI6MTc4MDAzNDgxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.GBhtmh4fGOTsQukjSHUu1W_ZxZFryhpwoLH4ksSaReA
INFO 05/22/2026 06:09:57 AM image.py ln 220 filename is 2026-05-22.webp
INFO 05/22/2026 06:09:57 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22.webp'>}
INFO 05/22/2026 06:09:58 AM article_creation_service.py ln 769 Featured image posted (108.09s)
INFO 05/22/2026 06:10:11 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 06:10:11 AM wp.py ln 990 Secondary Image Prompt: Create a cinematic editorial illustration for a global news briefing: a moody, high-contrast collage centered on a glowing world map at dusk, with thin red communication lines stretching between Washington, the Middle East, and Europe to suggest tense diplomacy and NATO coordination. In the foreground, layer symbolic elements: a shadowed phone handset with crackling red light, the silhouette of the U.S. Capitol partially obscured by legal documents and dollar figures, a small suburban house under the weight of an upward mortgage-rate arrow, and a bank ledger fading into dark blue shadows. Balance the tension with a luminous deep-ocean scene along the bottom edge: bioluminescent newly discovered marine creatures, coral textures, and research-light beams cutting through dark water. On one side, show a cold, crowded Everest ridge with tiny climbers in a line against blowing snow; on the other, an Ivy League classroom motif with a chalkboard showing a large “A” being revised downward, without readable text or real logos. Use a sophisticated news-magazine style, semi-realistic digital painting, layered composition, dramatic lighting, deep navy and charcoal tones with accents of crimson, icy white, and electric aqua. No recognizable political faces, no actual brand logos, no readable headlines. Wide 16:9 aspect ratio, polished, visually dense but coherent, suitable as a secondary image for a daily briefing article.
INFO 05/22/2026 06:10:11 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/22/2026 06:11:39 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/22/2026 06:11:39 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/22/2026 06:11:39 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-1.jpeg
INFO 05/22/2026 06:11:39 AM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-22-1.jpeg
INFO 05/22/2026 06:11:39 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDMwMDE2LCJuYmYiOjE3Nzk0MzAwMTYsImV4cCI6MTc4MDAzNDgxNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.GBhtmh4fGOTsQukjSHUu1W_ZxZFryhpwoLH4ksSaReA
INFO 05/22/2026 06:11:40 AM image.py ln 220 filename is 2026-05-22-1.webp
INFO 05/22/2026 06:11:40 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-1.webp'>}
INFO 05/22/2026 06:11:40 AM article_creation_service.py ln 769 Secondary image uploaded (102.14s)
INFO 05/22/2026 06:11:40 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/22/2026 06:11:41 AM wp.py ln 1111 Post content updated successfully for post 1269
INFO 05/22/2026 06:11:41 AM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/22/2026 06:11:45 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/22/2026 06:11:52 AM chat.py ln 348 AI comment: The article accurately represents the key facts from its sources: the tense Trump-Netanyahu call on Iran, Republicans revolting over the $1.8 billion anti-weaponization fund, Trump allies lining up for the separate $1.8 billion legal fund, the Minnesota fraud sentence, Rubio's NATO visit to Sweden, the Ebola outbreak and American arriving in Czech Republic, mortgage rates at a 9-month high, the Ocean Census discovering 1,000+ new marine species, Harvard tightening grading standards, the Michigan house fire baby rescue, and Everest crowding.
One minor note: the article describes Rubio as "Sen.
INFO 05/22/2026 06:11:52 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/22/2026 06:11:52 AM article_creation_service.py ln 769 Fact-check comment posted (11.15s)
INFO 05/22/2026 06:11:52 AM article_creation_service.py ln 769 Article creation completed successfully (total: 296.64s)
INFO 05/22/2026 06:11:52 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/22/2026 06:11:52 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/22/2026 06:11:52 AM create_articles.py ln 203 Script completed (298.62s total)
INFO 05/22/2026 07:05:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:05:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 07:05:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:05:48 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 07:05:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 07:05:48 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:05:48 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 07:05:48 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 07:05:48 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/22/2026 07:05:48 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 07:05:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:05:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 07:05:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:05:51 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/22/2026 07:05:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 07:05:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:05:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 07:05:51 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 07:05:51 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 07:05:51 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 07:05:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:05:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 07:05:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:05:54 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 07:05:54 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 07:05:54 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:05:54 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 07:05:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 07:05:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 07:05:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 07:05:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 07:05:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/22/2026 07:05:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 07:05:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/22/2026 07:05:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 08:07:47 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:07:47 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 08:07:47 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:07:47 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 08:07:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 08:07:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:07:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 08:07:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 08:07:47 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 08:07:47 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 08:07:50 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:07:50 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 08:07:50 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:07:50 AM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/22/2026 08:07:50 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 08:07:50 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:07:50 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 08:07:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 08:07:50 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 08:07:50 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 08:07:53 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:07:53 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 08:07:53 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:07:53 AM create_articles.py ln 93 JWT token obtained (0.73s)
INFO 05/22/2026 08:07:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 08:07:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:07:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 08:07:54 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 08:07:54 AM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/22/2026 08:07:54 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 08:07:54 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 08:07:54 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/22/2026 08:07:54 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 08:07:54 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/22/2026 08:07:54 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 09:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:48 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 09:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:48 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/22/2026 09:07:48 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 09:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 09:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 09:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 09:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 09:07:51 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:51 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 09:07:51 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:51 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/22/2026 09:07:51 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 09:07:51 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:51 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 09:07:52 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 09:07:52 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 09:07:52 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 09:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:54 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 09:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:55 AM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/22/2026 09:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 09:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:55 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 09:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 09:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 09:07:55 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 09:07:55 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 09:07:55 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/22/2026 09:07:55 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 09:07:55 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/22/2026 09:07:55 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 10:07:48 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:07:48 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 10:07:48 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:07:49 AM create_articles.py ln 93 JWT token obtained (0.63s)
INFO 05/22/2026 10:07:49 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 10:07:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:07:49 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 10:07:49 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 10:07:49 AM create_articles.py ln 100 Characters fetched and filtered (0.33s)
INFO 05/22/2026 10:07:49 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:07:54 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:07:54 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 10:07:54 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:07:55 AM create_articles.py ln 93 JWT token obtained (1.01s)
INFO 05/22/2026 10:07:55 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 10:07:55 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:07:55 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 10:07:55 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 10:07:55 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 10:07:55 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:07:58 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:07:58 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 10:07:58 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:07:59 AM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/22/2026 10:07:59 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 10:07:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:07:59 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 10:07:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 10:07:59 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 10:07:59 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 10:07:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 10:07:59 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/22/2026 10:07:59 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 10:07:59 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/22/2026 10:07:59 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 10:34:15 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/22/2026 11:05:46 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:05:46 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 11:05:46 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:05:47 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 11:05:47 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 11:05:47 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:05:47 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 11:05:47 AM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 11:05:47 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/22/2026 11:05:47 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 11:05:49 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:05:49 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 11:05:49 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:05:49 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/22/2026 11:05:49 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 11:05:49 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:05:49 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 11:05:50 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 11:05:50 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/22/2026 11:05:50 AM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 11:05:52 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:05:52 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 11:05:52 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:05:52 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/22/2026 11:05:53 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 11:05:53 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:05:53 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 11:05:53 AM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 11:05:53 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 11:05:53 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/22/2026 11:05:53 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 11:05:53 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/22/2026 11:05:53 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 11:05:53 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/22/2026 11:05:53 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 12:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 12:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:47 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 12:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 12:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 12:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 12:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 12:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 12:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:50 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/22/2026 12:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 12:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 12:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 12:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 12:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 12:06:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 12:06:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 12:06:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 12:06:53 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 12:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 12:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 12:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 12:06:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 12:06:53 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 12:06:53 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/22/2026 12:06:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 12:06:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.21s)
INFO 05/22/2026 12:06:53 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/22/2026 12:06:53 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/22/2026 12:06:54 PM cron_common.py ln 414 Character articles: 47
INFO 05/22/2026 12:06:54 PM create_articles.py ln 126 Character articles loaded (0.46s)
INFO 05/22/2026 12:06:54 PM create_articles.py ln 128 Setup complete (1.44s total)
INFO 05/22/2026 12:06:54 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/22/2026 12:06:54 PM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260522_120654_news_Dusty.log
INFO 05/22/2026 12:06:54 PM article_creation_service.py ln 769 Article creation started for character: Dusty
INFO 05/22/2026 12:06:54 PM article_creation_service.py ln 769 WordPress authentication successful (0.50s)
INFO 05/22/2026 12:06:54 PM article_creation_service.py ln 769 Fetched WP users (0.24s)
INFO 05/22/2026 12:06:55 PM article_creation_service.py ln 769 Loaded 47 articles for character (0.45s)
INFO 05/22/2026 12:06:55 PM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.50s)
INFO 05/22/2026 12:06:55 PM article_creation_service.py ln 769 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/22/2026 12:06:55 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/22/2026 12:06:55 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/22/2026 12:06:58 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/22/2026 12:06:58 PM chat.py ln 159 Found 5 results
INFO 05/22/2026 12:06:58 PM article_creation_service.py ln 769 Found 5 search results (2.36s)
INFO 05/22/2026 12:06:58 PM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260522_120654_news_Dusty_search.md
INFO 05/22/2026 12:06:58 PM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/22/2026 12:08:02 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 12:08:02 PM article_creation_service.py ln 769 Generated article - Hurricane Season 2026 Opens Under El Niño—and a Forecasting Stress Test (64.08s)
INFO 05/22/2026 12:08:02 PM article_creation_service.py ln 769 Created WP post 1274 (0.34s)
INFO 05/22/2026 12:08:11 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 12:08:11 PM wp.py ln 955 Prompt: Create a dramatic editorial-style featured image showing the 2026 hurricane season as a forecasting stress test: a large satellite-view hurricane swirl over the Atlantic Ocean near the U.S. coastline, with subtle warm Pacific/El Niño color gradients in the background. In the foreground, overlay a modern weather forecasting operations room with meteorologists studying glowing storm-track maps, satellite imagery, and warning dashboards. Add visual hints of uncertainty and strained infrastructure: dimmed monitors, sparse workstations, weather balloon data lines, and model-track spaghetti plots fading into the storm. Mood should be serious but not apocalyptic, emphasizing preparedness, science, and public safety. Photorealistic cinematic lighting, high detail, atmospheric blues and storm grays with warm orange ocean-temperature accents. No readable text, no logos, no political imagery. 16:9 aspect ratio.
INFO 05/22/2026 12:08:11 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/22/2026 12:09:27 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/22/2026 12:09:27 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/22/2026 12:09:27 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-2.jpeg
INFO 05/22/2026 12:09:27 PM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-22-2.jpeg
INFO 05/22/2026 12:09:27 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDUxNjE0LCJuYmYiOjE3Nzk0NTE2MTQsImV4cCI6MTc4MDA1NjQxNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6iXTt5XpYlqE-Mff05S0FPFZdMcBLDigJyGKfoo2ThE
INFO 05/22/2026 12:09:27 PM image.py ln 220 filename is 2026-05-22-2.webp
INFO 05/22/2026 12:09:27 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-2.webp'>}
INFO 05/22/2026 12:09:28 PM article_creation_service.py ln 769 Featured image posted (86.22s)
INFO 05/22/2026 12:09:40 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/22/2026 12:09:40 PM wp.py ln 990 Secondary Image Prompt: Create a cinematic editorial illustration showing a coastal weather forecasting command center overlooking a storm-darkened ocean at dusk. In the foreground, a meteorologist studies layered forecast screens displaying a swirling Atlantic hurricane track, El Niño heat anomalies in the Pacific, satellite imagery, and warning cones, while a partially transparent weather balloon and ocean buoy data streams appear as glowing lines across the scene. Outside the window, a tense coastline with palm trees, boarded homes, and evacuation route signs sits beneath dramatic clouds; offshore, a distant hurricane spiral forms but is disrupted by sharp upper-level wind shear visualized as streaking bands of light. In the far background, subtly include contrasting climate extremes: wildfire-orange haze over dry hills on one side, snowy mountains under cold blue light on the other, and a heat-shimmering city silhouette on the horizon.
Mood: urgent but controlled, emphasizing preparedness, uncertainty, and fragile public-safety infrastructure.
Color palette: deep navy storm clouds, teal ocean, electric cyan forecast graphics, warm orange warning highlights, muted gray-green coastline.
Style: high-detail digital painting, modern news-magazine aesthetic, realistic atmosphere with subtle infographic overlays, dramatic lighting, layered textures of rain, glass reflections, satellite data, and ocean turbulence.
Composition: wide horizontal format, strong depth from indoor forecasting desk to coastal horizon, no readable text, no logos, no people in distress, professional and thought-provoking.
INFO 05/22/2026 12:09:40 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/22/2026 12:10:52 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/22/2026 12:10:52 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/22/2026 12:10:52 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-3.jpeg
INFO 05/22/2026 12:10:52 PM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-22-3.jpeg
INFO 05/22/2026 12:10:52 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDUxNjE0LCJuYmYiOjE3Nzk0NTE2MTQsImV4cCI6MTc4MDA1NjQxNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6iXTt5XpYlqE-Mff05S0FPFZdMcBLDigJyGKfoo2ThE
INFO 05/22/2026 12:10:53 PM image.py ln 220 filename is 2026-05-22-3.webp
INFO 05/22/2026 12:10:53 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-22-3.webp'>}
INFO 05/22/2026 12:10:53 PM article_creation_service.py ln 769 Secondary image uploaded (85.19s)
INFO 05/22/2026 12:10:54 PM wp.py ln 1082 Inserted image after second paragraph
INFO 05/22/2026 12:10:54 PM wp.py ln 1111 Post content updated successfully for post 1274
INFO 05/22/2026 12:10:54 PM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/22/2026 12:10:56 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/22/2026 12:11:02 PM chat.py ln 348 AI comment: The article accurately represents the source material across all five sources. The hurricane forecast numbers (8-14 named storms, 3-6 hurricanes, 1-3 major hurricanes), El Niño probabilities (98%/80%), Pacific outlook (70% above-normal, 15-22 named storms), Morales quotes about diminished forecasting confidence, the Science Advances study on AI model underperformance, European temperature swings, US weather details, and the Karachi/South Asia heat attribution findings all match the sources closely.
One minor note: the article describes Morales as saying the country enters hurricane season wit
INFO 05/22/2026 12:11:02 PM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/22/2026 12:11:02 PM article_creation_service.py ln 769 Fact-check comment posted (8.59s)
INFO 05/22/2026 12:11:02 PM article_creation_service.py ln 769 Article creation completed successfully (total: 248.81s)
INFO 05/22/2026 12:11:02 PM create_articles.py ln 184 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/22/2026 12:11:02 PM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/22/2026 12:11:02 PM create_articles.py ln 203 Script completed (250.27s total)
INFO 05/22/2026 01:06:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:06:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 01:06:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:06:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 01:06:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 01:06:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:06:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 01:06:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 01:06:47 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/22/2026 01:06:47 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 01:06:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:06:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 01:06:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:06:50 PM create_articles.py ln 93 JWT token obtained (0.81s)
INFO 05/22/2026 01:06:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 01:06:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:06:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 01:06:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 01:06:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 01:06:50 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 01:06:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 01:06:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 01:06:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 01:06:53 PM create_articles.py ln 93 JWT token obtained (0.74s)
INFO 05/22/2026 01:06:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 01:06:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 01:06:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 01:06:54 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 01:06:54 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/22/2026 01:06:54 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/22/2026 01:06:54 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 01:06:54 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/22/2026 01:06:54 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 01:06:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.24s)
INFO 05/22/2026 01:06:54 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 02:07:47 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:07:47 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 02:07:47 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:07:47 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/22/2026 02:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 02:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 02:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 02:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/22/2026 02:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 02:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 02:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:07:50 PM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/22/2026 02:07:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 02:07:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:07:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 02:07:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 02:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 02:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 02:07:53 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 02:07:53 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 02:07:53 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 02:07:53 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/22/2026 02:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 02:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 02:07:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 02:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 02:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 02:07:53 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/22/2026 02:07:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 02:07:54 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/22/2026 02:07:54 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 02:07:54 PM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/22/2026 02:07:54 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 02:42:34 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/22/2026 02:44:01 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/22/2026 02:46:39 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/22/2026 03:07:46 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:07:46 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 03:07:46 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:07:47 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 03:07:47 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 03:07:47 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:07:47 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 03:07:47 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 03:07:47 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/22/2026 03:07:47 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:07:49 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:07:49 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 03:07:49 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:07:50 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/22/2026 03:07:50 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 03:07:50 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:07:50 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 03:07:50 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 03:07:50 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 03:07:50 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 03:07:52 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 03:07:52 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 03:07:52 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 03:07:53 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/22/2026 03:07:53 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 03:07:53 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:07:53 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 03:07:53 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 03:07:53 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 03:07:53 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/22/2026 03:07:53 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 03:07:53 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/22/2026 03:07:53 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 03:07:53 PM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/22/2026 03:07:53 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 03:11:58 PM root.py ln 35 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 03:11:58 PM drupal.py ln 237 site is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 03:11:58 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 03:11:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:12:07 PM user.py ln 30 User login attempt - site: chat-dev.turmansolutions.ai, username: John, site_config: cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 03:12:07 PM user.py ln 37 Login request URL: https://dev.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/22/2026 03:12:08 PM user.py ln 57 Login response status code: 200
INFO 05/22/2026 03:12:08 PM user.py ln 58 Login response headers: {'Date': 'Fri, 22 May 2026 15:12:07 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://dev.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/22/2026 03:12:08 PM user.py ln 59 Login response content length: 340 bytes
INFO 05/22/2026 03:12:08 PM user.py ln 64 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzk0NjI3MjgsIm5iZiI6MTc3OTQ2MjcyOCwiZXhwIjoxNzgwMDY3NTI4LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.08jby2HGuUYj4kvzp_5LpJTQf2yENbkzuhO2jaqdIdY","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 05/22/2026 03:12:08 PM user.py ln 85 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzk0NjI3MjgsIm5iZiI6MTc3OTQ2MjcyOCwiZXhwIjoxNzgwMDY3NTI4LCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.08jby2HGuUYj4kvzp_5LpJTQf2yENbkzuhO2jaqdIdY', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/22/2026 03:12:08 PM user.py ln 95 Login successful for John on https://dev.turmansolutions.ai
INFO 05/22/2026 03:15:43 PM root.py ln 35 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/22/2026 03:15:43 PM drupal.py ln 237 site is cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/22/2026 03:15:43 PM drupal.py ln 183 Fetched 0 characters for target_id 14
INFO 05/22/2026 03:15:43 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 03:15:52 PM user.py ln 30 User login attempt - site: chat-demo.turmansolutions.ai, username: John, site_config: cb_host='chat-demo.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://demo.turmansolutions.ai' wp_dir='demo.tsai.ai' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='demo' activity_level=0.0 drupal_uid='68c9476f-8918-459b-8b77-539b470880bc' drupal_target_id=14
INFO 05/22/2026 03:15:52 PM user.py ln 37 Login request URL: https://demo.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/22/2026 03:15:52 PM user.py ln 57 Login response status code: 200
INFO 05/22/2026 03:15:52 PM user.py ln 58 Login response headers: {'Date': 'Fri, 22 May 2026 15:15:52 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://demo.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/22/2026 03:15:52 PM user.py ln 59 Login response content length: 337 bytes
INFO 05/22/2026 03:15:52 PM user.py ln 64 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2RlbW8udHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDYyOTUyLCJuYmYiOjE3Nzk0NjI5NTIsImV4cCI6MTc4MDA2Nzc1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.BrN-PTS6i7OB9yP_fIcZBrrtsWTOkw2sS7wgS6v_bko","user_email":"jturman87@gmail.com","user_nicename":"john","user_display_name":"John"}
INFO 05/22/2026 03:15:52 PM user.py ln 85 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2RlbW8udHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDYyOTUyLCJuYmYiOjE3Nzk0NjI5NTIsImV4cCI6MTc4MDA2Nzc1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.BrN-PTS6i7OB9yP_fIcZBrrtsWTOkw2sS7wgS6v_bko', 'user_email': 'jturman87@gmail.com', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/22/2026 03:15:52 PM user.py ln 95 Login successful for John on https://demo.turmansolutions.ai
INFO 05/22/2026 03:46:13 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/22/2026 04:05:48 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:48 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:05:48 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:48 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 04:05:48 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 04:05:48 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:48 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 04:05:48 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 04:05:48 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/22/2026 04:05:48 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 04:05:51 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:51 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 04:05:51 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:52 PM create_articles.py ln 93 JWT token obtained (0.56s)
INFO 05/22/2026 04:05:52 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 04:05:52 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:52 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 04:05:52 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 04:05:52 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/22/2026 04:05:52 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 04:05:54 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 04:05:54 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 04:05:54 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 04:05:55 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/22/2026 04:05:55 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 04:05:55 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:05:55 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 04:05:55 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 04:05:55 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/22/2026 04:05:55 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/22/2026 04:05:55 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/22/2026 04:05:55 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/22/2026 04:05:55 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/22/2026 04:05:55 PM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/22/2026 04:05:55 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/22/2026 04:15:11 PM root.py ln 35 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 04:15:12 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 04:15:12 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/22/2026 04:15:12 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:15:19 PM user.py ln 30 User login attempt - site: chat-sandbox.turmansolutions.ai, username: John, site_config: cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 04:15:19 PM user.py ln 37 Login request URL: https://sandbox.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/22/2026 04:15:20 PM user.py ln 57 Login response status code: 200
INFO 05/22/2026 04:15:20 PM user.py ln 58 Login response headers: {'Date': 'Fri, 22 May 2026 16:15:19 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://sandbox.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/22/2026 04:15:20 PM user.py ln 59 Login response content length: 345 bytes
INFO 05/22/2026 04:15:20 PM user.py ln 64 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NhbmRib3gudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDY2NTIwLCJuYmYiOjE3Nzk0NjY1MjAsImV4cCI6MTc4MDA3MTMyMCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.vi2Q4qHo4MKgjUPwZ1WJMOd0skjur1xpxOkR7frHhnQ","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 05/22/2026 04:15:20 PM user.py ln 85 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NhbmRib3gudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NDY2NTIwLCJuYmYiOjE3Nzk0NjY1MjAsImV4cCI6MTc4MDA3MTMyMCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.vi2Q4qHo4MKgjUPwZ1WJMOd0skjur1xpxOkR7frHhnQ', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/22/2026 04:15:20 PM user.py ln 95 Login successful for John on https://sandbox.turmansolutions.ai
INFO 05/22/2026 04:16:08 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 04:16:08 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/22/2026 04:16:08 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:16:08 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/22/2026 04:16:08 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/22/2026 04:16:28 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 04:16:28 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/22/2026 04:16:28 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:16:37 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 05/22/2026 04:16:42 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 05/22/2026 04:16:42 PM _client.py ln 1740 HTTP Request: GET https://api.turmansolutions.ai/api/v1/cms/characters/public/ "HTTP/1.1 200 OK"
INFO 05/22/2026 04:16:52 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 05/22/2026 04:48:11 PM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:48:11 PM drupal.py ln 237 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:48:11 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 04:48:11 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 04:48:18 PM user.py ln 30 User login attempt - site: chat.johnturman.net, username: John, site_config: cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 04:48:18 PM user.py ln 37 Login request URL: https://johnturman.net/wp-json/jwt-auth/v1/token
INFO 05/22/2026 04:48:18 PM user.py ln 57 Login response status code: 200
INFO 05/22/2026 04:48:18 PM user.py ln 58 Login response headers: {'Date': 'Fri, 22 May 2026 16:48:18 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://johnturman.net/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/22/2026 04:48:18 PM user.py ln 59 Login response content length: 325 bytes
INFO 05/22/2026 04:48:18 PM user.py ln 64 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2pvaG50dXJtYW4ubmV0IiwiaWF0IjoxNzc5NDY4NDk4LCJuYmYiOjE3Nzk0Njg0OTgsImV4cCI6MTc4MDA3MzI5OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.llmRqLxNa26siZalo5zQHgyas4jj7FzgFx-pxLfkZ5M","user_email":"jturman87@gmail.com","user_nicename":"john","user_display_name":"John"}
INFO 05/22/2026 04:48:18 PM user.py ln 85 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2pvaG50dXJtYW4ubmV0IiwiaWF0IjoxNzc5NDY4NDk4LCJuYmYiOjE3Nzk0Njg0OTgsImV4cCI6MTc4MDA3MzI5OCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.llmRqLxNa26siZalo5zQHgyas4jj7FzgFx-pxLfkZ5M', 'user_email': 'jturman87@gmail.com', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/22/2026 04:48:18 PM user.py ln 95 Login successful for John on https://johnturman.net
INFO 05/22/2026 07:30:18 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/22/2026 07:32:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:32:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 07:32:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:32:20 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/22/2026 07:32:21 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 07:32:21 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:32:21 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 07:32:21 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 07:32:21 PM create_articles.py ln 100 Characters fetched and filtered (0.44s)
INFO 05/22/2026 07:32:21 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 07:32:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:32:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 07:32:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:32:23 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/22/2026 07:32:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 07:32:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:32:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 07:32:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 07:32:23 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/22/2026 07:32:23 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 07:32:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 07:32:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 07:32:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 07:32:27 PM create_articles.py ln 93 JWT token obtained (1.53s)
INFO 05/22/2026 07:32:27 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 07:32:27 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 07:32:27 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 07:32:27 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 07:32:27 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 07:32:27 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 08:06:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:06:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 08:06:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:06:20 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/22/2026 08:06:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 08:06:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:06:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 08:06:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 08:06:20 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/22/2026 08:06:20 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 08:06:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:06:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 08:06:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:06:23 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/22/2026 08:06:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 08:06:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:06:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 08:06:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 08:06:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/22/2026 08:06:23 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 08:06:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 08:06:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 08:06:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 08:06:26 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/22/2026 08:06:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 08:06:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 08:06:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 08:06:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 08:06:26 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/22/2026 08:06:26 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 09:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 09:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:20 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/22/2026 09:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 09:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 09:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 09:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/22/2026 09:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 09:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 09:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:23 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/22/2026 09:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 09:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 09:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 09:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/22/2026 09:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 09:07:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 09:07:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 09:07:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 09:07:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 09:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 09:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 09:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 09:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 09:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/22/2026 09:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:05:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:05:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 10:05:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:05:20 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/22/2026 10:05:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 10:05:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:05:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 10:05:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 10:05:20 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/22/2026 10:05:20 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:05:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:05:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 10:05:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:05:23 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/22/2026 10:05:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 10:05:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:05:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 10:05:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 10:05:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/22/2026 10:05:23 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:05:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 10:05:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 10:05:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 10:05:26 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/22/2026 10:05:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 10:05:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 10:05:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 10:05:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 10:05:26 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 10:05:26 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 10:11:11 PM root.py ln 35 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 10:11:11 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/22/2026 10:11:11 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/22/2026 10:11:12 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/22/2026 11:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:07:20 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/22/2026 11:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/22/2026 11:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/22/2026 11:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/22/2026 11:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 11:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 11:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/22/2026 11:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:07:23 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/22/2026 11:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/22/2026 11:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/22/2026 11:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 11:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/22/2026 11:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/22/2026 11:07:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/22/2026 11:07:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/22/2026 11:07:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/22/2026 11:07:26 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/22/2026 11:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/22/2026 11:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/22/2026 11:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/22/2026 11:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/22/2026 11:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/22/2026 11:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 12:07:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:07:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 12:07:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:07:20 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 12:07:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 12:07:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:07:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 12:07:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 12:07:20 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 12:07:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 12:07:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:07:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 12:07:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:07:23 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/23/2026 12:07:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 12:07:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:07:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 12:07:24 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 12:07:24 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 12:07:24 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 12:07:26 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:07:26 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 12:07:26 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:07:26 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/23/2026 12:07:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 12:07:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:07:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 12:07:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 12:07:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 12:07:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 01:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 01:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 01:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 01:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 01:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 01:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 01:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:23 AM create_articles.py ln 93 JWT token obtained (0.45s)
INFO 05/23/2026 01:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 01:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 01:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 01:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 01:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 01:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:26 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/23/2026 01:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 01:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 01:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 01:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 01:06:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 02:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 02:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:06:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 02:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 02:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 02:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 02:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 02:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 02:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 02:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:06:23 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 02:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 02:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 02:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 02:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 02:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 02:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 02:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:06:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 02:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 02:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 02:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 02:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 02:06:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 03:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:20 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 03:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 03:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 03:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 03:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/23/2026 03:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 03:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:23 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 03:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 03:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 03:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 03:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 03:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 03:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 03:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 03:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 03:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 03:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 03:06:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 04:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:06:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 04:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 04:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 04:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 04:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 04:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 04:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:06:23 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 04:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 04:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 04:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 04:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 04:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:06:26 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:06:26 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 04:06:26 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:06:26 AM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/23/2026 04:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 04:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 04:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 04:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 04:06:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:07:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:07:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 05:07:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:07:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 05:07:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 05:07:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:07:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 05:07:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 05:07:20 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 05:07:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:07:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:07:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 05:07:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:07:23 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/23/2026 05:07:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 05:07:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:07:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 05:07:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 05:07:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 05:07:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:07:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:07:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 05:07:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:07:26 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 05:07:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 05:07:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:07:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 05:07:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 05:07:26 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 05:07:26 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:07:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:07:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 06:07:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:07:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 06:07:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 06:07:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:07:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 06:07:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 06:07:20 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 06:07:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:07:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:07:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 06:07:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:07:23 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 06:07:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 06:07:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:07:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 06:07:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 06:07:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 06:07:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:07:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:07:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 06:07:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:07:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 06:07:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 06:07:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:07:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 06:07:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 06:07:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 06:07:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 06:07:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 06:07:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.07s)
INFO 05/23/2026 06:07:26 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/23/2026 06:07:26 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/23/2026 06:07:27 AM cron_common.py ln 414 Character articles: 100
INFO 05/23/2026 06:07:27 AM create_articles.py ln 126 Character articles loaded (0.61s)
INFO 05/23/2026 06:07:27 AM create_articles.py ln 128 Setup complete (1.19s total)
INFO 05/23/2026 06:07:27 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/23/2026 06:07:27 AM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260523_060727_news_Hawk.log
INFO 05/23/2026 06:07:27 AM article_creation_service.py ln 769 Article creation started for character: Hawk
INFO 05/23/2026 06:07:27 AM article_creation_service.py ln 769 WordPress authentication successful (0.36s)
INFO 05/23/2026 06:07:27 AM article_creation_service.py ln 769 Fetched WP users (0.10s)
INFO 05/23/2026 06:07:28 AM article_creation_service.py ln 769 Loaded 100 articles for character (0.62s)
INFO 05/23/2026 06:07:28 AM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.21s)
INFO 05/23/2026 06:07:28 AM article_creation_service.py ln 769 Searching for 'top world and US headline news today' (topic: news)
INFO 05/23/2026 06:07:28 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/23/2026 06:07:28 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/23/2026 06:07:28 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/23/2026 06:07:29 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/23/2026 06:07:29 AM chat.py ln 159 Found 8 results
INFO 05/23/2026 06:07:29 AM article_creation_service.py ln 769 Found 8 search results (1.53s)
INFO 05/23/2026 06:07:29 AM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260523_060727_news_Hawk_search.md
INFO 05/23/2026 06:07:29 AM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/23/2026 06:08:07 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/23/2026 06:08:07 AM article_creation_service.py ln 769 Generated article - Hawk’s Friday Brief: Voter jitters, GOP stalls ICE vote, conspiracy churn, and Iran risks ripple through shipping (37.66s)
INFO 05/23/2026 06:08:07 AM article_creation_service.py ln 769 Created WP post 1280 (0.21s)
INFO 05/23/2026 06:08:15 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/23/2026 06:08:15 AM wp.py ln 955 Prompt: Create a moody editorial-style featured image for a Friday political and economic news briefing. Show a split-screen collage: in the foreground, anxious voters and households silhouetted near a rising mortgage-rate chart and dim Wall Street ticker lights; in the midground, the U.S. Capitol under stormy clouds with a stalled vote symbolized by frozen paperwork and red-blue partisan lighting; in the background, oil tankers navigating a tense, dark Strait of Hormuz with warning buoys and subtle military silhouettes on the horizon. Add faint visual motifs of misinformation—fragmented social media bubbles and distorted headlines—without readable text. Tone should be serious, high-stakes, and analytical, with cool blues, grays, and muted reds. Cinematic lighting, realistic digital illustration, sharp composition, news-magazine cover style, no logos, no readable words, no caricatures, no gore. Aspect ratio 16:9.
INFO 05/23/2026 06:08:15 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/23/2026 06:10:07 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/23/2026 06:10:07 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/23/2026 06:10:07 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-23.jpeg
INFO 05/23/2026 06:10:07 AM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-23.jpeg
INFO 05/23/2026 06:10:07 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NTE2NDQ3LCJuYmYiOjE3Nzk1MTY0NDcsImV4cCI6MTc4MDEyMTI0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.u5fv9VguEh5fi04kK33Xuqh1KUrgJiVmUz8dsWGbblE
INFO 05/23/2026 06:10:08 AM image.py ln 220 filename is 2026-05-23.webp
INFO 05/23/2026 06:10:08 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-23.webp'>}
INFO 05/23/2026 06:10:08 AM article_creation_service.py ln 769 Featured image posted (121.09s)
INFO 05/23/2026 06:10:16 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/23/2026 06:10:16 AM wp.py ln 990 Secondary Image Prompt: **Image generation prompt:**
Create a moody editorial illustration for a Friday political/economic briefing. Show a stormy split-screen landscape where Washington politics, anxious consumers, and global shipping risk collide. In the foreground, a worried voter silhouette stands at a kitchen table with scattered bills, a rising mortgage-rate chart, and a dim phone screen showing market candlesticks. Behind them, the U.S. Capitol appears partially obscured by dark clouds and tangled red-and-blue threads, suggesting stalled negotiations and political gridlock. To one side, ghostly social-media bubbles and fragmented headlines swirl like static, evoking conspiracy theories and eroding public trust without using readable text.
In the distance, transition into a tense maritime scene: oil tankers clustered near a narrow strait under a hazy orange horizon, with legal documents, insurance forms, and warning buoys floating like debris on choppy water. Use a cinematic news-magazine style, semi-realistic digital painting with subtle collage elements. Palette: deep navy, charcoal gray, muted red, cold white highlights, and flashes of amber from the geopolitical-risk horizon. The mood should feel uneasy, compressed, and volatile, like multiple crises converging before a storm. High contrast lighting, textured paper grain, dramatic composition, no readable text, no specific politician likenesses, no logos.
INFO 05/23/2026 06:10:16 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/23/2026 06:11:31 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/23/2026 06:11:31 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/23/2026 06:11:31 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-23-1.jpeg
INFO 05/23/2026 06:11:31 AM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-23-1.jpeg
INFO 05/23/2026 06:11:31 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NTE2NDQ3LCJuYmYiOjE3Nzk1MTY0NDcsImV4cCI6MTc4MDEyMTI0NywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.u5fv9VguEh5fi04kK33Xuqh1KUrgJiVmUz8dsWGbblE
INFO 05/23/2026 06:11:31 AM image.py ln 220 filename is 2026-05-23-1.webp
INFO 05/23/2026 06:11:31 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-23-1.webp'>}
INFO 05/23/2026 06:11:32 AM article_creation_service.py ln 769 Secondary image uploaded (83.60s)
INFO 05/23/2026 06:11:32 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/23/2026 06:11:32 AM wp.py ln 1111 Post content updated successfully for post 1280
INFO 05/23/2026 06:11:32 AM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/23/2026 06:11:36 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/23/2026 06:11:42 AM chat.py ln 348 AI comment: The article accurately represents its sources across all major claims: the Washington Post confirms the $1.8B payout fund/ICE vote delay, the nearly four-year low in voter economic confidence, and Stephen Colbert's Late Show finale; CNN confirms the "nearly a third of Americans" assassination attempt conspiracy poll; the Washington Post confirms Trump's New York district visit touting the SALT deduction quadrupling; and the FT confirms both the Iran military options analysis and the Hormuz closure legal disputes in oil shipping.
One minor note: the article's claim about Trump "touting a tax l
INFO 05/23/2026 06:11:42 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/23/2026 06:11:42 AM article_creation_service.py ln 769 Fact-check comment posted (10.13s)
INFO 05/23/2026 06:11:42 AM article_creation_service.py ln 769 Article creation completed successfully (total: 255.63s)
INFO 05/23/2026 06:11:42 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/23/2026 06:11:42 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/23/2026 06:11:42 AM create_articles.py ln 203 Script completed (256.82s total)
INFO 05/23/2026 07:07:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 07:07:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:20 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 07:07:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 07:07:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 07:07:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 07:07:20 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/23/2026 07:07:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 07:07:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 07:07:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:23 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 07:07:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 07:07:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 07:07:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 07:07:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 07:07:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 07:07:26 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:26 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 07:07:26 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:26 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 07:07:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 07:07:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 07:07:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 07:07:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 07:07:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 07:07:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 07:07:26 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/23/2026 07:07:26 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/23/2026 07:07:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.09s)
INFO 05/23/2026 07:07:26 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/23/2026 07:18:30 AM root.py ln 35 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 07:18:33 AM drupal.py ln 237 site is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 07:18:33 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 07:18:33 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 08:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:06:20 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 08:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 08:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 08:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 08:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 08:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 08:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 08:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:06:23 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 08:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 08:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 08:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 08:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 08:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 08:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 08:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:06:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 08:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 08:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 08:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 08:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 08:06:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 08:06:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 08:06:26 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/23/2026 08:06:26 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/23/2026 08:06:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.09s)
INFO 05/23/2026 08:06:26 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/23/2026 09:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 09:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:20 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 09:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 09:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 09:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 09:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 09:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 09:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 09:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:23 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 09:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 09:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 09:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 09:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 09:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 09:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 09:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 09:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 09:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 09:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 09:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 09:06:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 09:06:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 09:06:26 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/23/2026 09:06:26 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/23/2026 09:06:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.16s)
INFO 05/23/2026 09:06:26 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/23/2026 10:06:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 10:06:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 10:06:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 10:06:20 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 10:06:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 10:06:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 10:06:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 10:06:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 10:06:20 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 10:06:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 10:06:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 10:06:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 10:06:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 10:06:23 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 10:06:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 10:06:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 10:06:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 10:06:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 10:06:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 10:06:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 10:06:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 10:06:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 10:06:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 10:06:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 10:06:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 10:06:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 10:06:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 10:06:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 10:06:26 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 10:06:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 10:06:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 10:06:26 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/23/2026 10:06:26 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/23/2026 10:06:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.09s)
INFO 05/23/2026 10:06:26 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/23/2026 11:07:20 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 11:07:20 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 11:07:20 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 11:07:20 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 11:07:20 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 11:07:20 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 11:07:20 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 11:07:20 AM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 11:07:20 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/23/2026 11:07:20 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 11:07:23 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 11:07:23 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 11:07:23 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 11:07:23 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 11:07:23 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 11:07:23 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 11:07:23 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 11:07:23 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 11:07:23 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 11:07:23 AM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 11:07:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 11:07:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 11:07:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 11:07:26 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 11:07:26 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 11:07:26 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 11:07:26 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 11:07:26 AM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 11:07:26 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 11:07:26 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/23/2026 11:07:26 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/23/2026 11:07:26 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/23/2026 11:07:26 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/23/2026 11:07:26 AM create_articles.py ln 116 Already-posted-today filter applied (0.09s)
INFO 05/23/2026 11:07:26 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/23/2026 12:05:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:05:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 12:05:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:05:20 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 12:05:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 12:05:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:05:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 12:05:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 12:05:20 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/23/2026 12:05:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 12:05:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:05:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 12:05:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:05:23 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/23/2026 12:05:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 12:05:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:05:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 12:05:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 12:05:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 12:05:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 12:05:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 12:05:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 12:05:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 12:05:26 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/23/2026 12:05:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 12:05:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 12:05:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 12:05:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 12:05:26 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 12:05:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 01:06:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:21 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 01:06:21 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 01:06:21 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:21 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 01:06:21 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 01:06:21 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/23/2026 01:06:21 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 01:06:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:23 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 01:06:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 01:06:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 01:06:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 01:06:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 01:06:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:06:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 01:06:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 01:06:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 01:06:26 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/23/2026 01:06:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 01:06:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:06:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 01:06:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 01:06:26 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 01:06:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 01:48:24 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/23/2026 01:48:24 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/23/2026 01:48:24 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 01:48:25 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/23/2026 01:48:25 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/23/2026 02:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 02:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:07:20 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 02:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 02:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 02:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 02:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 02:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 02:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 02:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:07:23 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 02:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 02:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 02:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 02:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 02:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 02:07:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 02:07:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 02:07:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 02:07:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 02:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 02:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 02:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 02:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 02:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 02:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 03:06:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:20 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 03:06:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 03:06:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 03:06:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 03:06:20 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 03:06:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 03:06:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:23 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 03:06:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 03:06:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 03:06:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 03:06:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 03:06:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 03:06:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 03:06:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 03:06:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 03:06:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 03:06:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 03:06:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 03:06:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 03:06:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 03:06:26 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 03:06:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 04:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:07:20 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 04:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 04:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 04:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 04:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 04:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 04:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:07:23 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/23/2026 04:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 04:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 04:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 04:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 04:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 04:07:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 04:07:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 04:07:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 04:07:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 04:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 04:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 04:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 04:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 04:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 04:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:06:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:06:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 05:06:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:06:20 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 05:06:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 05:06:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:06:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 05:06:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 05:06:20 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/23/2026 05:06:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:06:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:06:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 05:06:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:06:23 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/23/2026 05:06:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 05:06:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:06:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 05:06:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 05:06:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 05:06:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 05:06:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 05:06:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 05:06:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 05:06:26 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 05:06:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 05:06:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 05:06:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 05:06:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 05:06:26 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 05:06:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:06:22 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:06:22 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 06:06:22 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:06:22 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 06:06:22 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 06:06:22 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:06:22 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 06:06:22 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 06:06:22 PM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/23/2026 06:06:22 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:06:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:06:25 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 06:06:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:06:25 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/23/2026 06:06:25 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 06:06:25 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:06:25 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 06:06:25 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 06:06:25 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 06:06:25 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 06:06:28 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 06:06:28 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 06:06:28 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 06:06:28 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/23/2026 06:06:28 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 06:06:28 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 06:06:28 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 06:06:28 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 06:06:28 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 06:06:28 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 07:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 07:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:20 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 07:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 07:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 07:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 07:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/23/2026 07:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 07:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 07:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:23 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/23/2026 07:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 07:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 07:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 07:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 07:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 07:07:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 07:07:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 07:07:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 07:07:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 07:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 07:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 07:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 07:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 07:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 07:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 08:07:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:07:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 08:07:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:07:20 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 08:07:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 08:07:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:07:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 08:07:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 08:07:20 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/23/2026 08:07:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 08:07:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:07:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 08:07:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:07:23 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/23/2026 08:07:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 08:07:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:07:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 08:07:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 08:07:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 08:07:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 08:07:26 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 08:07:26 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 08:07:26 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 08:07:26 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/23/2026 08:07:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 08:07:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 08:07:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 08:07:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 08:07:26 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 08:07:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 09:06:20 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:20 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/23/2026 09:06:20 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:20 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/23/2026 09:06:20 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/23/2026 09:06:20 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:20 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/23/2026 09:06:20 PM cron_common.py ln 313 filtered characters: 17
INFO 05/23/2026 09:06:20 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/23/2026 09:06:20 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 09:06:23 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:23 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/23/2026 09:06:23 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:23 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/23/2026 09:06:23 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/23/2026 09:06:23 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:23 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/23/2026 09:06:23 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 09:06:23 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/23/2026 09:06:23 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 09:06:25 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/23/2026 09:06:25 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/23/2026 09:06:25 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/23/2026 09:06:26 PM create_articles.py ln 93 JWT token obtained (0.46s)
INFO 05/23/2026 09:06:26 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/23/2026 09:06:26 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/23/2026 09:06:26 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/23/2026 09:06:26 PM cron_common.py ln 313 filtered characters: 14
INFO 05/23/2026 09:06:26 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/23/2026 09:06:26 PM cron_common.py ln 373 No characters selected.
INFO 05/23/2026 11:16:32 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/24/2026 12:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 12:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/24/2026 12:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 12:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 12:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 12:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/24/2026 12:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 12:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 12:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:06:59 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 12:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 12:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 12:06:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 12:06:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 12:06:59 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 12:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 12:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:07:02 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 12:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 12:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 12:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 12:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 12:07:02 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:07:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 01:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:07:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 01:07:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 01:07:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:07:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 01:07:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 01:07:57 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/24/2026 01:07:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:07:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:07:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 01:07:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:07:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 01:07:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 01:07:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:08:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 01:08:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 01:08:00 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/24/2026 01:08:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:08:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:08:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 01:08:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:08:03 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/24/2026 01:08:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 01:08:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:08:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 01:08:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 01:08:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 01:08:03 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 02:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 02:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:06:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 02:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 02:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 02:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 02:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/24/2026 02:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 02:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 02:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:07:00 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 02:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 02:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 02:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 02:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 02:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 02:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 02:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:07:02 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/24/2026 02:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 02:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 02:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 02:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 02:07:03 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:07:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 03:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:07:57 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/24/2026 03:07:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 03:07:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:07:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 03:07:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 03:07:57 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/24/2026 03:07:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:07:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:07:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 03:07:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:07:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 03:07:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 03:08:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:08:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 03:08:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 03:08:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/24/2026 03:08:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:08:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:08:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 03:08:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:08:02 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/24/2026 03:08:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 03:08:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:08:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 03:08:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 03:08:02 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/24/2026 03:08:02 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 04:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:06:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 04:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 04:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 04:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 04:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 04:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 04:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:06:59 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 04:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 04:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 04:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 04:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 04:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 04:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:07:02 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/24/2026 04:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 04:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 04:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 04:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 04:07:02 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 05:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/24/2026 05:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 05:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 05:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 05:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 05:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 05:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:06:59 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 05:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 05:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 05:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 05:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 05:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 05:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:07:02 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/24/2026 05:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 05:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 05:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 05:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 05:07:02 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 06:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:05:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 06:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 06:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 06:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 06:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 06:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 06:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:05:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 06:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 06:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:05:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 06:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 06:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/24/2026 06:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 06:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:06:02 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 06:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 06:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 06:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 06:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 06:06:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 06:06:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 06:06:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/24/2026 06:06:02 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/24/2026 06:06:02 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/24/2026 06:06:03 AM cron_common.py ln 414 Character articles: 100
INFO 05/24/2026 06:06:03 AM create_articles.py ln 126 Character articles loaded (0.61s)
INFO 05/24/2026 06:06:03 AM create_articles.py ln 128 Setup complete (1.12s total)
INFO 05/24/2026 06:06:03 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/24/2026 06:06:03 AM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260524_060603_news_Hawk.log
INFO 05/24/2026 06:06:03 AM article_creation_service.py ln 769 Article creation started for character: Hawk
INFO 05/24/2026 06:06:03 AM article_creation_service.py ln 769 WordPress authentication successful (0.31s)
INFO 05/24/2026 06:06:03 AM article_creation_service.py ln 769 Fetched WP users (0.05s)
INFO 05/24/2026 06:06:04 AM article_creation_service.py ln 769 Loaded 100 articles for character (0.59s)
INFO 05/24/2026 06:06:04 AM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.11s)
INFO 05/24/2026 06:06:04 AM article_creation_service.py ln 769 Searching for 'top world and US headline news today' (topic: news)
INFO 05/24/2026 06:06:04 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/24/2026 06:06:04 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/24/2026 06:06:04 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/24/2026 06:06:06 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/24/2026 06:06:06 AM chat.py ln 159 Found 8 results
INFO 05/24/2026 06:06:06 AM article_creation_service.py ln 769 Found 8 search results (1.64s)
INFO 05/24/2026 06:06:06 AM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260524_060603_news_Hawk_search.md
INFO 05/24/2026 06:06:06 AM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/24/2026 06:07:10 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/24/2026 06:07:10 AM article_creation_service.py ln 769 Generated article - Hawk’s Sunday Brief: White House gunfire scare; France bans Ben‑Gvir; Serbia’s streets flare; Commerzbank digs in (64.14s)
INFO 05/24/2026 06:07:10 AM article_creation_service.py ln 769 Created WP post 1285 (0.12s)
INFO 05/24/2026 06:07:17 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/24/2026 06:07:17 AM wp.py ln 955 Prompt: Create a cinematic editorial news collage for a global Sunday briefing: foreground shows the White House at dusk behind security barriers with blurred Secret Service figures moving urgently; left side includes a subtle France–Israel diplomatic motif with passports, flags, and a “restricted entry” stamp; right side shows tense Belgrade street protests with silhouettes, police lights, smoke, and raised hands; lower section features European banking imagery with Frankfurt-style skyscrapers, stock charts, and a Commerzbank/UniCredit merger tension suggested through abstract financial documents, not exact logos. Use a serious, high-stakes geopolitical mood, dark navy and amber color grading, dramatic lighting, sharp photojournalistic realism, layered composition, no gore, no readable text, no caricatures, no explicit violence. Aspect ratio 16:9, suitable as a featured image for a political and markets news briefing.
INFO 05/24/2026 06:07:17 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/24/2026 06:09:34 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/24/2026 06:09:34 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/24/2026 06:09:34 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-24.jpeg
INFO 05/24/2026 06:09:34 AM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-24.jpeg
INFO 05/24/2026 06:09:34 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NjAyNzYzLCJuYmYiOjE3Nzk2MDI3NjMsImV4cCI6MTc4MDIwNzU2MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6N9pREBdTLYMx2w9pY_nLcfkyV13gDSkJye-PNqFsGE
INFO 05/24/2026 06:09:34 AM image.py ln 220 filename is 2026-05-24.webp
INFO 05/24/2026 06:09:34 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-24.webp'>}
INFO 05/24/2026 06:09:35 AM article_creation_service.py ln 769 Featured image posted (144.82s)
INFO 05/24/2026 06:09:43 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/24/2026 06:09:43 AM wp.py ln 990 Secondary Image Prompt: **Image prompt:**
Create a cinematic editorial news illustration capturing a tense transatlantic weekend of security, diplomacy, protests, and markets. Wide 16:9 composition, dark blue and charcoal color palette with sharp accents of red, white, and gold. In the foreground, a rain-slicked city street reflects flashing emergency lights and silhouettes of journalists being hurried away behind security barriers, evoking a White House lockdown without showing specific identifiable people. In the midground, blend in layered visual fragments: the faint outline of the White House behind mist and police lights; a stylized European map with France highlighted and diplomatic cables stretching toward the Eastern Mediterranean; shadowy protest crowds and riot police silhouettes in Belgrade with smoke and streetlights; and sleek glass banking towers with abstract stock-chart lines suggesting Commerzbank and UniCredit merger tension.
Mood should feel urgent, restrained, and geopolitical — like a Sunday intelligence briefing visual. Use subtle textures of newspaper grain, rain, surveillance screens, and financial tickers, but avoid readable text, real logos, or recognizable politicians. High contrast, realistic-meets-illustrative style, sophisticated newsroom aesthetic, dramatic lighting, layered collage composition, no gore, no explicit violence, no flags dominating the scene.
INFO 05/24/2026 06:09:43 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/24/2026 06:11:01 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/24/2026 06:11:01 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/24/2026 06:11:01 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-24-1.jpeg
INFO 05/24/2026 06:11:01 AM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-24-1.jpeg
INFO 05/24/2026 06:11:01 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NjAyNzYzLCJuYmYiOjE3Nzk2MDI3NjMsImV4cCI6MTc4MDIwNzU2MywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.6N9pREBdTLYMx2w9pY_nLcfkyV13gDSkJye-PNqFsGE
INFO 05/24/2026 06:11:02 AM image.py ln 220 filename is 2026-05-24-1.webp
INFO 05/24/2026 06:11:02 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-24-1.webp'>}
INFO 05/24/2026 06:11:02 AM article_creation_service.py ln 769 Secondary image uploaded (87.32s)
INFO 05/24/2026 06:11:02 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/24/2026 06:11:02 AM wp.py ln 1111 Post content updated successfully for post 1285
INFO 05/24/2026 06:11:02 AM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/24/2026 06:11:05 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/24/2026 06:11:10 AM chat.py ln 348 AI comment: The article accurately represents all four main stories covered by the sources: the White House gunshots incident (confirmed by FT and CNN), France banning Ben-Gvir with flotilla abuse allegations including rape (confirmed by AP News and Reuters), Serbia protest clashes in Belgrade (confirmed by Reuters), and Commerzbank's shareholder rally against UniCredit (confirmed by FT).
One minor note: the article attributes the flotilla rape allegations specifically to "some" freed participants and frames Israeli denial as past practice ("have disputed in the past"), which is a reasonable characteriza
INFO 05/24/2026 06:11:10 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/24/2026 06:11:10 AM article_creation_service.py ln 769 Fact-check comment posted (8.11s)
INFO 05/24/2026 06:11:10 AM article_creation_service.py ln 769 Article creation completed successfully (total: 307.32s)
INFO 05/24/2026 06:11:10 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/24/2026 06:11:10 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/24/2026 06:11:10 AM create_articles.py ln 203 Script completed (308.44s total)
INFO 05/24/2026 07:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 07:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:06:57 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/24/2026 07:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 07:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 07:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 07:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/24/2026 07:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 07:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:06:59 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 07:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 07:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 07:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 07:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 07:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 07:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:07:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 07:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 07:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 07:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 07:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 07:07:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 07:07:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 07:07:02 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/24/2026 07:07:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/24/2026 07:07:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/24/2026 07:07:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/24/2026 08:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 08:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 08:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 08:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 08:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 08:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 08:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 08:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 08:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:05:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 08:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 08:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:05:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 08:05:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 08:05:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 08:05:59 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 08:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 08:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:06:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 08:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 08:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 08:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 08:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 08:06:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 08:06:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 08:06:02 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/24/2026 08:06:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/24/2026 08:06:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/24/2026 08:06:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/24/2026 09:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 09:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:06:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 09:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 09:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 09:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 09:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 09:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 09:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 09:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:06:59 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/24/2026 09:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 09:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 09:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 09:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/24/2026 09:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 09:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 09:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:07:03 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 09:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 09:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 09:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 09:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 09:07:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 09:07:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 09:07:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/24/2026 09:07:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/24/2026 09:07:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/24/2026 09:07:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/24/2026 10:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:05:57 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 10:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:05:57 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/24/2026 10:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 10:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 10:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 10:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/24/2026 10:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 10:06:00 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:06:00 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 10:06:00 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:06:01 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/24/2026 10:06:01 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 10:06:01 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:06:01 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 10:06:01 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 10:06:01 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/24/2026 10:06:01 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 10:06:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:06:04 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 10:06:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:06:04 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/24/2026 10:06:04 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 10:06:04 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:06:04 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 10:06:04 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 10:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 10:06:04 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 10:06:04 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 10:06:04 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/24/2026 10:06:04 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/24/2026 10:06:04 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/24/2026 10:06:04 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/24/2026 11:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 11:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:06:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 11:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 11:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 11:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 11:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/24/2026 11:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 11:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:06:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 11:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 11:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 11:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 11:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/24/2026 11:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 11:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:07:02 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/24/2026 11:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 11:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 11:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 11:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/24/2026 11:07:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/24/2026 11:07:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/24/2026 11:07:02 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/24/2026 11:07:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/24/2026 11:07:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/24/2026 11:07:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/24/2026 12:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 12:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:05:57 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 12:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 12:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 12:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 12:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/24/2026 12:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 12:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 12:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:05:59 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/24/2026 12:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 12:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 12:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 12:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/24/2026 12:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 12:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 12:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 12:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 12:06:03 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 12:06:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 12:06:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 12:06:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 12:06:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 12:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/24/2026 12:06:03 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 01:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 01:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 01:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 01:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 01:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 01:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 01:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:05:59 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 01:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 01:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 01:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 01:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 01:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 01:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 01:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 01:06:02 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 01:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 01:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 01:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 01:06:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 01:06:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 01:06:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 01:33:59 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/24/2026 01:36:00 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/24/2026 02:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 02:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 02:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 02:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 02:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 02:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/24/2026 02:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 02:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 02:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:06:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 02:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 02:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 02:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 02:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 02:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 02:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 02:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 02:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 02:07:02 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/24/2026 02:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 02:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 02:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 02:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 02:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 02:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 03:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 03:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 03:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 03:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 03:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/24/2026 03:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 03:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:06:59 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 03:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 03:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 03:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 03:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 03:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 03:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 03:07:03 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 03:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 03:07:03 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 03:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 03:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 03:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 03:07:04 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 03:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 03:07:04 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 04:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:06:57 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/24/2026 04:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 04:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 04:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 04:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 04:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 04:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:06:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 04:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 04:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 04:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 04:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 04:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 04:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 04:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 04:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 04:07:02 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 04:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 04:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 04:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 04:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 04:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 04:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 05:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 05:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 05:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 05:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 05:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 05:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 05:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:05:59 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 05:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 05:05:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:05:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 05:05:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 05:05:59 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 05:05:59 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 05:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 05:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 05:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 05:06:02 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 05:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 05:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 05:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 05:06:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 05:06:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 05:06:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 06:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 06:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 06:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 06:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 06:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/24/2026 06:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 06:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:06:59 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/24/2026 06:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 06:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 06:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 06:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 06:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 06:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 06:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 06:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 06:07:02 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 06:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 06:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 06:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 06:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 06:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/24/2026 06:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 07:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 07:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 07:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 07:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 07:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 07:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 07:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:06:00 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 07:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 07:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 07:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 07:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 07:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 07:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 07:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 07:06:02 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 07:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 07:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 07:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 07:06:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 07:06:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 07:06:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 07:55:18 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/24/2026 07:57:43 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/24/2026 08:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 08:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 08:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 08:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 08:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 08:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 08:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 08:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 08:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:06:59 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 08:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 08:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 08:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 08:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 08:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 08:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 08:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 08:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 08:07:02 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/24/2026 08:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 08:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 08:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 08:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 08:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 08:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 09:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 09:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 09:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 09:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 09:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 09:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/24/2026 09:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 09:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 09:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:06:59 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/24/2026 09:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 09:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 09:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 09:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/24/2026 09:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 09:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 09:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 09:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 09:07:02 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 09:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 09:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 09:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 09:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 09:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 09:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 10:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 10:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:06:57 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 10:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 10:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 10:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 10:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/24/2026 10:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 10:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 10:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:06:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/24/2026 10:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 10:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 10:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 10:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 10:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 10:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 10:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 10:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 10:07:02 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 10:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 10:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 10:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 10:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 10:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 10:07:03 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/24/2026 11:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 11:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/24/2026 11:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/24/2026 11:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/24/2026 11:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/24/2026 11:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/24/2026 11:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:07:00 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/24/2026 11:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/24/2026 11:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/24/2026 11:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 11:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/24/2026 11:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/24/2026 11:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/24/2026 11:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/24/2026 11:07:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/24/2026 11:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/24/2026 11:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/24/2026 11:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/24/2026 11:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/24/2026 11:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/24/2026 11:07:03 PM cron_common.py ln 373 No characters selected.
INFO 05/24/2026 11:56:49 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/25/2026 12:07:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:07:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 12:07:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:07:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 12:07:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 12:07:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:07:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 12:07:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 12:07:57 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/25/2026 12:07:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 12:07:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:07:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 12:07:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:08:00 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 12:08:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 12:08:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:08:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 12:08:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 12:08:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 12:08:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 12:08:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 12:08:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 12:08:00 AM cron_common.py ln 398 Name: Geneva, perHour: 0.0 IS POSTING!
INFO 05/25/2026 12:08:00 AM cron_common.py ln 401 Description: You are a web developer writing weekly technical articles about AI coding agents — including Claude Code (Anthropic), Codex and ChatGPT coding tools (OpenAI), Cursor, GitHub Copilot, Gemini Code Assist, and other emerging agents. Cover new releases, compare tools, and share practical workflows. Structure each article with clear H2 section headings (and H3 subheadings where useful) so readers can scan — do not publish a wall of paragraphs with zero headings. Lead with narrative prose for explanation; reserve bullet lists for genuine enumerations of 3–6 items, not as a substitute for paragraphs (aim for no more than 2–3 bullet lists in a typical article). When discussing tools, commands, or config, include concrete code blocks, CLI examples, or config snippets where they clarify the point — this is a technical audience. End every article with a short 'Key takeaways' H2 section containing 3–5 crisp bullets summarizing what a reader should remember.
INFO 05/25/2026 12:08:00 AM cron_common.py ln 414 Character articles: 21
INFO 05/25/2026 12:08:00 AM create_articles.py ln 126 Character articles loaded (0.19s)
INFO 05/25/2026 12:08:00 AM create_articles.py ln 128 Setup complete (0.70s total)
INFO 05/25/2026 12:08:00 AM create_articles.py ln 140 Creating article for character: Geneva
INFO 05/25/2026 12:08:00 AM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260525_000800_dev_Geneva.log
INFO 05/25/2026 12:08:00 AM article_creation_service.py ln 769 Article creation started for character: Geneva
INFO 05/25/2026 12:08:00 AM article_creation_service.py ln 769 WordPress authentication successful (0.32s)
INFO 05/25/2026 12:08:01 AM article_creation_service.py ln 769 Fetched WP users (0.05s)
INFO 05/25/2026 12:08:01 AM article_creation_service.py ln 769 Loaded 21 articles for character (0.18s)
INFO 05/25/2026 12:08:01 AM article_creation_service.py ln 769 Got 9 categories and 32 tags (0.08s)
INFO 05/25/2026 12:08:01 AM article_creation_service.py ln 769 Searching for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' (topic: general)
INFO 05/25/2026 12:08:01 AM chat.py ln 139 Tavily search will filter to past week
INFO 05/25/2026 12:08:08 AM chat.py ln 154 Tavily search for 'AI coding agents updates — Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini Code Assist' completed
INFO 05/25/2026 12:08:08 AM chat.py ln 159 Found 5 results
INFO 05/25/2026 12:08:08 AM article_creation_service.py ln 769 Found 5 search results (6.99s)
INFO 05/25/2026 12:08:08 AM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260525_000800_dev_Geneva_search.md
INFO 05/25/2026 12:08:08 AM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/25/2026 12:09:06 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:09:07 AM article_creation_service.py ln 769 Generated article - May 2026 agent stack update: Antigravity 2.0, GPT‑5.5 Codex, Copilot billing — and the configs you should actually check in (58.73s)
INFO 05/25/2026 12:09:07 AM article_creation_service.py ln 769 Created WP post 851 (0.13s)
INFO 05/25/2026 12:09:13 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:09:13 AM wp.py ln 955 Prompt: Create a 16:9 featured image for a tech article about the 2026 AI coding agent stack. Show a modern developer workstation with a layered “agent orchestration” dashboard: an IDE window, terminal, cloud sandbox, CI pipeline, and config files represented as glowing cards named generically “CLAUDE.md”, “AGENTS.md”, “SKILL.md”, and “copilot-instructions.md”. Around the workstation, depict multiple abstract AI agent nodes working in parallel, connected by neon lines to code repositories, test pipelines, and cloud servers. The mood should convey structured, practical engineering rather than hype: clean, professional, futuristic, high-detail, dark mode UI, blue/purple/green accent lighting, subtle grid background, crisp vector-meets-3D style. No real company logos, no faces, no clutter, minimal readable text only on config-file cards. Suitable for a software engineering blog header.
INFO 05/25/2026 12:09:13 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/25/2026 12:10:33 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 12:10:33 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/25/2026 12:10:33 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-25.jpeg
INFO 05/25/2026 12:10:33 AM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-25.jpeg
INFO 05/25/2026 12:10:33 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzk2Njc2ODAsIm5iZiI6MTc3OTY2NzY4MCwiZXhwIjoxNzgwMjcyNDgwLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.awxbZ7JhVRlmu8q3ChuU4BK436hRtD0dlUSOQWZ8mys
INFO 05/25/2026 12:10:34 AM image.py ln 220 filename is 2026-05-25.webp
INFO 05/25/2026 12:10:34 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-25.webp'>}
INFO 05/25/2026 12:10:34 AM article_creation_service.py ln 769 Featured image posted (87.62s)
INFO 05/25/2026 12:10:44 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:10:44 AM wp.py ln 990 Secondary Image Prompt: **Image generation prompt:**
Create a futuristic editorial illustration for a tech article about the 2026 AI coding agent stack. Show a layered developer workflow as a sleek “agent command center”: a central laptop or workstation with multiple translucent interface panels floating around it, each representing a different layer of software development — IDE editing, terminal automation, cloud background jobs, CI pipelines, billing/cost controls, and repo configuration files.
Visual elements should include:
- A dark, high-contrast developer desk or control room environment.
- Floating code windows with subtle TypeScript-like syntax, terminal commands, YAML/Markdown config snippets, and filenames such as `CLAUDE.md`, `AGENTS.md`, `SKILL.md`, and `copilot-instructions.md`.
- Several abstract AI “agents” as glowing geometric avatars or small robotic nodes working in parallel, connected by luminous network lines.
- A cloud sandbox area in the background with queued background tasks and CI-style progress bars.
- A layered stack diagram motif, suggesting Cursor in the IDE, Claude-like terminal autonomy, Codex-style cloud jobs, Copilot-like inline assistance, and Antigravity-style orchestration — but avoid using real company logos.
- Subtle cost/billing indicators, such as token meters, flexible usage dials, or dashboard widgets.
- A sense of orchestration rather than competition: tools interlocking like modules in a system.
Mood and style:
- Sophisticated, modern, technical, and slightly cinematic.
- Color palette: deep navy, charcoal, electric blue, violet, neon green accents, and soft white highlights.
- Clean vector-meets-3D aesthetic, premium SaaS blog illustration style.
- Crisp lighting, glassmorphism UI panels, fine circuit-like textures, and subtle depth of field.
- No readable brand logos, no human faces required, no cluttered text.
Composition:
- Wide hero image, 16:9 aspect ratio.
- Central focus on the workstation and floating layered workflow.
- Background should feel expansive, like a hybrid between a developer’s local machine and a cloud operations dashboard.
- Leave some negative space near the top or side for a possible article title overlay.
INFO 05/25/2026 12:10:44 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/25/2026 12:12:10 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 12:12:10 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/dev/create prefix format jpeg
INFO 05/25/2026 12:12:10 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-25-1.jpeg
INFO 05/25/2026 12:12:10 AM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/dev/create/2026-05-25-1.jpeg
INFO 05/25/2026 12:12:10 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi50dXJtYW5zb2x1dGlvbnMuYWkiLCJpYXQiOjE3Nzk2Njc2ODAsIm5iZiI6MTc3OTY2NzY4MCwiZXhwIjoxNzgwMjcyNDgwLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.awxbZ7JhVRlmu8q3ChuU4BK436hRtD0dlUSOQWZ8mys
INFO 05/25/2026 12:12:11 AM image.py ln 220 filename is 2026-05-25-1.webp
INFO 05/25/2026 12:12:11 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/dev/create/2026-05-25-1.webp'>}
INFO 05/25/2026 12:12:11 AM article_creation_service.py ln 769 Secondary image uploaded (96.84s)
INFO 05/25/2026 12:12:11 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/25/2026 12:12:11 AM wp.py ln 1111 Post content updated successfully for post 851
INFO 05/25/2026 12:12:11 AM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/25/2026 12:12:15 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/25/2026 12:12:22 AM chat.py ln 348 AI comment: The article accurately represents the source material across all major claims. Key facts check out: Antigravity 2.0's components (redesigned desktop app, Go CLI, Managed Agents service), GPT-5.5 powering Codex with Windows desktop app and PAYG seats, GitHub Copilot's June 1 flex billing transition with new Max plan, Cursor Composer 2.5, Windsurf 2.0 bundling Devin, Kiro's simplified credit model, the SKILL.md open standard, and the config file conventions (CLAUDE.md, AGENTS.md, GEMINI.md, .cursor/rules/*.mdc, .github/copilot-instructions.md) all align with the sources.
One minor note: the art
INFO 05/25/2026 12:12:22 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/25/2026 12:12:22 AM article_creation_service.py ln 769 Fact-check comment posted (11.06s)
INFO 05/25/2026 12:12:22 AM article_creation_service.py ln 769 Article creation completed successfully (total: 262.12s)
INFO 05/25/2026 12:12:22 AM create_articles.py ln 184 Article created for 'Geneva' using model: OpenAI gpt-5
INFO 05/25/2026 12:12:22 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/25/2026 12:12:22 AM create_articles.py ln 203 Script completed (262.82s total)
INFO 05/25/2026 12:12:25 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:12:25 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 12:12:25 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:12:25 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 12:12:25 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 12:12:25 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:12:25 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 12:12:25 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 12:12:25 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 12:12:25 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 01:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 01:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:05:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 01:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 01:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 01:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 01:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 01:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 01:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 01:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:05:59 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 01:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 01:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:05:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 01:05:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 01:05:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 01:05:59 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 01:05:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 01:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 01:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 01:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 01:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 01:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 01:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:06:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 01:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 01:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 01:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 01:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 01:06:02 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 02:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 02:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:06:57 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/25/2026 02:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 02:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 02:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 02:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 02:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 02:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 02:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:06:59 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 02:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 02:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 02:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 02:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 02:07:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 02:07:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 02:07:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 02:07:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 02:07:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 02:07:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 02:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 02:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:07:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 02:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 02:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 02:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 02:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 02:07:02 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 03:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 03:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 03:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 03:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 03:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 03:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 03:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 03:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 03:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:05:59 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/25/2026 03:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 03:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:05:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 03:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 03:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 03:06:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 03:06:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 03:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 03:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 03:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 03:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 03:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 03:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:06:02 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 03:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 03:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 03:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 03:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 03:06:02 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 04:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 04:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:05:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/25/2026 04:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 04:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 04:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 04:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 04:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 04:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 04:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:05:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 04:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 04:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 04:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 04:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 04:06:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 04:06:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 04:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 04:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 04:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 04:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 04:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 04:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:06:02 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 04:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 04:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 04:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 04:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 04:06:02 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 04:11:40 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/25/2026 04:12:50 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/25/2026 05:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 05:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:06:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 05:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 05:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 05:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 05:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.23s)
INFO 05/25/2026 05:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 05:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 05:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:06:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 05:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 05:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 05:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 05:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 05:07:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 05:07:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 05:07:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 05:07:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 05:07:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 05:07:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 05:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 05:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:07:02 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 05:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 05:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 05:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 05:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 05:07:02 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 06:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:05:57 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 06:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 06:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 06:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 06:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 06:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 06:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 06:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 06:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:06:00 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 06:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 06:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 06:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 06:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 06:06:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 06:06:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 06:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 06:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 06:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 06:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 06:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 06:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:06:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 06:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 06:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 06:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 06:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 06:06:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 06:06:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 06:06:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 06:06:03 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/25/2026 06:06:03 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/25/2026 06:06:03 AM cron_common.py ln 414 Character articles: 100
INFO 05/25/2026 06:06:03 AM create_articles.py ln 126 Character articles loaded (0.61s)
INFO 05/25/2026 06:06:03 AM create_articles.py ln 128 Setup complete (1.13s total)
INFO 05/25/2026 06:06:03 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/25/2026 06:06:03 AM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260525_060603_news_Hawk.log
INFO 05/25/2026 06:06:03 AM article_creation_service.py ln 769 Article creation started for character: Hawk
INFO 05/25/2026 06:06:04 AM article_creation_service.py ln 769 WordPress authentication successful (0.32s)
INFO 05/25/2026 06:06:04 AM article_creation_service.py ln 769 Fetched WP users (0.05s)
INFO 05/25/2026 06:06:04 AM article_creation_service.py ln 769 Loaded 100 articles for character (0.61s)
INFO 05/25/2026 06:06:04 AM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.11s)
INFO 05/25/2026 06:06:04 AM article_creation_service.py ln 769 Searching for 'top world and US headline news today' (topic: news)
INFO 05/25/2026 06:06:04 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/25/2026 06:06:04 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/25/2026 06:06:04 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/25/2026 06:06:06 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/25/2026 06:06:06 AM chat.py ln 159 Found 6 results
INFO 05/25/2026 06:06:06 AM article_creation_service.py ln 769 Found 6 search results (1.49s)
INFO 05/25/2026 06:06:06 AM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260525_060603_news_Hawk_search.md
INFO 05/25/2026 06:06:06 AM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/25/2026 06:06:53 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 06:06:53 AM article_creation_service.py ln 769 Generated article - Global Brief: Trump tempers Iran deal pace; Pakistan blast kills 16; UK credit squeeze and HS2 scrutiny grow (47.21s)
INFO 05/25/2026 06:06:53 AM article_creation_service.py ln 769 Created WP post 1290 (0.10s)
INFO 05/25/2026 06:07:00 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 06:07:00 AM wp.py ln 955 Prompt: Create a polished editorial “global news brief” featured image in a serious financial-newspaper style. Show a split-screen world affairs collage: on one side, a muted Washington diplomatic scene with the U.S. and Iran flags on a negotiation table, no recognizable politicians; in another panel, a damaged railway track in Pakistan with emergency lights and distant responders, handled respectfully with no bodies or gore; in another, a London financial district skyline with falling loan charts and subdued bank windows; and in another, a high-speed rail construction site suggesting HS2, with cranes, tracks, cost documents and scrutiny symbols. Add subtle childcare imagery in the foreground, such as a small toy block beside a magnifying glass, representing the UK childcare market review. Use a restrained color palette of navy, charcoal, muted red, and warm newspaper beige. Cinematic lighting, sharp editorial composition, realistic but slightly stylized, high detail, professional news magazine cover aesthetic, 16:9 aspect ratio, no text, no logos, no watermarks.
INFO 05/25/2026 06:07:00 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/25/2026 06:08:25 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 06:08:25 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/25/2026 06:08:25 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25.jpeg
INFO 05/25/2026 06:08:25 AM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-25.jpeg
INFO 05/25/2026 06:08:25 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5Njg5MTY0LCJuYmYiOjE3Nzk2ODkxNjQsImV4cCI6MTc4MDI5Mzk2NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.j-n-RWoXJw2Cygf7IMNq58RhMJcSr1PCXqU32dv0ZlU
INFO 05/25/2026 06:08:26 AM image.py ln 220 filename is 2026-05-25.webp
INFO 05/25/2026 06:08:26 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25.webp'>}
INFO 05/25/2026 06:08:26 AM article_creation_service.py ln 769 Featured image posted (92.92s)
INFO 05/25/2026 06:08:36 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 06:08:36 AM wp.py ln 990 Secondary Image Prompt: Create an editorial-style digital illustration for a global news brief, showing a moody split-world collage of interconnected crises and policy scrutiny. Foreground: a large, semi-transparent world map overlaid with thin glowing lines linking Washington, Tehran, Pakistan, and the UK. Left side: a dimly lit negotiation table with two empty chairs, a paused chess clock, and a faint oil tanker silhouette on dark water, suggesting cautious Iran talks and energy-market stakes. Center: a railway track disappearing into dusty haze with emergency lights in the distance, somber and respectful, no graphic violence. Right side: London financial district under grey skies, with shrinking stacks of coins, a closed bank ledger, and a high-speed rail line curving into an unfinished construction site with cranes and warning cones, symbolizing credit squeeze and HS2 scrutiny. In a smaller warm-lit corner, show a nursery doorway with children’s blocks and a magnifying glass hovering above, referencing childcare market examination.
Use a serious Financial Times-inspired palette: muted salmon pink, charcoal grey, navy, dusty beige, and subdued amber highlights. Style: sophisticated editorial collage, semi-realistic with subtle paper texture, clean composition, cinematic lighting, restrained drama, high detail, modern news-magazine aesthetic. No readable text, no logos, no politicians’ faces, no gore. Aspect ratio 16:9.
INFO 05/25/2026 06:08:36 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/25/2026 06:10:13 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 06:10:13 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/25/2026 06:10:13 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-1.jpeg
INFO 05/25/2026 06:10:13 AM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-25-1.jpeg
INFO 05/25/2026 06:10:13 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5Njg5MTY0LCJuYmYiOjE3Nzk2ODkxNjQsImV4cCI6MTc4MDI5Mzk2NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.j-n-RWoXJw2Cygf7IMNq58RhMJcSr1PCXqU32dv0ZlU
INFO 05/25/2026 06:10:13 AM image.py ln 220 filename is 2026-05-25-1.webp
INFO 05/25/2026 06:10:13 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-1.webp'>}
INFO 05/25/2026 06:10:13 AM article_creation_service.py ln 769 Secondary image uploaded (107.16s)
INFO 05/25/2026 06:10:13 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/25/2026 06:10:13 AM wp.py ln 1111 Post content updated successfully for post 1290
INFO 05/25/2026 06:10:13 AM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/25/2026 06:10:16 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/25/2026 06:10:22 AM chat.py ln 348 AI comment: The article accurately represents all five FT stories confirmed by the source headlines and URLs: Trump's "rush into a deal" quote on Iran, the Pakistan railway bombing killing at least 16, UK business lending at its lowest in nearly 30 years, HS2's £65mn consultancy payments ahead of a project "reset," and the UK competition watchdog examining the childcare market. All key facts, figures, and framings align with the source material.
One minor citation note: the article's inline reference [3] points to the Pakistan bombing story but the reference list labels it as #2, and the UK lending story
INFO 05/25/2026 06:10:22 AM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/25/2026 06:10:22 AM article_creation_service.py ln 769 Fact-check comment posted (8.17s)
INFO 05/25/2026 06:10:22 AM article_creation_service.py ln 769 Article creation completed successfully (total: 258.22s)
INFO 05/25/2026 06:10:22 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/25/2026 06:10:22 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/25/2026 06:10:22 AM create_articles.py ln 203 Script completed (259.36s total)
INFO 05/25/2026 07:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 07:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:05:57 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/25/2026 07:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 07:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 07:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 07:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/25/2026 07:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 07:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 07:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:06:00 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/25/2026 07:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 07:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 07:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 07:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/25/2026 07:06:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 07:06:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 07:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 07:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 07:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 07:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 07:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 07:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:06:03 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 07:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 07:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 07:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 07:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 07:06:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 07:06:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 07:06:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/25/2026 07:06:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 07:06:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 07:06:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 08:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 08:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:06:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 08:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 08:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 08:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 08:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.21s)
INFO 05/25/2026 08:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 08:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 08:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:06:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 08:06:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 08:06:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:06:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 08:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 08:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 08:07:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 08:07:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 08:07:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 08:07:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 08:07:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 08:07:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 08:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 08:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:07:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 08:07:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 08:07:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:07:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 08:07:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 08:07:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 08:07:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 08:07:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 08:07:02 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/25/2026 08:07:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 08:07:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 08:07:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 09:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 09:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 09:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 09:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 09:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 09:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 09:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 09:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 09:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:07:00 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/25/2026 09:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 09:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 09:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 09:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/25/2026 09:07:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 09:07:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 09:07:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 09:07:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 09:07:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 09:07:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 09:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 09:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:07:03 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 09:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 09:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 09:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 09:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 09:07:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 09:07:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 09:07:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/25/2026 09:07:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 09:07:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 09:07:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 10:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 10:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 10:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 10:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 10:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 10:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/25/2026 10:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 10:07:00 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:07:00 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 10:07:00 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:07:00 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 10:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 10:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 10:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 10:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 10:07:00 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 10:07:00 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 10:07:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 10:07:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 10:07:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 10:07:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 10:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:07:03 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 10:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:07:03 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 10:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 10:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 10:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 10:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 10:07:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 10:07:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 10:07:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/25/2026 10:07:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 10:07:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 10:07:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 11:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 11:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 11:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 11:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 11:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 11:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/25/2026 11:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 11:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 11:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:05:59 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 11:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 11:05:59 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:05:59 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 11:05:59 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 11:05:59 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 11:05:59 AM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 11:05:59 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 11:06:00 AM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 11:06:00 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 11:06:00 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 11:06:00 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 11:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 11:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:06:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 11:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 11:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 11:06:02 AM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 11:06:02 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 11:06:02 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/25/2026 11:06:02 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 11:06:02 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/25/2026 11:06:02 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 11:06:02 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 11:06:02 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 12:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 12:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:06:57 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/25/2026 12:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 12:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 12:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 12:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/25/2026 12:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 12:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 12:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:07:00 PM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/25/2026 12:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 12:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 12:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 12:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/25/2026 12:07:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 12:07:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 12:07:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 12:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 12:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.08s)
INFO 05/25/2026 12:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 12:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 12:07:03 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 12:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 12:07:03 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 12:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 12:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 12:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 12:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 12:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/25/2026 12:07:03 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 12:07:03 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 12:07:03 PM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/25/2026 12:07:03 PM cron_common.py ln 398 Name: Dusty, perHour: 0.0 IS POSTING!
INFO 05/25/2026 12:07:03 PM cron_common.py ln 401 Description: You are a meteorologist and you like to write articles about extreme weather events in the U.S. and from around the globe. Sometime you write about specific events such as Hurricane Katrina, or fires in California, or a flooding event in Europe, etc. Other times, you write articles about how weather systems like tornados or hail storms develop. You are great at providing details readers are interested in, and you keep your articles factual and scientific. You are also good about covering the human side of weather systems and their impact on communities. You also provide safety tips sometimes.
INFO 05/25/2026 12:07:04 PM cron_common.py ln 414 Character articles: 48
INFO 05/25/2026 12:07:04 PM create_articles.py ln 126 Character articles loaded (0.27s)
INFO 05/25/2026 12:07:04 PM create_articles.py ln 128 Setup complete (0.75s total)
INFO 05/25/2026 12:07:04 PM create_articles.py ln 140 Creating article for character: Dusty
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Article log file created: /tsai/repo/api/logs/articles/20260525_120704_news_Dusty.log
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Article creation started for character: Dusty
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 WordPress authentication successful (0.32s)
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Fetched WP users (0.05s)
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Loaded 48 articles for character (0.27s)
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Got 27 categories and 63 tags (0.11s)
INFO 05/25/2026 12:07:04 PM article_creation_service.py ln 769 Searching for 'extreme weather events US and worldwide' (topic: news)
INFO 05/25/2026 12:07:04 PM chat.py ln 131 Tavily search will ONLY include domains: ['weather.com', 'accuweather.com', 'reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'theguardian.com', 'aljazeera.com']
INFO 05/25/2026 12:07:04 PM chat.py ln 139 Tavily search will filter to past week
INFO 05/25/2026 12:07:06 PM chat.py ln 154 Tavily search for 'extreme weather events US and worldwide' completed
INFO 05/25/2026 12:07:06 PM chat.py ln 159 Found 5 results
INFO 05/25/2026 12:07:06 PM article_creation_service.py ln 769 Found 5 search results (1.57s)
INFO 05/25/2026 12:07:06 PM article_creation_service.py ln 769 Search results written to: /tsai/repo/api/logs/articles/20260525_120704_news_Dusty_search.md
INFO 05/25/2026 12:07:06 PM article_creation_service.py ln 769 System message prepared (0.00s)
INFO 05/25/2026 12:08:02 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:08:02 PM article_creation_service.py ln 769 Generated article - Below-Average Atlantic Hurricane Forecast Still Carries Serious Risk in 2026 (55.97s)
INFO 05/25/2026 12:08:02 PM article_creation_service.py ln 769 Created WP post 1295 (0.14s)
INFO 05/25/2026 12:08:08 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:08:08 PM wp.py ln 955 Prompt: Create a dramatic editorial featured image showing a quiet-looking Atlantic hurricane season that still carries hidden danger: a satellite-style view of the Atlantic and Gulf Coast with only one powerful hurricane spiraling toward a vulnerable coastline, warm ocean waters glowing subtly beneath it, and a faint El Niño wind-shear pattern sweeping across the basin. Include coastal cities, storm surge hints, dark rain bands, and emergency-preparedness elements like evacuation route lines or warning map overlays. Mood should be serious and cautionary, not apocalyptic. Realistic weather visualization, cinematic lighting, high-detail clouds, NOAA-style meteorological map aesthetic, 16:9 aspect ratio, no text, no logos.
INFO 05/25/2026 12:08:08 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/25/2026 12:09:42 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 12:09:42 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/25/2026 12:09:42 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-2.jpeg
INFO 05/25/2026 12:09:42 PM article_creation_service.py ln 769 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-25-2.jpeg
INFO 05/25/2026 12:09:42 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NzEwODI0LCJuYmYiOjE3Nzk3MTA4MjQsImV4cCI6MTc4MDMxNTYyNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.MLKtlbBb8FPj3KAtWwC38pYfJ50eJS3z5LCLfIkt6Lw
INFO 05/25/2026 12:09:42 PM image.py ln 220 filename is 2026-05-25-2.webp
INFO 05/25/2026 12:09:42 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-2.webp'>}
INFO 05/25/2026 12:09:43 PM article_creation_service.py ln 769 Featured image posted (100.36s)
INFO 05/25/2026 12:09:55 PM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/25/2026 12:09:55 PM wp.py ln 990 Secondary Image Prompt: Create a cinematic editorial weather illustration showing the paradox of a “below-average” Atlantic hurricane season that still carries serious danger. Depict a wide aerial view of the Atlantic and Gulf Coast at dusk: most of the ocean looks deceptively calm and dark blue, but one compact, powerful hurricane spiral glows ominously offshore, aimed toward a vulnerable coastal city with low-lying neighborhoods, bridges, wetlands, and storm-surge-prone waterways. Above the scene, visualize strong El Niño wind shear as translucent, high-altitude streaks of red-orange wind cutting across the storm’s cloud tops, slightly tilting the cyclone. In the far background or as subtle map-like overlays, show contrasting hazards: a more active Pacific with multiple storm swirls, a dry heat dome over land represented by a shimmering amber ridge, and an urban street overwhelmed by intense rainfall/floodwater. Include faint scientific elements such as weather balloon silhouettes, satellite arcs, buoy markers, and forecast contour lines, suggesting the importance of observation and forecasting systems. Mood should be tense but informative, with dramatic lighting, deep ocean blues, storm-cloud grays, electric whites, and warning accents of orange and red. Style: high-end magazine feature art, semi-realistic digital painting, atmospheric, detailed textures, no visible text, no logos, no people in foreground, 16:9 composition.
INFO 05/25/2026 12:09:55 PM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/25/2026 12:12:09 PM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/25/2026 12:12:09 PM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/25/2026 12:12:09 PM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-3.jpeg
INFO 05/25/2026 12:12:09 PM article_creation_service.py ln 769 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-25-3.jpeg
INFO 05/25/2026 12:12:09 PM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NzEwODI0LCJuYmYiOjE3Nzk3MTA4MjQsImV4cCI6MTc4MDMxNTYyNCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.MLKtlbBb8FPj3KAtWwC38pYfJ50eJS3z5LCLfIkt6Lw
INFO 05/25/2026 12:12:09 PM image.py ln 220 filename is 2026-05-25-3.webp
INFO 05/25/2026 12:12:09 PM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-25-3.webp'>}
INFO 05/25/2026 12:12:10 PM article_creation_service.py ln 769 Secondary image uploaded (147.02s)
INFO 05/25/2026 12:12:10 PM wp.py ln 1082 Inserted image after second paragraph
INFO 05/25/2026 12:12:10 PM wp.py ln 1111 Post content updated successfully for post 1295
INFO 05/25/2026 12:12:10 PM article_creation_service.py ln 769 Post content updated with secondary image
INFO 05/25/2026 12:12:14 PM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/25/2026 12:12:19 PM chat.py ln 348 AI comment: The article accurately represents the key facts from all four sources, including NOAA's forecast ranges, Colorado State University's and AccuWeather's projections, the Pacific outlook numbers, Kristen Corbosiero's quote, the Texas storm details, the New York flash flooding specifics, and the European heat dome information. All numerical details (storm counts, rainfall rates, temperatures) match the source material closely.
One minor note: the article describes the NOAA forecast as "3 to 6 hurricanes," which correctly reflects the source's breakdown of "three to six storms will develop into ca
INFO 05/25/2026 12:12:19 PM chat.py ln 553 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/25/2026 12:12:19 PM article_creation_service.py ln 769 Fact-check comment posted (9.21s)
INFO 05/25/2026 12:12:19 PM article_creation_service.py ln 769 Article creation completed successfully (total: 315.12s)
INFO 05/25/2026 12:12:19 PM create_articles.py ln 184 Article created for 'Dusty' using model: OpenAI gpt-5.5
INFO 05/25/2026 12:12:19 PM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/25/2026 12:12:19 PM create_articles.py ln 203 Script completed (315.87s total)
INFO 05/25/2026 01:07:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:07:57 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 01:07:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:07:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 01:07:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 01:07:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:07:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 01:07:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 01:07:57 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/25/2026 01:07:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 01:07:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:07:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 01:07:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:08:00 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 01:08:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 01:08:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:08:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 01:08:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 01:08:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 01:08:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 01:08:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 01:08:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 01:08:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 01:08:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 01:08:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 01:08:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 01:08:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 01:08:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 01:08:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/25/2026 01:08:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 01:08:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 01:08:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 01:08:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 01:08:03 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 01:08:03 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 01:08:03 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 01:08:03 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/25/2026 01:08:03 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 01:08:03 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 01:08:03 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 02:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 02:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 02:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 02:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 02:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 02:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 02:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 02:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 02:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:06:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 02:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 02:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 02:06:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 02:06:59 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 02:06:59 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 02:06:59 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 02:07:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 02:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 02:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 02:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 02:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 02:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 02:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 02:07:02 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 02:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 02:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 02:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 02:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 02:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 02:07:02 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 02:07:02 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 02:07:02 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/25/2026 02:07:02 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 02:07:02 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 02:07:02 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 03:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:06:57 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 03:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:06:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 03:06:58 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 03:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:06:58 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 03:06:58 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 03:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/25/2026 03:06:58 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 03:07:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:07:00 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 03:07:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:07:00 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 03:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 03:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 03:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 03:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 03:07:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 03:07:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 03:07:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 03:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 03:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 03:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 03:07:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 03:07:03 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 03:07:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 03:07:03 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 03:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 03:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 03:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 03:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 03:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.11s)
INFO 05/25/2026 03:07:03 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 03:07:03 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 03:07:03 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/25/2026 03:07:03 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 03:07:03 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 03:07:03 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 04:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 04:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 04:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 04:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 04:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 04:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 04:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 04:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 04:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:07:00 PM create_articles.py ln 93 JWT token obtained (0.47s)
INFO 05/25/2026 04:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 04:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 04:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 04:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 04:07:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 04:07:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 04:07:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 04:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 04:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 04:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 04:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 04:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 04:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 04:07:02 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 04:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 04:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 04:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 04:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 04:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 04:07:03 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 04:07:03 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 04:07:03 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/25/2026 04:07:03 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 04:07:03 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 04:07:03 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 05:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 05:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 05:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 05:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 05:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 05:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/25/2026 05:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 05:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 05:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:05:59 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 05:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 05:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 05:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 05:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 05:06:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 05:06:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 05:06:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 05:06:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 05:06:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 05:06:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 05:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 05:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 05:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 05:06:02 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 05:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 05:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 05:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 05:06:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 05:06:02 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 05:06:02 PM drupal.py ln 323 Dusty selected via calendar schedule
INFO 05/25/2026 05:06:02 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 05:06:03 PM cron_common.py ln 439 Skipping Dusty: already posted an article today
INFO 05/25/2026 05:06:03 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 05:06:03 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 05:06:03 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 06:07:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:07:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 06:07:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:07:57 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/25/2026 06:07:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 06:07:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:07:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 06:07:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 06:07:57 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/25/2026 06:07:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 06:07:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:07:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 06:07:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:08:00 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 06:08:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 06:08:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:08:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 06:08:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 06:08:00 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 06:08:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 06:08:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 06:08:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 06:08:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 06:08:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 06:08:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 06:08:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 06:08:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 06:08:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 06:08:03 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/25/2026 06:08:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 06:08:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 06:08:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 06:08:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 06:08:03 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/25/2026 06:08:03 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 07:06:04 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/25/2026 07:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 07:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:06:58 PM create_articles.py ln 93 JWT token obtained (1.37s)
INFO 05/25/2026 07:06:58 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 07:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:06:58 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 07:06:58 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 07:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/25/2026 07:06:58 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 07:07:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:07:00 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 07:07:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:07:01 PM create_articles.py ln 93 JWT token obtained (1.29s)
INFO 05/25/2026 07:07:01 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 07:07:01 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:07:01 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 07:07:01 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 07:07:01 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/25/2026 07:07:01 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 07:07:01 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 07:07:01 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 07:07:01 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 07:07:01 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 07:07:01 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 07:07:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 07:07:04 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 07:07:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 07:07:05 PM create_articles.py ln 93 JWT token obtained (1.26s)
INFO 05/25/2026 07:07:05 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 07:07:05 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 07:07:05 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 07:07:05 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 07:07:05 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/25/2026 07:07:05 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 08:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 08:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:05:57 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 08:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 08:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 08:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 08:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/25/2026 08:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 08:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 08:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:05:59 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 08:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 08:05:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:05:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 08:05:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 08:05:59 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 08:05:59 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 08:05:59 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 08:05:59 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 08:05:59 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 08:05:59 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 08:05:59 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 08:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 08:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 08:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 08:06:02 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 08:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 08:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 08:06:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 08:06:02 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 08:06:02 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 08:42:54 PM drupal.py ln 142 Fetched 46 shared characters across 1 pages
INFO 05/25/2026 08:50:58 PM root.py ln 35 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/25/2026 08:50:58 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/25/2026 08:50:58 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/25/2026 08:50:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 08:50:58 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/25/2026 08:50:58 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/25/2026 08:51:01 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/25/2026 08:51:01 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/25/2026 08:51:05 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:51:21 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:51:21 PM _client.py ln 1740 HTTP Request: GET https://api.turmansolutions.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 08:51:30 PM _client.py ln 1740 HTTP Request: GET https://api.scike.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 08:51:41 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:51:47 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:51:47 PM _client.py ln 1740 HTTP Request: GET https://api.turmansolutions.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 08:52:38 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:52:41 PM _client.py ln 1740 HTTP Request: GET https://api.scike.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 08:52:55 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:53:05 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 08:53:05 PM _client.py ln 1740 HTTP Request: GET https://api.turmansolutions.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 09:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 09:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:06:57 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 09:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 09:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 09:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 09:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/25/2026 09:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 09:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 09:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:06:59 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 09:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 09:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 09:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 09:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 09:07:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 09:07:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 09:07:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 09:07:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 09:07:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/25/2026 09:07:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 09:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 09:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 09:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 09:07:02 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 09:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 09:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 09:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 09:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 09:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 09:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 09:18:21 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 09:18:33 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 09:18:33 PM _client.py ln 1740 HTTP Request: GET https://api.turmansolutions.ai/api/v1/cms/widgets/public/ "HTTP/1.1 200 OK"
INFO 05/25/2026 09:18:43 PM drupal.py ln 551 Fetched 4 shared widgets across 1 pages
INFO 05/25/2026 10:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 10:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/25/2026 10:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 10:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 10:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 10:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/25/2026 10:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 10:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 10:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:06:59 PM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/25/2026 10:06:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 10:06:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:06:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 10:06:59 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 10:06:59 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 10:06:59 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 10:06:59 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 10:06:59 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 10:06:59 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 10:06:59 PM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/25/2026 10:06:59 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 10:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 10:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 10:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 10:07:02 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/25/2026 10:07:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 10:07:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:07:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 10:07:02 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 10:07:02 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 10:07:02 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 10:28:51 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/25/2026 10:31:01 PM root.py ln 35 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 10:31:03 PM drupal.py ln 237 site is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 10:31:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 10:31:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 10:31:11 PM user.py ln 30 User login attempt - site: chat-news.turmansolutions.ai, username: John, site_config: cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 10:31:11 PM user.py ln 37 Login request URL: https://news.turmansolutions.ai/wp-json/jwt-auth/v1/token
INFO 05/25/2026 10:31:12 PM user.py ln 57 Login response status code: 200
INFO 05/25/2026 10:31:12 PM user.py ln 58 Login response headers: {'Date': 'Mon, 25 May 2026 22:31:11 GMT', 'Server': 'Apache/2.4.66 (Amazon Linux) OpenSSL/3.2.2', 'X-Robots-Tag': 'noindex', 'Link': '<https://news.turmansolutions.ai/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages, Link', 'Access-Control-Allow-Headers': 'Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 'Allow': 'POST', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8'}
INFO 05/25/2026 10:31:12 PM user.py ln 59 Login response content length: 341 bytes
INFO 05/25/2026 10:31:12 PM user.py ln 64 Login response text (first 500 chars): {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NzQ4MjcyLCJuYmYiOjE3Nzk3NDgyNzIsImV4cCI6MTc4MDM1MzA3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.AlQ5cA5WpSq7IFklg2zsBU9wAHccBOqfIlUUW28C8BY","user_email":"john@turmansolutions.ai","user_nicename":"john","user_display_name":"John"}
INFO 05/25/2026 10:31:12 PM user.py ln 85 Login response JSON parsed successfully: {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5NzQ4MjcyLCJuYmYiOjE3Nzk3NDgyNzIsImV4cCI6MTc4MDM1MzA3MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.AlQ5cA5WpSq7IFklg2zsBU9wAHccBOqfIlUUW28C8BY', 'user_email': 'john@turmansolutions.ai', 'user_nicename': 'john', 'user_display_name': 'John'}
INFO 05/25/2026 10:31:12 PM user.py ln 95 Login successful for John on https://news.turmansolutions.ai
INFO 05/25/2026 11:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/25/2026 11:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:05:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/25/2026 11:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/25/2026 11:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/25/2026 11:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/25/2026 11:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/25/2026 11:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/25/2026 11:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/25/2026 11:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:06:00 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/25/2026 11:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/25/2026 11:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/25/2026 11:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 11:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.26s)
INFO 05/25/2026 11:06:00 PM drupal.py ln 323 Geneva selected via calendar schedule
INFO 05/25/2026 11:06:00 PM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/25/2026 11:06:00 PM cron_common.py ln 439 Skipping Geneva: already posted an article today
INFO 05/25/2026 11:06:00 PM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/25/2026 11:06:00 PM create_articles.py ln 116 Already-posted-today filter applied (0.24s)
INFO 05/25/2026 11:06:00 PM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/25/2026 11:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/25/2026 11:06:03 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/25/2026 11:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/25/2026 11:06:03 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/25/2026 11:06:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/25/2026 11:06:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/25/2026 11:06:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/25/2026 11:06:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/25/2026 11:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/25/2026 11:06:03 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 12:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:05:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 12:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 12:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 12:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 12:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 12:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 12:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:06:00 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 12:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 12:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 12:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 12:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 12:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 12:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:06:02 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 12:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 12:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 12:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 12:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 12:06:03 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 01:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:06:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/26/2026 01:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 01:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 01:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 01:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/26/2026 01:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 01:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:07:00 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/26/2026 01:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 01:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 01:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 01:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 01:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 01:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:07:03 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/26/2026 01:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 01:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 01:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 01:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 01:07:03 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 02:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 02:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 02:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 02:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 02:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 02:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/26/2026 02:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 02:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 02:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:05:59 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 02:05:59 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 02:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 02:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 02:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 02:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 02:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 02:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:06:02 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 02:06:02 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 02:06:02 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:06:02 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 02:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 02:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 02:06:03 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 03:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 03:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 03:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 03:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 03:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/26/2026 03:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 03:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:06:00 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 03:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 03:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 03:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 03:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 03:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:06:03 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 03:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:06:03 AM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 05/26/2026 03:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 03:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 03:06:04 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 03:06:04 AM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/26/2026 03:06:04 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 04:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:05:57 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/26/2026 04:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 04:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 04:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 04:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/26/2026 04:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 04:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:06:00 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 04:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 04:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 04:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 04:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 04:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 04:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:06:03 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/26/2026 04:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 04:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 04:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 04:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 04:06:03 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 05:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 05:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 05:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 05:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 05:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 05:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/26/2026 05:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 05:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 05:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:07:00 AM create_articles.py ln 93 JWT token obtained (0.78s)
INFO 05/26/2026 05:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 05:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 05:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 05:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 05:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 05:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:07:03 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 05:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:07:03 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 05:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 05:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 05:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 05:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 05:07:03 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 06:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:05:57 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 06:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 06:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 06:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 06:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 06:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 06:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:06:00 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/26/2026 06:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 06:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 06:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 06:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 06:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 06:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:06:03 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 06:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 06:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 06:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 06:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/26/2026 06:06:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 06:06:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 06:06:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.03s)
INFO 05/26/2026 06:06:03 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/26/2026 06:06:03 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/26/2026 06:06:03 AM cron_common.py ln 414 Character articles: 100
INFO 05/26/2026 06:06:03 AM create_articles.py ln 126 Character articles loaded (0.60s)
INFO 05/26/2026 06:06:03 AM create_articles.py ln 128 Setup complete (1.05s total)
INFO 05/26/2026 06:06:03 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/26/2026 06:06:03 AM article_creation_service.py ln 775 Article log file created: /tsai/repo/api/logs/articles/20260526_060603_news_Hawk.log
INFO 05/26/2026 06:06:03 AM article_creation_service.py ln 775 Article creation started for character: Hawk
INFO 05/26/2026 06:06:04 AM article_creation_service.py ln 775 WordPress authentication successful (0.32s)
INFO 05/26/2026 06:06:04 AM article_creation_service.py ln 775 Fetched WP users (0.05s)
INFO 05/26/2026 06:06:04 AM article_creation_service.py ln 775 Loaded 100 articles for character (0.60s)
INFO 05/26/2026 06:06:04 AM article_creation_service.py ln 775 Got 27 categories and 63 tags (0.11s)
INFO 05/26/2026 06:06:04 AM article_creation_service.py ln 775 Searching for 'top world and US headline news today' (topic: news)
INFO 05/26/2026 06:06:04 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/26/2026 06:06:04 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/26/2026 06:06:04 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/26/2026 06:06:06 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/26/2026 06:06:06 AM chat.py ln 159 Found 7 results
INFO 05/26/2026 06:06:06 AM article_creation_service.py ln 775 Found 7 search results (1.53s)
INFO 05/26/2026 06:06:06 AM article_creation_service.py ln 775 Search results written to: /tsai/repo/api/logs/articles/20260526_060603_news_Hawk_search.md
INFO 05/26/2026 06:06:06 AM article_creation_service.py ln 775 System message prepared (0.00s)
INFO 05/26/2026 06:06:58 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/26/2026 06:06:58 AM article_creation_service.py ln 775 Generated article - Hawk’s Monday Brief: Russia’s heaviest strike this year jolts Europe; Iran talks creep forward as oil eases; Pope urges AI ‘disarmament’; SNP scandal plea; Hong Kong bun race; CEOs go tabloid (51.59s)
INFO 05/26/2026 06:06:58 AM article_creation_service.py ln 775 Created WP post 1300 (0.11s)
INFO 05/26/2026 06:07:09 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/26/2026 06:07:09 AM wp.py ln 955 Prompt: Create a dramatic editorial-style featured image for a global news briefing: a split-screen/world-map collage at dawn with Europe and Ukraine in the center, dark skies lit by distant missile trails and air-defense flashes; to one side, an oil tanker moving cautiously through a narrow strait with easing crude-price chart lines; near the Vatican, a white-robed religious figure facing a glowing AI circuit-brain symbol being “disarmed”; a subtle Scotland/UK political scandal motif with papers, money, and a shadowed podium; a vibrant Hong Kong bun tower climber adding cultural energy; and a glossy magazine/tabloid wall showing anonymous CEO silhouettes under camera flashes. Use a sophisticated newsroom aesthetic, cinematic lighting, deep blues and reds with gold highlights, high contrast, realistic digital illustration, no readable text, no logos, no gore, wide 16:9 composition suitable for a featured article image.
INFO 05/26/2026 06:07:09 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/26/2026 06:09:19 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/26/2026 06:09:19 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/26/2026 06:09:19 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-26.jpeg
INFO 05/26/2026 06:09:19 AM article_creation_service.py ln 775 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-26.jpeg
INFO 05/26/2026 06:09:19 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5Nzc1NTY0LCJuYmYiOjE3Nzk3NzU1NjQsImV4cCI6MTc4MDM4MDM2NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.4x0I4gWb8hPhhPSiVtf0r0uXsTxc-Q67dFUYLIz06kk
INFO 05/26/2026 06:09:20 AM image.py ln 220 filename is 2026-05-26.webp
INFO 05/26/2026 06:09:20 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-26.webp'>}
INFO 05/26/2026 06:09:20 AM article_creation_service.py ln 775 Featured image posted (142.58s)
INFO 05/26/2026 06:09:34 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/26/2026 06:09:34 AM wp.py ln 990 Secondary Image Prompt: Create a cinematic editorial illustration for a global news briefing, showing a stylized world map at dawn as overlapping “news vignettes” emerge like illuminated panels. Foreground: a tense Eastern Europe scene with dark storm clouds, missile trails arcing over Ukraine, and a faint border silhouette near Belarus, rendered in cold blue-gray tones. Midground: a narrow sea lane with an oil tanker moving cautiously through the Strait of Hormuz, surrounded by calmer teal water and softened golden light suggesting easing market risk. Upper right: a Vatican-inspired marble balcony with a white-robed religious figure gesturing toward a glowing humanoid AI silhouette whose circuitry is being gently “disarmed” into floating doves and broken code fragments. Lower left: a Scottish political-finance motif — green tartan texture, scattered pound notes, a sealed evidence envelope, and a shadowed podium — without readable text or logos. Lower right: a vibrant Hong Kong bun tower festival scene with climbers scaling a tall bamboo-and-bun structure under lanterns, adding warm reds, creams, and festive movement. In the background: a glossy corporate CEO figure surrounded by paparazzi flashes, tabloid-style camera bursts, and social media notification shapes, but no readable words.
Mood: urgent yet balanced, “Monday briefing” atmosphere, geopolitical tension mixed with cultural relief and media spectacle. Style: sophisticated digital painting / magazine cover illustration, layered collage composition, dramatic lighting, high detail, subtle paper grain texture, rich contrast between cool war-map blues and warm festival reds and golds. Avoid real faces, brand logos, flags with exact insignia, or readable text. Aspect ratio 16:9.
INFO 05/26/2026 06:09:34 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/26/2026 06:11:22 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/26/2026 06:11:22 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/26/2026 06:11:22 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-26-1.jpeg
INFO 05/26/2026 06:11:22 AM article_creation_service.py ln 775 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-26-1.jpeg
INFO 05/26/2026 06:11:22 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5Nzc1NTY0LCJuYmYiOjE3Nzk3NzU1NjQsImV4cCI6MTc4MDM4MDM2NCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.4x0I4gWb8hPhhPSiVtf0r0uXsTxc-Q67dFUYLIz06kk
INFO 05/26/2026 06:11:22 AM image.py ln 220 filename is 2026-05-26-1.webp
INFO 05/26/2026 06:11:22 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-26-1.webp'>}
INFO 05/26/2026 06:11:23 AM article_creation_service.py ln 775 Secondary image uploaded (122.58s)
INFO 05/26/2026 06:11:23 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/26/2026 06:11:23 AM wp.py ln 1111 Post content updated successfully for post 1300
INFO 05/26/2026 06:11:23 AM article_creation_service.py ln 775 Post content updated with secondary image
INFO 05/26/2026 06:11:26 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/26/2026 06:11:31 AM chat.py ln 351 AI comment: The article accurately represents all seven source stories. Each claim — Russia's largest missile barrage of the year, Western scrutiny of Belarus, U.S.-Iran ceasefire extension talks with Trump saying he's "in no rush," Pope Leo calling for AI to be "disarmed," Peter Murrell pleading guilty to embezzling £400,000 from the SNP, the Hong Kong Bun Festival tower race on Cheung Chau island, and the Axios piece on CEOs receiving celebrity-style media coverage — is supported by the corresponding cited sources.
One minor note: the article describes the Iran situation as a "ceasefire" being extended
INFO 05/26/2026 06:11:31 AM chat.py ln 556 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/26/2026 06:11:31 AM article_creation_service.py ln 775 Fact-check comment posted (8.24s)
INFO 05/26/2026 06:11:31 AM article_creation_service.py ln 775 Article creation completed successfully (total: 327.79s)
INFO 05/26/2026 06:11:31 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/26/2026 06:11:31 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/26/2026 06:11:31 AM create_articles.py ln 203 Script completed (328.84s total)
INFO 05/26/2026 07:05:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:05:57 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 07:05:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:05:57 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/26/2026 07:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 07:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 07:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 07:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/26/2026 07:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 07:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 07:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:06:00 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/26/2026 07:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 07:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 07:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 07:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 07:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 07:06:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:06:03 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 07:06:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:06:03 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/26/2026 07:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 07:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 07:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 07:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 07:06:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 07:06:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 07:06:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/26/2026 07:06:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/26/2026 07:06:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/26/2026 07:06:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/26/2026 08:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 08:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:06:57 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 08:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 08:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 08:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 08:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/26/2026 08:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 08:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:07:00 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/26/2026 08:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 08:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 08:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 08:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 08:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:07:03 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:07:03 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 08:07:03 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:07:03 AM create_articles.py ln 93 JWT token obtained (0.42s)
INFO 05/26/2026 08:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 08:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 08:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 08:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 08:07:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 08:07:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 08:07:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/26/2026 08:07:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/26/2026 08:07:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.05s)
INFO 05/26/2026 08:07:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/26/2026 09:06:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:06:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 09:06:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:06:57 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/26/2026 09:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 09:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 09:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 09:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 09:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 09:06:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:06:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 09:06:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:07:00 AM create_articles.py ln 93 JWT token obtained (0.78s)
INFO 05/26/2026 09:07:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 09:07:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:07:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 09:07:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 09:07:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 09:07:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 09:07:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:07:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 09:07:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:07:03 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 09:07:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 09:07:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:07:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 09:07:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 09:07:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 09:07:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 09:07:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 09:07:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/26/2026 09:07:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/26/2026 09:07:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/26/2026 09:07:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/26/2026 10:05:56 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:05:56 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 10:05:56 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:05:57 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/26/2026 10:05:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 10:05:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:05:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 10:05:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 10:05:57 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 10:05:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 10:05:59 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:05:59 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 10:05:59 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:06:00 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/26/2026 10:06:00 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 10:06:00 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:06:00 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 10:06:00 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 10:06:00 AM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 10:06:00 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 10:06:02 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:06:02 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 10:06:02 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:06:03 AM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 10:06:03 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 10:06:03 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:06:03 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 10:06:03 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 10:06:03 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 10:06:03 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 10:06:03 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 10:06:03 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/26/2026 10:06:03 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/26/2026 10:06:03 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/26/2026 10:06:03 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/26/2026 11:06:57 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:06:57 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 11:06:57 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:06:57 AM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/26/2026 11:06:57 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 11:06:57 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:06:57 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 11:06:57 AM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 11:06:57 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/26/2026 11:06:57 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:07:00 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:07:00 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 11:07:00 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:07:01 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/26/2026 11:07:01 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 11:07:01 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:07:01 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 11:07:01 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 11:07:01 AM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 11:07:01 AM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:07:04 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:07:04 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 11:07:04 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:07:04 AM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/26/2026 11:07:04 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 11:07:04 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:07:04 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 11:07:04 AM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 11:07:04 AM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 11:07:04 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/26/2026 11:07:04 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/26/2026 11:07:04 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/26/2026 11:07:04 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/26/2026 11:07:04 AM create_articles.py ln 116 Already-posted-today filter applied (0.04s)
INFO 05/26/2026 11:07:04 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/26/2026 12:06:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:06:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 12:06:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:06:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 12:06:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 12:06:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:06:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 12:06:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 12:06:57 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 12:06:57 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:06:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:06:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 12:06:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:07:00 PM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/26/2026 12:07:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 12:07:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:07:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 12:07:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 12:07:00 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 12:07:00 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:07:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 12:07:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 12:07:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 12:07:03 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 12:07:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 12:07:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 12:07:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 12:07:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 12:07:03 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 12:07:03 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 12:18:31 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 12:52:13 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 01:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 01:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:05:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 01:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 01:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 01:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 01:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.10s)
INFO 05/26/2026 01:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 01:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:06:00 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/26/2026 01:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 01:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 01:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 01:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.29s)
INFO 05/26/2026 01:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 01:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 01:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 01:06:03 PM create_articles.py ln 93 JWT token obtained (0.32s)
INFO 05/26/2026 01:06:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 01:06:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 01:06:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 01:06:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 01:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.09s)
INFO 05/26/2026 01:06:03 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 01:59:33 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 02:05:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:05:57 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 02:05:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:05:57 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 02:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 02:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 02:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 02:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/26/2026 02:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 02:06:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:06:00 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 02:06:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:06:00 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 02:06:00 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 02:06:00 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:06:00 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 02:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 02:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.27s)
INFO 05/26/2026 02:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 02:06:03 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 02:06:03 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 02:06:03 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 02:06:03 PM create_articles.py ln 93 JWT token obtained (0.62s)
INFO 05/26/2026 02:06:03 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 02:06:03 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 02:06:03 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 02:06:04 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 02:06:04 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 02:06:04 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:06:57 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:06:57 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 03:06:57 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:06:58 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 03:06:58 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 03:06:58 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:06:58 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 03:06:58 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 03:06:58 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/26/2026 03:06:58 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:07:00 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:07:00 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 03:07:00 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:07:01 PM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/26/2026 03:07:01 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 03:07:01 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:07:01 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 03:07:01 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 03:07:01 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 03:07:01 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 03:07:04 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 03:07:04 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 03:07:04 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 03:07:04 PM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/26/2026 03:07:04 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 03:07:04 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 03:07:04 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 03:07:04 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 03:07:04 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 03:07:04 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:05:56 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:05:56 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 04:05:56 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:05:57 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 04:05:57 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 04:05:57 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:05:57 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 04:05:57 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 04:05:57 PM create_articles.py ln 100 Characters fetched and filtered (0.12s)
INFO 05/26/2026 04:05:57 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:05:59 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:05:59 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 04:05:59 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:05:59 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 04:05:59 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 04:05:59 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:05:59 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 04:06:00 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 04:06:00 PM create_articles.py ln 100 Characters fetched and filtered (0.28s)
INFO 05/26/2026 04:06:00 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:06:02 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 04:06:02 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 04:06:02 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 04:06:02 PM create_articles.py ln 93 JWT token obtained (0.33s)
INFO 05/26/2026 04:06:02 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 04:06:02 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:06:02 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 04:06:03 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 04:06:03 PM create_articles.py ln 100 Characters fetched and filtered (0.08s)
INFO 05/26/2026 04:06:03 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 04:08:15 PM root.py ln 35 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/26/2026 04:08:16 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/26/2026 04:08:16 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/26/2026 04:09:31 PM drupal.py ln 237 site is cb_host='chat-sandbox.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://sandbox.turmansolutions.ai' wp_dir='sandbox' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='sandbox' activity_level=0.0 drupal_uid='5d7ec0f6-4d57-4c69-84f3-19057c09ef45' drupal_target_id=5
INFO 05/26/2026 04:09:31 PM drupal.py ln 183 Fetched 4 characters for target_id 5
INFO 05/26/2026 04:09:31 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 04:09:31 PM drupal.py ln 515 Fetched 0 widgets for target_id 5
INFO 05/26/2026 04:09:31 PM drupal.py ln 515 Fetched 15 widgets for target_id 4
INFO 05/26/2026 04:12:35 PM main.py ln 43 Both OpenAI and Anthropic API keys loaded successfully
INFO 05/26/2026 05:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 05:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:06:32 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/26/2026 05:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 05:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 05:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 05:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.42s)
INFO 05/26/2026 05:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 05:06:35 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:06:35 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 05:06:35 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:06:35 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/26/2026 05:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 05:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 05:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 05:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.15s)
INFO 05/26/2026 05:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 05:06:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 05:06:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 05:06:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 05:06:38 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 05:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 05:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 05:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 05:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 05:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/26/2026 05:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:05:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:05:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 06:05:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:05:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 06:05:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 06:05:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:05:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 06:05:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 06:05:32 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/26/2026 06:05:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:05:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:05:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 06:05:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:05:35 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/26/2026 06:05:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 06:05:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:05:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 06:05:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 06:05:35 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 06:05:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 06:05:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 06:05:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 06:05:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 06:05:38 PM create_articles.py ln 93 JWT token obtained (0.55s)
INFO 05/26/2026 06:05:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 06:05:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 06:05:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 06:05:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 06:05:38 PM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/26/2026 06:05:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 07:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 07:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:06:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 07:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 07:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 07:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 07:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.22s)
INFO 05/26/2026 07:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 07:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 07:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:06:35 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/26/2026 07:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 07:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 07:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 07:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/26/2026 07:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 07:06:38 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 07:06:38 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 07:06:38 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 07:06:38 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 07:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 07:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 07:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 07:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 07:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/26/2026 07:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 08:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:06:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 08:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 08:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 08:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 08:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/26/2026 08:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 08:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:06:35 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/26/2026 08:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 08:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 08:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 08:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 08:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 08:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 08:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 08:06:38 PM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/26/2026 08:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 08:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 08:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 08:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 08:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/26/2026 08:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 08:24:38 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 08:25:00 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 09:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 09:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:06:32 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/26/2026 09:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 09:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 09:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 09:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/26/2026 09:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 09:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 09:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:06:35 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/26/2026 09:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 09:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 09:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 09:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 09:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 09:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 09:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 09:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 09:06:38 PM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/26/2026 09:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 09:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 09:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 09:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 09:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/26/2026 09:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 10:07:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:07:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 10:07:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:07:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 10:07:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 10:07:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:07:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 10:07:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 10:07:32 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/26/2026 10:07:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 10:07:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:07:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 10:07:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:07:35 PM create_articles.py ln 93 JWT token obtained (0.44s)
INFO 05/26/2026 10:07:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 10:07:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:07:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 10:07:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 10:07:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 10:07:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 10:07:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 10:07:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 10:07:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 10:07:38 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/26/2026 10:07:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 10:07:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 10:07:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 10:07:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 10:07:38 PM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/26/2026 10:07:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/26/2026 11:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:06:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/26/2026 11:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/26/2026 11:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/26/2026 11:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/26/2026 11:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/26/2026 11:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/26/2026 11:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:06:35 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/26/2026 11:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/26/2026 11:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/26/2026 11:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 11:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/26/2026 11:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/26/2026 11:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/26/2026 11:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/26/2026 11:06:38 PM create_articles.py ln 93 JWT token obtained (0.79s)
INFO 05/26/2026 11:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/26/2026 11:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/26/2026 11:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/26/2026 11:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/26/2026 11:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.36s)
INFO 05/26/2026 11:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/26/2026 11:32:57 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/26/2026 11:35:47 PM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/27/2026 12:06:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 12:06:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 12:06:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 12:06:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 12:06:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 12:06:32 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 12:06:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 12:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 12:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:35 AM create_articles.py ln 93 JWT token obtained (0.43s)
INFO 05/27/2026 12:06:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 12:06:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 12:06:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 12:06:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 12:06:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 12:06:38 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:38 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 12:06:38 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:38 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/27/2026 12:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 12:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 12:06:39 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 12:06:39 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 12:06:39 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 01:06:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:32 AM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/27/2026 01:06:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 01:06:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 01:06:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 01:06:32 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/27/2026 01:06:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 01:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:35 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/27/2026 01:06:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 01:06:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 01:06:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 01:06:35 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/27/2026 01:06:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 01:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:38 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/27/2026 01:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 01:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 01:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 01:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/27/2026 01:06:38 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:05:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:05:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 02:05:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:05:33 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 02:05:33 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 02:05:33 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:05:33 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 02:05:33 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 02:05:33 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/27/2026 02:05:33 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:05:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:05:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 02:05:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:05:35 AM create_articles.py ln 93 JWT token obtained (0.35s)
INFO 05/27/2026 02:05:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 02:05:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:05:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 02:05:36 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 02:05:36 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 02:05:36 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:05:38 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:05:38 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 02:05:38 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:05:38 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/27/2026 02:05:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 02:05:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:05:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 02:05:39 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 02:05:39 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/27/2026 02:05:39 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:08:37 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/27/2026 03:07:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 03:07:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 03:07:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 03:07:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 03:07:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 03:07:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 03:07:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 03:07:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 03:07:32 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/27/2026 03:07:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 03:07:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 03:07:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 03:07:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 03:07:35 AM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/27/2026 03:07:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 03:07:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 03:07:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 03:07:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 03:07:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 03:07:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 03:07:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 03:07:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 03:07:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 03:07:38 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/27/2026 03:07:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 03:07:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 03:07:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 03:07:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 03:07:38 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 03:07:38 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 04:06:33 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 04:06:33 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 04:06:33 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 04:06:33 AM create_articles.py ln 93 JWT token obtained (0.74s)
INFO 05/27/2026 04:06:33 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 04:06:33 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 04:06:33 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 04:06:34 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 04:06:34 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/27/2026 04:06:34 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 04:06:36 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 04:06:36 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 04:06:36 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 04:06:37 AM create_articles.py ln 93 JWT token obtained (0.50s)
INFO 05/27/2026 04:06:37 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 04:06:37 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 04:06:37 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 04:06:37 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 04:06:37 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/27/2026 04:06:37 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 04:06:41 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 04:06:41 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 04:06:41 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 04:06:42 AM create_articles.py ln 93 JWT token obtained (1.05s)
INFO 05/27/2026 04:06:42 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 04:06:42 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 04:06:42 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 04:06:42 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 04:06:42 AM create_articles.py ln 100 Characters fetched and filtered (0.42s)
INFO 05/27/2026 04:06:42 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 05:05:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 05:05:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 05:05:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 05:05:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 05:05:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 05:05:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 05:05:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 05:05:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 05:05:32 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 05:05:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 05:05:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 05:05:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 05:05:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 05:05:35 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/27/2026 05:05:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 05:05:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 05:05:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 05:05:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 05:05:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 05:05:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 05:05:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 05:05:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 05:05:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 05:05:38 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/27/2026 05:05:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 05:05:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 05:05:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 05:05:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 05:05:38 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 05:05:38 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 06:05:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 06:05:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 06:05:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 06:05:32 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/27/2026 06:05:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 06:05:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 06:05:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 06:05:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 06:05:32 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 06:05:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 06:05:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 06:05:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 06:05:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 06:05:35 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/27/2026 06:05:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 06:05:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 06:05:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 06:05:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 06:05:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 06:05:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 06:05:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 06:05:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 06:05:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 06:05:38 AM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/27/2026 06:05:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 06:05:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 06:05:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 06:05:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 06:05:38 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/27/2026 06:05:38 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 06:05:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 06:05:38 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/27/2026 06:05:38 AM cron_common.py ln 398 Name: Hawk, perHour: 0.0 IS POSTING!
INFO 05/27/2026 06:05:38 AM cron_common.py ln 401 Description: You are a journalist and you mainly cover current headline news and events. You will be provided with some research material which you need to organize and summarize into an article about today's most important headline news and events.
INFO 05/27/2026 06:05:39 AM cron_common.py ln 414 Character articles: 100
INFO 05/27/2026 06:05:39 AM create_articles.py ln 126 Character articles loaded (0.81s)
INFO 05/27/2026 06:05:39 AM create_articles.py ln 128 Setup complete (1.85s total)
INFO 05/27/2026 06:05:39 AM create_articles.py ln 140 Creating article for character: Hawk
INFO 05/27/2026 06:05:39 AM article_creation_service.py ln 775 Article log file created: /tsai/repo/api/logs/articles/20260527_060539_news_Hawk.log
INFO 05/27/2026 06:05:39 AM article_creation_service.py ln 775 Article creation started for character: Hawk
INFO 05/27/2026 06:05:40 AM article_creation_service.py ln 775 WordPress authentication successful (0.54s)
INFO 05/27/2026 06:05:40 AM article_creation_service.py ln 775 Fetched WP users (0.24s)
INFO 05/27/2026 06:05:41 AM article_creation_service.py ln 775 Loaded 100 articles for character (0.81s)
INFO 05/27/2026 06:05:41 AM article_creation_service.py ln 775 Got 27 categories and 63 tags (0.50s)
INFO 05/27/2026 06:05:41 AM article_creation_service.py ln 775 Searching for 'top world and US headline news today' (topic: news)
INFO 05/27/2026 06:05:41 AM chat.py ln 131 Tavily search will ONLY include domains: ['reuters.com', 'apnews.com', 'bbc.com', 'bbc.co.uk', 'wsj.com', 'nytimes.com', 'washingtonpost.com', 'bostonglobe.com', 'theguardian.com', 'ft.com', 'bloomberg.com', 'cnn.com', 'npr.org', 'axios.com', 'politico.com', 'aljazeera.com']
INFO 05/27/2026 06:05:41 AM chat.py ln 135 Tavily search will exclude domains: ['cbsnews.com', '*.cbsnews.com']
INFO 05/27/2026 06:05:41 AM chat.py ln 139 Tavily search will filter to past day
INFO 05/27/2026 06:05:47 AM chat.py ln 154 Tavily search for 'top world and US headline news today' completed
INFO 05/27/2026 06:05:47 AM chat.py ln 159 Found 8 results
INFO 05/27/2026 06:05:47 AM article_creation_service.py ln 775 Found 8 search results (5.49s)
INFO 05/27/2026 06:05:47 AM article_creation_service.py ln 775 Search results written to: /tsai/repo/api/logs/articles/20260527_060539_news_Hawk_search.md
INFO 05/27/2026 06:05:47 AM article_creation_service.py ln 775 System message prepared (0.00s)
INFO 05/27/2026 06:07:47 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/27/2026 06:07:47 AM article_creation_service.py ln 775 Generated article - Doha diplomacy collides with new U.S. strikes as Trump touts an Iran deal; Pope weighs A.I., White House shifts green‑card rules (120.15s)
INFO 05/27/2026 06:07:47 AM article_creation_service.py ln 775 Created WP post 1305 (0.27s)
INFO 05/27/2026 06:07:57 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/27/2026 06:07:57 AM wp.py ln 955 Prompt: **Featured image prompt:**
Create a dramatic editorial news illustration showing diplomacy and conflict unfolding simultaneously in the Middle East. Foreground: a polished negotiation table with microphones, folders, and two empty chairs facing each other, symbolizing U.S.–Iran talks in Doha. Background: the Doha skyline at dusk with a subtle map-like outline of the Persian Gulf, faint missile trails, a drone silhouette, and distant flashes over the coastline to suggest military strikes without showing casualties. Add subtle secondary visual motifs: the White House and Vatican dome as ghosted silhouettes in the corners, with faint circuit-board patterns hinting at A.I. ethics and policy debates. Mood should be tense, high-stakes, and geopolitical. Style: cinematic digital painting, realistic news-magazine cover aesthetic, deep blues and desert golds, sharp contrast, no text, no logos, no graphic violence.
INFO 05/27/2026 06:07:57 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=0
INFO 05/27/2026 06:09:14 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/27/2026 06:09:14 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/27/2026 06:09:14 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-27.jpeg
INFO 05/27/2026 06:09:14 AM article_creation_service.py ln 775 Featured image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-27.jpeg
INFO 05/27/2026 06:09:14 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5ODYxOTQwLCJuYmYiOjE3Nzk4NjE5NDAsImV4cCI6MTc4MDQ2Njc0MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.rkDea2Q5Ewb7XxXw8ocIjclxrXZm98m-qA2jMqVaaQE
INFO 05/27/2026 06:09:15 AM image.py ln 220 filename is 2026-05-27.webp
INFO 05/27/2026 06:09:15 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-27.webp'>}
INFO 05/27/2026 06:09:16 AM article_creation_service.py ln 775 Featured image posted (88.67s)
INFO 05/27/2026 06:09:27 AM _client.py ln 1025 HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO 05/27/2026 06:09:27 AM wp.py ln 990 Secondary Image Prompt: **Image generation prompt:**
Create a cinematic editorial illustration showing diplomacy and conflict unfolding simultaneously in the Persian Gulf. In the foreground, a polished negotiating table sits under warm conference lights, with anonymous diplomats’ hands reaching toward unsigned documents, maps, and a small Qatar/Doha skyline silhouette reflected in the tabletop. Beyond the glass wall of the conference room, the night sky over the Gulf glows with distant orange flashes from military strikes, faint smoke trails, a surveillance drone silhouette, and small fast boats cutting across dark water.
Blend the interior and exterior worlds so that diplomacy and warfare feel inseparable: calm blue and gold tones inside the room, contrasted with tense red-orange firelight outside. Add subtle secondary visual motifs in the margins: a green-card document partially tucked under a briefing folder, and a faint holographic circuit pattern or AI neural network overlay near a Vatican-like dome silhouette, suggesting global ethical and domestic policy currents without distracting from the main U.S.–Iran/Doha theme.
Style: sophisticated news-magazine cover art, semi-realistic digital painting, dramatic lighting, high contrast, layered symbolism, atmospheric haze, reflective surfaces, geopolitical tension, no recognizable real politicians, no readable text, no flags as dominant elements, 16:9 aspect ratio.
INFO 05/27/2026 06:09:27 AM image_v2.py ln 259 [gpt-image-2] article image: driver=gpt-5 size=1536x1024 quality=medium input_images=1
INFO 05/27/2026 06:10:57 AM _client.py ln 1740 HTTP Request: POST https://api.openai.com/v1/responses "HTTP/1.1 200 OK"
INFO 05/27/2026 06:10:57 AM image.py ln 122 saving b64 image to /tsai/repo/drupal/web/sites/default/files/cbt/news/create prefix format jpeg
INFO 05/27/2026 06:10:57 AM image.py ln 142 Image saved successfully as /tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-27-1.jpeg
INFO 05/27/2026 06:10:57 AM article_creation_service.py ln 775 Secondary image created: https://cms.turmansolutions.ai/sites/default/files/cbt/news/create/2026-05-27-1.jpeg
INFO 05/27/2026 06:10:57 AM image.py ln 207 token is eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL25ld3MudHVybWFuc29sdXRpb25zLmFpIiwiaWF0IjoxNzc5ODYxOTQwLCJuYmYiOjE3Nzk4NjE5NDAsImV4cCI6MTc4MDQ2Njc0MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.rkDea2Q5Ewb7XxXw8ocIjclxrXZm98m-qA2jMqVaaQE
INFO 05/27/2026 06:10:58 AM image.py ln 220 filename is 2026-05-27-1.webp
INFO 05/27/2026 06:10:58 AM image.py ln 231 file: {'file': <_io.BufferedReader name='/tsai/repo/drupal/web/sites/default/files/cbt/news/create/2026-05-27-1.webp'>}
INFO 05/27/2026 06:10:58 AM article_creation_service.py ln 775 Secondary image uploaded (102.30s)
INFO 05/27/2026 06:10:58 AM wp.py ln 1082 Inserted image after second paragraph
INFO 05/27/2026 06:10:58 AM wp.py ln 1111 Post content updated successfully for post 1305
INFO 05/27/2026 06:10:58 AM article_creation_service.py ln 775 Post content updated with secondary image
INFO 05/27/2026 06:11:02 AM _client.py ln 1025 HTTP Request: POST https://api.anthropic.com/v1/messages "HTTP/1.1 200 OK"
INFO 05/27/2026 06:11:07 AM chat.py ln 351 AI comment: The article accurately represents the key claims from its cited sources. The core details — U.S. strikes targeting missile sites and boats on Iran's Gulf coast, Central Command's "self-defense" justification, Iran downing a U.S. drone, Iranian officials traveling to Doha for talks, Trump's "largely negotiated" deal claim with differing U.S./Iranian characterizations of terms, and the White House green-card and Pope A.I. stories — all align directly with Sources 3, 4, 6, 7, and 8.
No meaningful factual discrepancies are present. The article's framing that the strikes occurred "hours after Iran
INFO 05/27/2026 06:11:07 AM chat.py ln 556 Fact-check generated using Claude claude-sonnet-4-6
INFO 05/27/2026 06:11:07 AM article_creation_service.py ln 775 Fact-check comment posted (8.41s)
INFO 05/27/2026 06:11:07 AM article_creation_service.py ln 775 Article creation completed successfully (total: 327.65s)
INFO 05/27/2026 06:11:07 AM create_articles.py ln 184 Article created for 'Hawk' using model: OpenAI gpt-5
INFO 05/27/2026 06:11:07 AM create_articles.py ln 200 Successfully generated articles for 1 character(s)
INFO 05/27/2026 06:11:07 AM create_articles.py ln 203 Script completed (329.51s total)
INFO 05/27/2026 07:07:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 07:07:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 07:07:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 07:07:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 07:07:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 07:07:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 07:07:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 07:07:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 07:07:32 AM create_articles.py ln 100 Characters fetched and filtered (0.18s)
INFO 05/27/2026 07:07:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 07:07:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 07:07:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 07:07:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 07:07:35 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/27/2026 07:07:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 07:07:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 07:07:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 07:07:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 07:07:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 07:07:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 07:07:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 07:07:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 07:07:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 07:07:38 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/27/2026 07:07:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 07:07:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 07:07:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 07:07:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 07:07:38 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 07:07:38 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 07:07:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 07:07:38 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/27/2026 07:07:38 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/27/2026 07:07:38 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/27/2026 07:07:38 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/27/2026 08:06:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 08:06:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 08:06:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 08:06:32 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/27/2026 08:06:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 08:06:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 08:06:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 08:06:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 08:06:32 AM create_articles.py ln 100 Characters fetched and filtered (0.17s)
INFO 05/27/2026 08:06:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 08:06:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 08:06:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 08:06:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 08:06:35 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/27/2026 08:06:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 08:06:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 08:06:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 08:06:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 08:06:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 08:06:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 08:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 08:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 08:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 08:06:38 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/27/2026 08:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 08:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 08:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 08:06:39 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 08:06:39 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 08:06:39 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 08:06:39 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 08:06:39 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/27/2026 08:06:39 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/27/2026 08:06:39 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/27/2026 08:06:39 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/27/2026 09:07:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 09:07:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 09:07:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 09:07:32 AM create_articles.py ln 93 JWT token obtained (0.39s)
INFO 05/27/2026 09:07:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 09:07:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 09:07:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 09:07:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 09:07:32 AM create_articles.py ln 100 Characters fetched and filtered (0.20s)
INFO 05/27/2026 09:07:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 09:07:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 09:07:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 09:07:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 09:07:35 AM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/27/2026 09:07:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 09:07:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 09:07:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 09:07:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 09:07:35 AM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/27/2026 09:07:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 09:07:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 09:07:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 09:07:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 09:07:38 AM create_articles.py ln 93 JWT token obtained (0.76s)
INFO 05/27/2026 09:07:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 09:07:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 09:07:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 09:07:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 09:07:38 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/27/2026 09:07:38 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 09:07:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 09:07:39 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/27/2026 09:07:39 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/27/2026 09:07:39 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/27/2026 09:07:39 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/27/2026 10:06:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 10:06:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 10:06:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 10:06:32 AM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 10:06:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 10:06:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 10:06:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 10:06:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 10:06:32 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 10:06:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 10:06:34 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 10:06:34 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 10:06:34 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 10:06:35 AM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/27/2026 10:06:35 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 10:06:35 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 10:06:35 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 10:06:35 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 10:06:35 AM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 10:06:35 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 10:06:37 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 10:06:37 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 10:06:37 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 10:06:38 AM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/27/2026 10:06:38 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 10:06:38 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 10:06:38 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 10:06:38 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 10:06:38 AM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 10:06:38 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 10:06:38 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 10:06:38 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/27/2026 10:06:38 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/27/2026 10:06:38 AM create_articles.py ln 116 Already-posted-today filter applied (0.23s)
INFO 05/27/2026 10:06:38 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/27/2026 11:06:32 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 11:06:32 AM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 11:06:32 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 11:06:32 AM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/27/2026 11:06:32 AM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 11:06:32 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 11:06:32 AM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 11:06:32 AM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 11:06:32 AM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 11:06:32 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 11:06:35 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 11:06:35 AM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 11:06:35 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 11:06:36 AM create_articles.py ln 93 JWT token obtained (0.70s)
INFO 05/27/2026 11:06:36 AM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 11:06:36 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 11:06:36 AM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 11:06:36 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 11:06:36 AM create_articles.py ln 100 Characters fetched and filtered (0.16s)
INFO 05/27/2026 11:06:36 AM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 11:06:38 AM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 11:06:38 AM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 11:06:38 AM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 11:06:39 AM create_articles.py ln 93 JWT token obtained (0.75s)
INFO 05/27/2026 11:06:39 AM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 11:06:39 AM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 11:06:39 AM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 11:06:39 AM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 11:06:39 AM create_articles.py ln 100 Characters fetched and filtered (0.30s)
INFO 05/27/2026 11:06:39 AM drupal.py ln 323 Hawk selected via calendar schedule
INFO 05/27/2026 11:06:39 AM create_articles.py ln 108 Characters selected (0.00s)
INFO 05/27/2026 11:06:39 AM cron_common.py ln 439 Skipping Hawk: already posted an article today
INFO 05/27/2026 11:06:39 AM cron_common.py ln 446 Filtered out 1 character(s) that already posted today
INFO 05/27/2026 11:06:39 AM create_articles.py ln 116 Already-posted-today filter applied (0.22s)
INFO 05/27/2026 11:06:39 AM create_articles.py ln 119 No characters remaining after today-filter.
INFO 05/27/2026 11:33:43 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/27/2026 11:46:52 AM root.py ln 35 site is cb_host='turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://turmansolutions.ai' wp_dir='tsai2' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='tsai' activity_level=0.0 drupal_uid='f9cebe8a-e013-4ec4-b1be-d9096f78d001' drupal_target_id=3
INFO 05/27/2026 12:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 12:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:32 PM create_articles.py ln 93 JWT token obtained (0.36s)
INFO 05/27/2026 12:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 12:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 12:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 12:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 12:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 12:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 12:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:35 PM create_articles.py ln 93 JWT token obtained (0.40s)
INFO 05/27/2026 12:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 12:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 12:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 12:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 12:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 12:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 12:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 12:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 12:06:38 PM create_articles.py ln 93 JWT token obtained (0.51s)
INFO 05/27/2026 12:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 12:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 12:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 12:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 12:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 12:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 01:06:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:32 PM create_articles.py ln 93 JWT token obtained (0.38s)
INFO 05/27/2026 01:06:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 01:06:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 01:06:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 01:06:32 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 01:06:32 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 01:06:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:35 PM create_articles.py ln 93 JWT token obtained (0.41s)
INFO 05/27/2026 01:06:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 01:06:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 01:06:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 01:06:35 PM create_articles.py ln 100 Characters fetched and filtered (0.14s)
INFO 05/27/2026 01:06:35 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 01:06:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 01:06:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 01:06:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 01:06:38 PM create_articles.py ln 93 JWT token obtained (0.52s)
INFO 05/27/2026 01:06:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 01:06:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 01:06:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 01:06:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 01:06:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 01:06:38 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:07:32 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:07:32 PM cron_common.py ln 244 site config is cb_host='chat.johnturman.net' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://johnturman.net' wp_dir='johnturman.net' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='jpt' activity_level=1.0 drupal_uid='6b818db6-4ce6-47c1-9afe-296d628e212a' drupal_target_id=2
INFO 05/27/2026 02:07:32 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:07:32 PM create_articles.py ln 93 JWT token obtained (0.37s)
INFO 05/27/2026 02:07:32 PM drupal.py ln 183 Fetched 14 characters for target_id 2
INFO 05/27/2026 02:07:32 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:07:32 PM cron_common.py ln 300 fetched characters for target_id 2 (incl. system-wide): 17
INFO 05/27/2026 02:07:32 PM cron_common.py ln 313 filtered characters: 17
INFO 05/27/2026 02:07:32 PM create_articles.py ln 100 Characters fetched and filtered (0.19s)
INFO 05/27/2026 02:07:32 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:07:34 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:07:34 PM cron_common.py ln 244 site config is cb_host='chat-dev.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://dev.turmansolutions.ai' wp_dir='dev' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='dev' activity_level=0.0 drupal_uid='995e7daa-c060-4b37-ac8b-4ed1ac874b4b' drupal_target_id=7
INFO 05/27/2026 02:07:34 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:07:35 PM create_articles.py ln 93 JWT token obtained (0.34s)
INFO 05/27/2026 02:07:35 PM drupal.py ln 183 Fetched 11 characters for target_id 7
INFO 05/27/2026 02:07:35 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:07:35 PM cron_common.py ln 300 fetched characters for target_id 7 (incl. system-wide): 14
INFO 05/27/2026 02:07:35 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 02:07:35 PM create_articles.py ln 100 Characters fetched and filtered (0.13s)
INFO 05/27/2026 02:07:35 PM cron_common.py ln 373 No characters selected.
INFO 05/27/2026 02:07:37 PM create_articles.py ln 83 Services initialized (0.00s)
INFO 05/27/2026 02:07:37 PM cron_common.py ln 244 site config is cb_host='chat-news.turmansolutions.ai' api_host='https://api.turmansolutions.ai/api/v1' wp_host='https://news.turmansolutions.ai' wp_dir='news' drupal_host='https://cms.turmansolutions.ai' drupal_api='/jjknkk/jptb69dhj027ooae/jsonapi' slug='news' activity_level=0.0 drupal_uid='33a2da4c-439a-4ddd-8e21-47d6c7a947ae' drupal_target_id=8
INFO 05/27/2026 02:07:37 PM create_articles.py ln 88 Site config loaded (0.00s)
INFO 05/27/2026 02:07:38 PM create_articles.py ln 93 JWT token obtained (0.54s)
INFO 05/27/2026 02:07:38 PM drupal.py ln 183 Fetched 11 characters for target_id 8
INFO 05/27/2026 02:07:38 PM drupal.py ln 183 Fetched 3 characters for target_id 4
INFO 05/27/2026 02:07:38 PM cron_common.py ln 300 fetched characters for target_id 8 (incl. system-wide): 14
INFO 05/27/2026 02:07:38 PM cron_common.py ln 313 filtered characters: 14
INFO 05/27/2026 02:07:38 PM create_articles.py ln 100 Characters fetched and filtered (0.31s)
INFO 05/27/2026 02:07:38 PM cron_common.py ln 373 No characters selected.